[456506] Regenerate after Xtext breaking change reversion
diff --git a/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateBaseEditor.mwe2 b/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateBaseEditor.mwe2
index ef74f11..d20274e 100644
--- a/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateBaseEditor.mwe2
+++ b/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateBaseEditor.mwe2
@@ -153,7 +153,4 @@
 	component = ConvertToUnixLineEndings {
 		directory = "${baseRuntimeProject}.ui/src-gen"
 	}
-	component = BackportToXtext_2_7 {
-		directory = "${baseRuntimeProject}.ui/src-gen"
-	}
 }
diff --git a/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateCompleteOCLEditor.mwe2 b/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateCompleteOCLEditor.mwe2
index c97fc14..68584ec 100644
--- a/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateCompleteOCLEditor.mwe2
+++ b/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateCompleteOCLEditor.mwe2
@@ -151,7 +151,4 @@
 	component = ConvertToUnixLineEndings {
 		directory = "${completeOCLruntimeProject}.ui/src-gen"
 	}
-	component = BackportToXtext_2_7 {
-		directory = "${completeOCLruntimeProject}.ui/src-gen"
-	}
 }
diff --git a/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateEssentialOCLEditor.mwe2 b/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateEssentialOCLEditor.mwe2
index 3063816..168080a 100644
--- a/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateEssentialOCLEditor.mwe2
+++ b/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateEssentialOCLEditor.mwe2
@@ -154,7 +154,4 @@
 	component = ConvertToUnixLineEndings {
 		directory = "${essentialOCLruntimeProject}.ui/src-gen"
 	}
-	component = BackportToXtext_2_7 {
-		directory = "${essentialOCLruntimeProject}.ui/src-gen"
-	}
 }
diff --git a/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateMarkupEditor.mwe2 b/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateMarkupEditor.mwe2
index fefb99c..000fba5 100644
--- a/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateMarkupEditor.mwe2
+++ b/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateMarkupEditor.mwe2
@@ -116,7 +116,4 @@
 	component = ConvertToUnixLineEndings {
 		directory = "${markupruntimeProject}.ui/src-gen"
 	}
-	component = BackportToXtext_2_7 {
-		directory = "${markupruntimeProject}.ui/src-gen"
-	}
 }
diff --git a/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateOCLinEcoreEditor.mwe2 b/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateOCLinEcoreEditor.mwe2
index 41f5c1b..1104236 100644
--- a/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateOCLinEcoreEditor.mwe2
+++ b/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateOCLinEcoreEditor.mwe2
@@ -151,7 +151,4 @@
 	component = ConvertToUnixLineEndings {
 		directory = "${oclInEcoreRuntimeProject}.ui/src-gen"
 	}
-	component = BackportToXtext_2_7 {
-		directory = "${oclInEcoreRuntimeProject}.ui/src-gen"
-	}
 }
diff --git a/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateOCLstdlibEditor.mwe2 b/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateOCLstdlibEditor.mwe2
index 2d5c39f..6f719cc 100644
--- a/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateOCLstdlibEditor.mwe2
+++ b/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/GenerateOCLstdlibEditor.mwe2
@@ -159,7 +159,4 @@
 	component = ConvertToUnixLineEndings {
 		directory = "${oclstdlibRuntimeProject}.ui/src-gen"
 	}
-	component = BackportToXtext_2_7 {
-		directory = "${oclstdlibRuntimeProject}.ui/src-gen"
-	}
 }
diff --git a/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/utilities/BackportToXtext_2_7.java b/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/utilities/BackportToXtext_2_7.java
index b02d822..17b3c4b 100644
--- a/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/utilities/BackportToXtext_2_7.java
+++ b/examples/org.eclipse.ocl.examples.build/src/org/eclipse/ocl/examples/build/utilities/BackportToXtext_2_7.java
@@ -39,7 +39,9 @@
 /**
  * Convert the files in a directory tree to use Xtext 2.7 compatible references.
  * Text file extensions must be included from conversion.
+ * @Deprecated The problematic Xtext changes were reverted. See Bug 460552 comment 14.
  */
+@Deprecated
 public class BackportToXtext_2_7 extends AbstractWorkflowComponent2 {
 
 	private static final String COMPONENT_NAME = "Backport to Xtext 2.7";
diff --git a/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/AbstractBaseUiModule.java b/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/AbstractBaseUiModule.java
index 739421e..91337e6 100644
--- a/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/AbstractBaseUiModule.java
+++ b/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/AbstractBaseUiModule.java
@@ -4,14 +4,13 @@
  */
 package org.eclipse.ocl.xtext.base.ui;
 
-import org.eclipse.xtext.ui.DefaultUiModule;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
  * Manual modifications go to {org.eclipse.ocl.xtext.base.ui.BaseUiModule}
  */
 @SuppressWarnings("all")
-public abstract class AbstractBaseUiModule extends DefaultUiModule {
+public abstract class AbstractBaseUiModule extends org.eclipse.xtext.ui.DefaultUiModule {
 	
 	public AbstractBaseUiModule(AbstractUIPlugin plugin) {
 		super(plugin);
diff --git a/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/AbstractBaseProposalProvider.java b/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/AbstractBaseProposalProvider.java
index 2d18061..3b56112 100644
--- a/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/AbstractBaseProposalProvider.java
+++ b/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/AbstractBaseProposalProvider.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.base.ui.contentassist;
 
 import org.eclipse.emf.ecore.EObject;
diff --git a/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/BaseParser.java b/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/BaseParser.java
index dfe6616..1402792 100644
--- a/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/BaseParser.java
+++ b/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/BaseParser.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.base.ui.contentassist.antlr;
 
 import java.util.Collection;
diff --git a/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/internal/InternalBase.g b/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/internal/InternalBase.g
index f7a844a..f96404f 100644
--- a/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/internal/InternalBase.g
+++ b/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/internal/InternalBase.g
@@ -1,2036 +1,2036 @@
-/*

-* generated by Xtext

-*/

-grammar InternalBase;

-

-options {

-	superClass=AbstractInternalContentAssistParser;

-	backtrack=true;

-	

-}

-

-@lexer::header {

-package org.eclipse.ocl.xtext.base.ui.contentassist.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.ui.editor.contentassist.antlr.internal.Lexer;

-}

-

-@parser::header {

-package org.eclipse.ocl.xtext.base.ui.contentassist.antlr.internal; 

-

-import java.io.InputStream;

-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.XtextTokenStream;

-import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;

-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;

-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;

-import org.eclipse.ocl.xtext.base.services.BaseGrammarAccess;

-

-}

-

-@parser::members {

- 

- 	private BaseGrammarAccess grammarAccess;

- 	

-    public void setGrammarAccess(BaseGrammarAccess grammarAccess) {

-    	this.grammarAccess = grammarAccess;

-    }

-    

-    @Override

-    protected Grammar getGrammar() {

-    	return grammarAccess.getGrammar();

-    }

-    

-    @Override

-    protected String getValueForTokenName(String tokenName) {

-    	return tokenName;

-    }

-

-}

-

-

-

-

-// Entry rule entryRuleMultiplicityBoundsCS

-entryRuleMultiplicityBoundsCS 

-:

-{ before(grammarAccess.getMultiplicityBoundsCSRule()); }

-	 ruleMultiplicityBoundsCS

-{ after(grammarAccess.getMultiplicityBoundsCSRule()); } 

-	 EOF 

-;

-

-// Rule MultiplicityBoundsCS

-ruleMultiplicityBoundsCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }

-(rule__MultiplicityBoundsCS__Group__0)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-// Entry rule entryRuleMultiplicityStringCS

-entryRuleMultiplicityStringCS 

-:

-{ before(grammarAccess.getMultiplicityStringCSRule()); }

-	 ruleMultiplicityStringCS

-{ after(grammarAccess.getMultiplicityStringCSRule()); } 

-	 EOF 

-;

-

-// Rule MultiplicityStringCS

-ruleMultiplicityStringCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }

-(rule__MultiplicityStringCS__StringBoundsAssignment)

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePathNameCS

-entryRulePathNameCS 

-:

-{ before(grammarAccess.getPathNameCSRule()); }

-	 rulePathNameCS

-{ after(grammarAccess.getPathNameCSRule()); } 

-	 EOF 

-;

-

-// Rule PathNameCS

-rulePathNameCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPathNameCSAccess().getGroup()); }

-(rule__PathNameCS__Group__0)

-{ after(grammarAccess.getPathNameCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleFirstPathElementCS

-entryRuleFirstPathElementCS 

-:

-{ before(grammarAccess.getFirstPathElementCSRule()); }

-	 ruleFirstPathElementCS

-{ after(grammarAccess.getFirstPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule FirstPathElementCS

-ruleFirstPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }

-(rule__FirstPathElementCS__ReferredElementAssignment)

-{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNextPathElementCS

-entryRuleNextPathElementCS 

-:

-{ before(grammarAccess.getNextPathElementCSRule()); }

-	 ruleNextPathElementCS

-{ after(grammarAccess.getNextPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule NextPathElementCS

-ruleNextPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }

-(rule__NextPathElementCS__ReferredElementAssignment)

-{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTemplateBindingCS

-entryRuleTemplateBindingCS 

-:

-{ before(grammarAccess.getTemplateBindingCSRule()); }

-	 ruleTemplateBindingCS

-{ after(grammarAccess.getTemplateBindingCSRule()); } 

-	 EOF 

-;

-

-// Rule TemplateBindingCS

-ruleTemplateBindingCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getGroup()); }

-(rule__TemplateBindingCS__Group__0)

-{ after(grammarAccess.getTemplateBindingCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTemplateParameterSubstitutionCS

-entryRuleTemplateParameterSubstitutionCS 

-:

-{ before(grammarAccess.getTemplateParameterSubstitutionCSRule()); }

-	 ruleTemplateParameterSubstitutionCS

-{ after(grammarAccess.getTemplateParameterSubstitutionCSRule()); } 

-	 EOF 

-;

-

-// Rule TemplateParameterSubstitutionCS

-ruleTemplateParameterSubstitutionCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }

-(rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment)

-{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-// Entry rule entryRuleTypeParameterCS

-entryRuleTypeParameterCS 

-:

-{ before(grammarAccess.getTypeParameterCSRule()); }

-	 ruleTypeParameterCS

-{ after(grammarAccess.getTypeParameterCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeParameterCS

-ruleTypeParameterCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup()); }

-(rule__TypeParameterCS__Group__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeRefCS

-entryRuleTypeRefCS 

-:

-{ before(grammarAccess.getTypeRefCSRule()); }

-	 ruleTypeRefCS

-{ after(grammarAccess.getTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeRefCS

-ruleTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeRefCSAccess().getAlternatives()); }

-(rule__TypeRefCS__Alternatives)

-{ after(grammarAccess.getTypeRefCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypedRefCS

-entryRuleTypedRefCS 

-:

-{ before(grammarAccess.getTypedRefCSRule()); }

-	 ruleTypedRefCS

-{ after(grammarAccess.getTypedRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypedRefCS

-ruleTypedRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall()); }

-	ruleTypedTypeRefCS

-{ after(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypedTypeRefCS

-entryRuleTypedTypeRefCS 

-:

-{ before(grammarAccess.getTypedTypeRefCSRule()); }

-	 ruleTypedTypeRefCS

-{ after(grammarAccess.getTypedTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypedTypeRefCS

-ruleTypedTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }

-(rule__TypedTypeRefCS__Group__0)

-{ after(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnreservedName

-entryRuleUnreservedName 

-:

-{ before(grammarAccess.getUnreservedNameRule()); }

-	 ruleUnreservedName

-{ after(grammarAccess.getUnreservedNameRule()); } 

-	 EOF 

-;

-

-// Rule UnreservedName

-ruleUnreservedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnreservedNameAccess().getUnrestrictedNameParserRuleCall()); }

-	ruleUnrestrictedName

-{ after(grammarAccess.getUnreservedNameAccess().getUnrestrictedNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnrestrictedName

-entryRuleUnrestrictedName 

-:

-{ before(grammarAccess.getUnrestrictedNameRule()); }

-	 ruleUnrestrictedName

-{ after(grammarAccess.getUnrestrictedNameRule()); } 

-	 EOF 

-;

-

-// Rule UnrestrictedName

-ruleUnrestrictedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnrestrictedNameAccess().getIdentifierParserRuleCall()); }

-	ruleIdentifier

-{ after(grammarAccess.getUnrestrictedNameAccess().getIdentifierParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleWildcardTypeRefCS

-entryRuleWildcardTypeRefCS 

-:

-{ before(grammarAccess.getWildcardTypeRefCSRule()); }

-	 ruleWildcardTypeRefCS

-{ after(grammarAccess.getWildcardTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule WildcardTypeRefCS

-ruleWildcardTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }

-(rule__WildcardTypeRefCS__Group__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleID

-entryRuleID 

-:

-{ before(grammarAccess.getIDRule()); }

-	 ruleID

-{ after(grammarAccess.getIDRule()); } 

-	 EOF 

-;

-

-// Rule ID

-ruleID

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIDAccess().getAlternatives()); }

-(rule__ID__Alternatives)

-{ after(grammarAccess.getIDAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleIdentifier

-entryRuleIdentifier 

-:

-{ before(grammarAccess.getIdentifierRule()); }

-	 ruleIdentifier

-{ after(grammarAccess.getIdentifierRule()); } 

-	 EOF 

-;

-

-// Rule Identifier

-ruleIdentifier

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }

-	ruleID

-{ after(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLOWER

-entryRuleLOWER 

-:

-{ before(grammarAccess.getLOWERRule()); }

-	 ruleLOWER

-{ after(grammarAccess.getLOWERRule()); } 

-	 EOF 

-;

-

-// Rule LOWER

-ruleLOWER

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }

-	RULE_INT

-{ after(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-// Entry rule entryRuleUPPER

-entryRuleUPPER 

-:

-{ before(grammarAccess.getUPPERRule()); }

-	 ruleUPPER

-{ after(grammarAccess.getUPPERRule()); } 

-	 EOF 

-;

-

-// Rule UPPER

-ruleUPPER

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUPPERAccess().getAlternatives()); }

-(rule__UPPER__Alternatives)

-{ after(grammarAccess.getUPPERAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-rule__MultiplicityStringCS__StringBoundsAlternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }

-

-	'*' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }

-

-	'+' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }

-

-	'?' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Alternatives_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }

-(rule__TypeParameterCS__Group_1_0__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }

-(rule__TypeParameterCS__Group_1_1__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeRefCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }

-	ruleTypedRefCS

-{ after(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }

-	ruleWildcardTypeRefCS

-{ after(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }

-(rule__WildcardTypeRefCS__Group_2_0__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }

-(rule__WildcardTypeRefCS__Group_2_1__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ID__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }

-	RULE_SIMPLE_ID

-{ after(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }

-	RULE_ESCAPED_ID

-{ after(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UPPER__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }

-	RULE_INT

-{ after(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }

-

-	'*' 

-

-{ after(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-rule__MultiplicityBoundsCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group__0__Impl

-	rule__MultiplicityBoundsCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }

-(rule__MultiplicityBoundsCS__LowerBoundAssignment_0)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityBoundsCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }

-(rule__MultiplicityBoundsCS__Group_1__0)?

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__MultiplicityBoundsCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group_1__0__Impl

-	rule__MultiplicityBoundsCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }

-

-	'..' 

-

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityBoundsCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }

-(rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-rule__PathNameCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group__0__Impl

-	rule__PathNameCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-(rule__PathNameCS__OwnedPathElementsAssignment_0)

-{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PathNameCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getGroup_1()); }

-(rule__PathNameCS__Group_1__0)*

-{ after(grammarAccess.getPathNameCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__PathNameCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group_1__0__Impl

-	rule__PathNameCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }

-

-	'::' 

-

-{ after(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PathNameCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-(rule__PathNameCS__OwnedPathElementsAssignment_1_1)

-{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TemplateBindingCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__0__Impl

-	rule__TemplateBindingCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__1__Impl

-	rule__TemplateBindingCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }

-(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1)

-{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__2__Impl

-	rule__TemplateBindingCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }

-(rule__TemplateBindingCS__Group_2__0)*

-{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }

-

-	')' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TemplateBindingCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_2__0__Impl

-	rule__TemplateBindingCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }

-(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1)

-{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TypeParameterCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group__0__Impl

-	rule__TypeParameterCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }

-(rule__TypeParameterCS__NameAssignment_0)

-{ after(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }

-(rule__TypeParameterCS__Alternatives_1)?

-{ after(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__0__Impl

-	rule__TypeParameterCS__Group_1_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }

-

-	'extends' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__1__Impl

-	rule__TypeParameterCS__Group_1_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }

-(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }

-(rule__TypeParameterCS__Group_1_0_2__0)*

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0_2__0__Impl

-	rule__TypeParameterCS__Group_1_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }

-

-	'&&' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }

-(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_1__0__Impl

-	rule__TypeParameterCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }

-

-	'super' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }

-(rule__TypeParameterCS__OwnedSuperAssignment_1_1_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypedTypeRefCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedTypeRefCS__Group__0__Impl

-	rule__TypedTypeRefCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }

-(rule__TypedTypeRefCS__OwnedPathNameAssignment_0)

-{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypedTypeRefCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedTypeRefCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }

-(rule__TypedTypeRefCS__OwnedBindingAssignment_1)?

-{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__0__Impl

-	rule__WildcardTypeRefCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__1__Impl

-	rule__WildcardTypeRefCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }

-

-	'?' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }

-(rule__WildcardTypeRefCS__Alternatives_2)?

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_0__0__Impl

-	rule__WildcardTypeRefCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }

-

-	'extends' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }

-(rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_1__0__Impl

-	rule__WildcardTypeRefCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }

-

-	'super' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }

-(rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-rule__MultiplicityBoundsCS__LowerBoundAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }

-	ruleLOWER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }

-	ruleUPPER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityStringCS__StringBoundsAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }

-(rule__MultiplicityStringCS__StringBoundsAlternatives_0)

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__OwnedPathElementsAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }

-	ruleFirstPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__OwnedPathElementsAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }

-	ruleNextPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FirstPathElementCS__ReferredElementAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }

-)

-{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NextPathElementCS__ReferredElementAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }

-	ruleUnreservedName{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }

-)

-{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }

-	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }

-	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }

-	ruleTypeRefCS{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-rule__TypeParameterCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedSuperAssignment_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__OwnedPathNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-	rulePathNameCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__OwnedBindingAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }

-	ruleTemplateBindingCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');

-

-fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');

-

-RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';

-

-RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';

-

-RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';

-

-RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;

-

-RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;

-

-RULE_INT : ('0'..'9')+;

-

-RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';

-

-RULE_SL_COMMENT : '--' ~(('\n'|'\r'))* ('\r'? '\n')?;

-

-RULE_WS : (' '|'\t'|'\r'|'\n')+;

-

-RULE_ANY_OTHER : .;

-

-

+/*
+ * generated by Xtext
+ */
+grammar InternalBase;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.ocl.xtext.base.ui.contentassist.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.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.eclipse.ocl.xtext.base.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+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.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.ocl.xtext.base.services.BaseGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private BaseGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(BaseGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleMultiplicityBoundsCS
+entryRuleMultiplicityBoundsCS 
+:
+{ before(grammarAccess.getMultiplicityBoundsCSRule()); }
+	 ruleMultiplicityBoundsCS
+{ after(grammarAccess.getMultiplicityBoundsCSRule()); } 
+	 EOF 
+;
+
+// Rule MultiplicityBoundsCS
+ruleMultiplicityBoundsCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }
+(rule__MultiplicityBoundsCS__Group__0)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleMultiplicityStringCS
+entryRuleMultiplicityStringCS 
+:
+{ before(grammarAccess.getMultiplicityStringCSRule()); }
+	 ruleMultiplicityStringCS
+{ after(grammarAccess.getMultiplicityStringCSRule()); } 
+	 EOF 
+;
+
+// Rule MultiplicityStringCS
+ruleMultiplicityStringCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }
+(rule__MultiplicityStringCS__StringBoundsAssignment)
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePathNameCS
+entryRulePathNameCS 
+:
+{ before(grammarAccess.getPathNameCSRule()); }
+	 rulePathNameCS
+{ after(grammarAccess.getPathNameCSRule()); } 
+	 EOF 
+;
+
+// Rule PathNameCS
+rulePathNameCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPathNameCSAccess().getGroup()); }
+(rule__PathNameCS__Group__0)
+{ after(grammarAccess.getPathNameCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFirstPathElementCS
+entryRuleFirstPathElementCS 
+:
+{ before(grammarAccess.getFirstPathElementCSRule()); }
+	 ruleFirstPathElementCS
+{ after(grammarAccess.getFirstPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule FirstPathElementCS
+ruleFirstPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }
+(rule__FirstPathElementCS__ReferredElementAssignment)
+{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNextPathElementCS
+entryRuleNextPathElementCS 
+:
+{ before(grammarAccess.getNextPathElementCSRule()); }
+	 ruleNextPathElementCS
+{ after(grammarAccess.getNextPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule NextPathElementCS
+ruleNextPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }
+(rule__NextPathElementCS__ReferredElementAssignment)
+{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTemplateBindingCS
+entryRuleTemplateBindingCS 
+:
+{ before(grammarAccess.getTemplateBindingCSRule()); }
+	 ruleTemplateBindingCS
+{ after(grammarAccess.getTemplateBindingCSRule()); } 
+	 EOF 
+;
+
+// Rule TemplateBindingCS
+ruleTemplateBindingCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getGroup()); }
+(rule__TemplateBindingCS__Group__0)
+{ after(grammarAccess.getTemplateBindingCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTemplateParameterSubstitutionCS
+entryRuleTemplateParameterSubstitutionCS 
+:
+{ before(grammarAccess.getTemplateParameterSubstitutionCSRule()); }
+	 ruleTemplateParameterSubstitutionCS
+{ after(grammarAccess.getTemplateParameterSubstitutionCSRule()); } 
+	 EOF 
+;
+
+// Rule TemplateParameterSubstitutionCS
+ruleTemplateParameterSubstitutionCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }
+(rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment)
+{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleTypeParameterCS
+entryRuleTypeParameterCS 
+:
+{ before(grammarAccess.getTypeParameterCSRule()); }
+	 ruleTypeParameterCS
+{ after(grammarAccess.getTypeParameterCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeParameterCS
+ruleTypeParameterCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup()); }
+(rule__TypeParameterCS__Group__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeRefCS
+entryRuleTypeRefCS 
+:
+{ before(grammarAccess.getTypeRefCSRule()); }
+	 ruleTypeRefCS
+{ after(grammarAccess.getTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeRefCS
+ruleTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeRefCSAccess().getAlternatives()); }
+(rule__TypeRefCS__Alternatives)
+{ after(grammarAccess.getTypeRefCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypedRefCS
+entryRuleTypedRefCS 
+:
+{ before(grammarAccess.getTypedRefCSRule()); }
+	 ruleTypedRefCS
+{ after(grammarAccess.getTypedRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypedRefCS
+ruleTypedRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall()); }
+	ruleTypedTypeRefCS
+{ after(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypedTypeRefCS
+entryRuleTypedTypeRefCS 
+:
+{ before(grammarAccess.getTypedTypeRefCSRule()); }
+	 ruleTypedTypeRefCS
+{ after(grammarAccess.getTypedTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypedTypeRefCS
+ruleTypedTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }
+(rule__TypedTypeRefCS__Group__0)
+{ after(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnreservedName
+entryRuleUnreservedName 
+:
+{ before(grammarAccess.getUnreservedNameRule()); }
+	 ruleUnreservedName
+{ after(grammarAccess.getUnreservedNameRule()); } 
+	 EOF 
+;
+
+// Rule UnreservedName
+ruleUnreservedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnreservedNameAccess().getUnrestrictedNameParserRuleCall()); }
+	ruleUnrestrictedName
+{ after(grammarAccess.getUnreservedNameAccess().getUnrestrictedNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnrestrictedName
+entryRuleUnrestrictedName 
+:
+{ before(grammarAccess.getUnrestrictedNameRule()); }
+	 ruleUnrestrictedName
+{ after(grammarAccess.getUnrestrictedNameRule()); } 
+	 EOF 
+;
+
+// Rule UnrestrictedName
+ruleUnrestrictedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnrestrictedNameAccess().getIdentifierParserRuleCall()); }
+	ruleIdentifier
+{ after(grammarAccess.getUnrestrictedNameAccess().getIdentifierParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleWildcardTypeRefCS
+entryRuleWildcardTypeRefCS 
+:
+{ before(grammarAccess.getWildcardTypeRefCSRule()); }
+	 ruleWildcardTypeRefCS
+{ after(grammarAccess.getWildcardTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule WildcardTypeRefCS
+ruleWildcardTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }
+(rule__WildcardTypeRefCS__Group__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleID
+entryRuleID 
+:
+{ before(grammarAccess.getIDRule()); }
+	 ruleID
+{ after(grammarAccess.getIDRule()); } 
+	 EOF 
+;
+
+// Rule ID
+ruleID
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIDAccess().getAlternatives()); }
+(rule__ID__Alternatives)
+{ after(grammarAccess.getIDAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIdentifier
+entryRuleIdentifier 
+:
+{ before(grammarAccess.getIdentifierRule()); }
+	 ruleIdentifier
+{ after(grammarAccess.getIdentifierRule()); } 
+	 EOF 
+;
+
+// Rule Identifier
+ruleIdentifier
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }
+	ruleID
+{ after(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLOWER
+entryRuleLOWER 
+:
+{ before(grammarAccess.getLOWERRule()); }
+	 ruleLOWER
+{ after(grammarAccess.getLOWERRule()); } 
+	 EOF 
+;
+
+// Rule LOWER
+ruleLOWER
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }
+	RULE_INT
+{ after(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+// Entry rule entryRuleUPPER
+entryRuleUPPER 
+:
+{ before(grammarAccess.getUPPERRule()); }
+	 ruleUPPER
+{ after(grammarAccess.getUPPERRule()); } 
+	 EOF 
+;
+
+// Rule UPPER
+ruleUPPER
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUPPERAccess().getAlternatives()); }
+(rule__UPPER__Alternatives)
+{ after(grammarAccess.getUPPERAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+rule__MultiplicityStringCS__StringBoundsAlternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }
+
+	'*' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }
+
+	'+' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }
+
+	'?' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }
+(rule__TypeParameterCS__Group_1_0__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }
+(rule__TypeParameterCS__Group_1_1__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeRefCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }
+	ruleTypedRefCS
+{ after(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }
+	ruleWildcardTypeRefCS
+{ after(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }
+(rule__WildcardTypeRefCS__Group_2_0__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }
+(rule__WildcardTypeRefCS__Group_2_1__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ID__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }
+	RULE_SIMPLE_ID
+{ after(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }
+	RULE_ESCAPED_ID
+{ after(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UPPER__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }
+	RULE_INT
+{ after(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }
+
+	'*' 
+
+{ after(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__MultiplicityBoundsCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group__0__Impl
+	rule__MultiplicityBoundsCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }
+(rule__MultiplicityBoundsCS__LowerBoundAssignment_0)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityBoundsCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }
+(rule__MultiplicityBoundsCS__Group_1__0)?
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MultiplicityBoundsCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group_1__0__Impl
+	rule__MultiplicityBoundsCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }
+
+	'..' 
+
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityBoundsCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }
+(rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+rule__PathNameCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group__0__Impl
+	rule__PathNameCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+(rule__PathNameCS__OwnedPathElementsAssignment_0)
+{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PathNameCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getGroup_1()); }
+(rule__PathNameCS__Group_1__0)*
+{ after(grammarAccess.getPathNameCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PathNameCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group_1__0__Impl
+	rule__PathNameCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }
+
+	'::' 
+
+{ after(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PathNameCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+(rule__PathNameCS__OwnedPathElementsAssignment_1_1)
+{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TemplateBindingCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__0__Impl
+	rule__TemplateBindingCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__1__Impl
+	rule__TemplateBindingCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }
+(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1)
+{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__2__Impl
+	rule__TemplateBindingCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }
+(rule__TemplateBindingCS__Group_2__0)*
+{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }
+
+	')' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TemplateBindingCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_2__0__Impl
+	rule__TemplateBindingCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }
+(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1)
+{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TypeParameterCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group__0__Impl
+	rule__TypeParameterCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }
+(rule__TypeParameterCS__NameAssignment_0)
+{ after(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }
+(rule__TypeParameterCS__Alternatives_1)?
+{ after(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__0__Impl
+	rule__TypeParameterCS__Group_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__1__Impl
+	rule__TypeParameterCS__Group_1_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }
+(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }
+(rule__TypeParameterCS__Group_1_0_2__0)*
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0_2__0__Impl
+	rule__TypeParameterCS__Group_1_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }
+
+	'&&' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }
+(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_1__0__Impl
+	rule__TypeParameterCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }
+
+	'super' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }
+(rule__TypeParameterCS__OwnedSuperAssignment_1_1_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypedTypeRefCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedTypeRefCS__Group__0__Impl
+	rule__TypedTypeRefCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }
+(rule__TypedTypeRefCS__OwnedPathNameAssignment_0)
+{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedTypeRefCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedTypeRefCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }
+(rule__TypedTypeRefCS__OwnedBindingAssignment_1)?
+{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__0__Impl
+	rule__WildcardTypeRefCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__1__Impl
+	rule__WildcardTypeRefCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }
+
+	'?' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }
+(rule__WildcardTypeRefCS__Alternatives_2)?
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_0__0__Impl
+	rule__WildcardTypeRefCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }
+(rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_1__0__Impl
+	rule__WildcardTypeRefCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }
+
+	'super' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }
+(rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+rule__MultiplicityBoundsCS__LowerBoundAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }
+	ruleLOWER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }
+	ruleUPPER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityStringCS__StringBoundsAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }
+(rule__MultiplicityStringCS__StringBoundsAlternatives_0)
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__OwnedPathElementsAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }
+	ruleFirstPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__OwnedPathElementsAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }
+	ruleNextPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FirstPathElementCS__ReferredElementAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }
+)
+{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NextPathElementCS__ReferredElementAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }
+	ruleUnreservedName{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }
+)
+{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }
+	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }
+	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }
+	ruleTypeRefCS{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__TypeParameterCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedSuperAssignment_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__OwnedPathNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+	rulePathNameCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__OwnedBindingAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }
+	ruleTemplateBindingCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');
+
+fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');
+
+RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';
+
+RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';
+
+RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';
+
+RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;
+
+RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;
+
+RULE_INT : ('0'..'9')+;
+
+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/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/internal/InternalBase.tokens b/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/internal/InternalBase.tokens
index a022b9b..c2f003d 100644
--- a/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/internal/InternalBase.tokens
+++ b/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/internal/InternalBase.tokens
@@ -1,34 +1,34 @@
-'&&'=25

-'('=21

-')'=22

-'*'=16

-'+'=17

-','=23

-'..'=19

-'::'=20

-'?'=18

-'extends'=24

-'super'=26

-RULE_ANY_OTHER=15

-RULE_DOUBLE_QUOTED_STRING=9

-RULE_ESCAPED_CHARACTER=7

-RULE_ESCAPED_ID=6

-RULE_INT=4

-RULE_LETTER_CHARACTER=8

-RULE_ML_COMMENT=12

-RULE_ML_SINGLE_QUOTED_STRING=11

-RULE_SIMPLE_ID=5

-RULE_SINGLE_QUOTED_STRING=10

-RULE_SL_COMMENT=13

-RULE_WS=14

-T__16=16

-T__17=17

-T__18=18

-T__19=19

-T__20=20

-T__21=21

-T__22=22

-T__23=23

-T__24=24

-T__25=25

-T__26=26

+'&&'=25
+'('=21
+')'=22
+'*'=16
+'+'=17
+','=23
+'..'=19
+'::'=20
+'?'=18
+'extends'=24
+'super'=26
+RULE_ANY_OTHER=15
+RULE_DOUBLE_QUOTED_STRING=9
+RULE_ESCAPED_CHARACTER=7
+RULE_ESCAPED_ID=6
+RULE_INT=4
+RULE_LETTER_CHARACTER=8
+RULE_ML_COMMENT=12
+RULE_ML_SINGLE_QUOTED_STRING=11
+RULE_SIMPLE_ID=5
+RULE_SINGLE_QUOTED_STRING=10
+RULE_SL_COMMENT=13
+RULE_WS=14
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
diff --git a/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/internal/InternalBaseLexer.java b/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/internal/InternalBaseLexer.java
index 403014b..ebd085c 100644
--- a/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/internal/InternalBaseLexer.java
+++ b/plugins/org.eclipse.ocl.xtext.base.ui/src-gen/org/eclipse/ocl/xtext/base/ui/contentassist/antlr/internal/InternalBaseLexer.java
@@ -14,8 +14,8 @@
 public class InternalBaseLexer extends Lexer {
     public static final int RULE_ML_SINGLE_QUOTED_STRING=11;
     public static final int T__26=26;
-    public static final int RULE_ESCAPED_CHARACTER=7;
     public static final int T__25=25;
+    public static final int RULE_ESCAPED_CHARACTER=7;
     public static final int T__24=24;
     public static final int T__23=23;
     public static final int T__22=22;
@@ -27,8 +27,8 @@
     public static final int RULE_DOUBLE_QUOTED_STRING=9;
     public static final int EOF=-1;
     public static final int RULE_SL_COMMENT=13;
-    public static final int RULE_ML_COMMENT=12;
     public static final int RULE_LETTER_CHARACTER=8;
+    public static final int RULE_ML_COMMENT=12;
     public static final int T__19=19;
     public static final int T__16=16;
     public static final int T__18=18;
diff --git a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/AbstractBaseRuntimeModule.java b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/AbstractBaseRuntimeModule.java
index f0b2068..23088ed 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/AbstractBaseRuntimeModule.java
+++ b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/AbstractBaseRuntimeModule.java
@@ -6,7 +6,6 @@
 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;
@@ -14,8 +13,8 @@
 /**
  * Manual modifications go to {org.eclipse.ocl.xtext.base.BaseRuntimeModule}
  */
- @SuppressWarnings("all")
-public abstract class AbstractBaseRuntimeModule extends DefaultRuntimeModule {
+@SuppressWarnings("all")
+public abstract class AbstractBaseRuntimeModule extends org.eclipse.xtext.service.DefaultRuntimeModule {
 
 	protected Properties properties = null;
 
diff --git a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/BaseStandaloneSetupGenerated.java b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/BaseStandaloneSetupGenerated.java
index 57d53f1..079da6b 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/BaseStandaloneSetupGenerated.java
+++ b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/BaseStandaloneSetupGenerated.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.base;
 
 import org.eclipse.emf.ecore.EPackage;
@@ -16,6 +16,7 @@
 @SuppressWarnings("all")
 public class BaseStandaloneSetupGenerated implements ISetup {
 
+	@Override
 	public Injector createInjectorAndDoEMFRegistration() {
 		// register default ePackages
 		if (!Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().containsKey("ecore"))
diff --git a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/BaseAntlrTokenFileProvider.java b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/BaseAntlrTokenFileProvider.java
index 2c5f5f9..e42b3d8 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/BaseAntlrTokenFileProvider.java
+++ b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/BaseAntlrTokenFileProvider.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.base.parser.antlr;
 
 import java.io.InputStream;
diff --git a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/BaseParser.java b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/BaseParser.java
index 9d21d62..89116c4 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/BaseParser.java
+++ b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/BaseParser.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.base.parser.antlr;
 
 import com.google.inject.Inject;
diff --git a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/internal/InternalBase.g b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/internal/InternalBase.g
index 2ddbe7f..0faac1a 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/internal/InternalBase.g
+++ b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/internal/InternalBase.g
@@ -1,993 +1,993 @@
-/*

-* generated by Xtext

-*/

-grammar InternalBase;

-

-options {

-	superClass=AbstractInternalAntlrParser;

-	backtrack=true;

-	

-}

-

-@lexer::header {

-package org.eclipse.ocl.xtext.base.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.ocl.xtext.base.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.ocl.xtext.base.services.BaseGrammarAccess;

-

-}

-

-@parser::members {

-

-/*

-  This grammar contains a lot of empty actions to work around a bug in ANTLR.

-  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.

-*/

- 

- 	private BaseGrammarAccess grammarAccess;

- 	

-    public InternalBaseParser(TokenStream input, BaseGrammarAccess grammarAccess) {

-        this(input);

-        this.grammarAccess = grammarAccess;

-        registerRules(grammarAccess.getGrammar());

-    }

-    

-    @Override

-    protected String getFirstRuleName() {

-    	return "MultiplicityBoundsCS";	

-   	}

-   	

-   	@Override

-   	protected BaseGrammarAccess getGrammarAccess() {

-   		return grammarAccess;

-   	}

-}

-

-@rulecatch { 

-    catch (RecognitionException re) { 

-        recover(input,re); 

-        appendSkippedTokens();

-    } 

-}

-

-

-

-

-// Entry rule entryRuleMultiplicityBoundsCS

-entryRuleMultiplicityBoundsCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMultiplicityBoundsCSRule()); }

-	 iv_ruleMultiplicityBoundsCS=ruleMultiplicityBoundsCS 

-	 { $current=$iv_ruleMultiplicityBoundsCS.current; } 

-	 EOF 

-;

-

-// Rule MultiplicityBoundsCS

-ruleMultiplicityBoundsCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); 

-	    }

-		lv_lowerBound_0_0=ruleLOWER		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());

-	        }

-       		set(

-       			$current, 

-       			"lowerBound",

-        		lv_lowerBound_0_0, 

-        		"LOWER");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='..' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); 

-	    }

-		lv_upperBound_2_0=ruleUPPER		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());

-	        }

-       		set(

-       			$current, 

-       			"upperBound",

-        		lv_upperBound_2_0, 

-        		"UPPER");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-;

-

-

-

-

-

-

-

-// Entry rule entryRuleMultiplicityStringCS

-entryRuleMultiplicityStringCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMultiplicityStringCSRule()); }

-	 iv_ruleMultiplicityStringCS=ruleMultiplicityStringCS 

-	 { $current=$iv_ruleMultiplicityStringCS.current; } 

-	 EOF 

-;

-

-// Rule MultiplicityStringCS

-ruleMultiplicityStringCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-(

-		lv_stringBounds_0_1=	'*' 

-    {

-        newLeafNode(lv_stringBounds_0_1, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_1, null);

-	    }

-

-    |		lv_stringBounds_0_2=	'+' 

-    {

-        newLeafNode(lv_stringBounds_0_2, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_2, null);

-	    }

-

-    |		lv_stringBounds_0_3=	'?' 

-    {

-        newLeafNode(lv_stringBounds_0_3, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_3, null);

-	    }

-

-)

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRulePathNameCS

-entryRulePathNameCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPathNameCSRule()); }

-	 iv_rulePathNameCS=rulePathNameCS 

-	 { $current=$iv_rulePathNameCS.current; } 

-	 EOF 

-;

-

-// Rule PathNameCS

-rulePathNameCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathElements_0_0=ruleFirstPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_0_0, 

-        		"FirstPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='::' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedPathElements_2_0=ruleNextPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_2_0, 

-        		"NextPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)

-;

-

-

-

-

-

-// Entry rule entryRuleFirstPathElementCS

-entryRuleFirstPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getFirstPathElementCSRule()); }

-	 iv_ruleFirstPathElementCS=ruleFirstPathElementCS 

-	 { $current=$iv_ruleFirstPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule FirstPathElementCS

-ruleFirstPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getFirstPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNextPathElementCS

-entryRuleNextPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNextPathElementCSRule()); }

-	 iv_ruleNextPathElementCS=ruleNextPathElementCS 

-	 { $current=$iv_ruleNextPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule NextPathElementCS

-ruleNextPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNextPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 

-	    }

-		ruleUnreservedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTemplateBindingCS

-entryRuleTemplateBindingCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTemplateBindingCSRule()); }

-	 iv_ruleTemplateBindingCS=ruleTemplateBindingCS 

-	 { $current=$iv_ruleTemplateBindingCS.current; } 

-	 EOF 

-;

-

-// Rule TemplateBindingCS

-ruleTemplateBindingCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='(' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedSubstitutions_1_0=ruleTemplateParameterSubstitutionCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSubstitutions",

-        		lv_ownedSubstitutions_1_0, 

-        		"TemplateParameterSubstitutionCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedSubstitutions_3_0=ruleTemplateParameterSubstitutionCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSubstitutions",

-        		lv_ownedSubstitutions_3_0, 

-        		"TemplateParameterSubstitutionCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4=')' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTemplateParameterSubstitutionCS

-entryRuleTemplateParameterSubstitutionCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSRule()); }

-	 iv_ruleTemplateParameterSubstitutionCS=ruleTemplateParameterSubstitutionCS 

-	 { $current=$iv_ruleTemplateParameterSubstitutionCS.current; } 

-	 EOF 

-;

-

-// Rule TemplateParameterSubstitutionCS

-ruleTemplateParameterSubstitutionCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); 

-	    }

-		lv_ownedActualParameter_0_0=ruleTypeRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateParameterSubstitutionCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedActualParameter",

-        		lv_ownedActualParameter_0_0, 

-        		"TypeRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-

-

-// Entry rule entryRuleTypeParameterCS

-entryRuleTypeParameterCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeParameterCSRule()); }

-	 iv_ruleTypeParameterCS=ruleTypeParameterCS 

-	 { $current=$iv_ruleTypeParameterCS.current; } 

-	 EOF 

-;

-

-// Rule TypeParameterCS

-ruleTypeParameterCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((	otherlv_1='extends' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); 

-	    }

-		lv_ownedExtends_2_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_2_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3='&&' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); 

-	    }

-		lv_ownedExtends_4_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_4_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)

-    |(	otherlv_5='super' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); 

-	    }

-		lv_ownedSuper_6_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSuper",

-        		lv_ownedSuper_6_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeRefCS

-entryRuleTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeRefCSRule()); }

-	 iv_ruleTypeRefCS=ruleTypeRefCS 

-	 { $current=$iv_ruleTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypeRefCS

-ruleTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); 

-    }

-    this_TypedRefCS_0=ruleTypedRefCS

-    { 

-        $current = $this_TypedRefCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); 

-    }

-    this_WildcardTypeRefCS_1=ruleWildcardTypeRefCS

-    { 

-        $current = $this_WildcardTypeRefCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypedRefCS

-entryRuleTypedRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypedRefCSRule()); }

-	 iv_ruleTypedRefCS=ruleTypedRefCS 

-	 { $current=$iv_ruleTypedRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypedRefCS

-ruleTypedRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall()); 

-    }

-    this_TypedTypeRefCS_0=ruleTypedTypeRefCS

-    { 

-        $current = $this_TypedTypeRefCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-;

-

-

-

-

-

-// Entry rule entryRuleTypedTypeRefCS

-entryRuleTypedTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypedTypeRefCSRule()); }

-	 iv_ruleTypedTypeRefCS=ruleTypedTypeRefCS 

-	 { $current=$iv_ruleTypedTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypedTypeRefCS

-ruleTypedTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathName_0_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_0_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedBinding_1_0=ruleTemplateBindingCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedBinding",

-        		lv_ownedBinding_1_0, 

-        		"TemplateBindingCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleUnreservedName

-entryRuleUnreservedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnreservedNameRule()); } 

-	 iv_ruleUnreservedName=ruleUnreservedName 

-	 { $current=$iv_ruleUnreservedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule UnreservedName

-ruleUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getUnreservedNameAccess().getUnrestrictedNameParserRuleCall()); 

-    }

-    this_UnrestrictedName_0=ruleUnrestrictedName    {

-		$current.merge(this_UnrestrictedName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleUnrestrictedName

-entryRuleUnrestrictedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnrestrictedNameRule()); } 

-	 iv_ruleUnrestrictedName=ruleUnrestrictedName 

-	 { $current=$iv_ruleUnrestrictedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule UnrestrictedName

-ruleUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getUnrestrictedNameAccess().getIdentifierParserRuleCall()); 

-    }

-    this_Identifier_0=ruleIdentifier    {

-		$current.merge(this_Identifier_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleWildcardTypeRefCS

-entryRuleWildcardTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getWildcardTypeRefCSRule()); }

-	 iv_ruleWildcardTypeRefCS=ruleWildcardTypeRefCS 

-	 { $current=$iv_ruleWildcardTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule WildcardTypeRefCS

-ruleWildcardTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0(),

-            $current);

-    }

-)	otherlv_1='?' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1());

-    }

-((	otherlv_2='extends' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); 

-	    }

-		lv_ownedExtends_3_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_3_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |(	otherlv_4='super' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedSuper_5_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSuper",

-        		lv_ownedSuper_5_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-;

-

-

-

-

-

-// Entry rule entryRuleID

-entryRuleID returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIDRule()); } 

-	 iv_ruleID=ruleID 

-	 { $current=$iv_ruleID.current.getText(); }  

-	 EOF 

-;

-

-// Rule ID

-ruleID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(    this_SIMPLE_ID_0=RULE_SIMPLE_ID    {

-		$current.merge(this_SIMPLE_ID_0);

-    }

-

-    { 

-    newLeafNode(this_SIMPLE_ID_0, grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); 

-    }

-

-    |    this_ESCAPED_ID_1=RULE_ESCAPED_ID    {

-		$current.merge(this_ESCAPED_ID_1);

-    }

-

-    { 

-    newLeafNode(this_ESCAPED_ID_1, grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleIdentifier

-entryRuleIdentifier returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIdentifierRule()); } 

-	 iv_ruleIdentifier=ruleIdentifier 

-	 { $current=$iv_ruleIdentifier.current.getText(); }  

-	 EOF 

-;

-

-// Rule Identifier

-ruleIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); 

-    }

-    this_ID_0=ruleID    {

-		$current.merge(this_ID_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleLOWER

-entryRuleLOWER returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLOWERRule()); } 

-	 iv_ruleLOWER=ruleLOWER 

-	 { $current=$iv_ruleLOWER.current.getText(); }  

-	 EOF 

-;

-

-// Rule LOWER

-ruleLOWER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_INT_0=RULE_INT    {

-		$current.merge(this_INT_0);

-    }

-

-    { 

-    newLeafNode(this_INT_0, grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-

-

-

-

-// Entry rule entryRuleUPPER

-entryRuleUPPER returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUPPERRule()); } 

-	 iv_ruleUPPER=ruleUPPER 

-	 { $current=$iv_ruleUPPER.current.getText(); }  

-	 EOF 

-;

-

-// Rule UPPER

-ruleUPPER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(    this_INT_0=RULE_INT    {

-		$current.merge(this_INT_0);

-    }

-

-    { 

-    newLeafNode(this_INT_0, grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); 

-    }

-

-    |

-	kw='*' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); 

-    }

-)

-    ;

-

-

-

-

-

-

-

-fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');

-

-fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');

-

-RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';

-

-RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';

-

-RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';

-

-RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;

-

-RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;

-

-RULE_INT : ('0'..'9')+;

-

-RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';

-

-RULE_SL_COMMENT : '--' ~(('\n'|'\r'))* ('\r'? '\n')?;

-

-RULE_WS : (' '|'\t'|'\r'|'\n')+;

-

-RULE_ANY_OTHER : .;

-

-

+/*
+ * generated by Xtext
+ */
+grammar InternalBase;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.ocl.xtext.base.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.ocl.xtext.base.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.ocl.xtext.base.services.BaseGrammarAccess;
+
+}
+
+@parser::members {
+
+/*
+  This grammar contains a lot of empty actions to work around a bug in ANTLR.
+  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.
+*/
+ 
+ 	private BaseGrammarAccess grammarAccess;
+ 	
+    public InternalBaseParser(TokenStream input, BaseGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "MultiplicityBoundsCS";	
+   	}
+   	
+   	@Override
+   	protected BaseGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleMultiplicityBoundsCS
+entryRuleMultiplicityBoundsCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityBoundsCSRule()); }
+	 iv_ruleMultiplicityBoundsCS=ruleMultiplicityBoundsCS 
+	 { $current=$iv_ruleMultiplicityBoundsCS.current; } 
+	 EOF 
+;
+
+// Rule MultiplicityBoundsCS
+ruleMultiplicityBoundsCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); 
+	    }
+		lv_lowerBound_0_0=ruleLOWER		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());
+	        }
+       		set(
+       			$current, 
+       			"lowerBound",
+        		lv_lowerBound_0_0, 
+        		"LOWER");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='..' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); 
+	    }
+		lv_upperBound_2_0=ruleUPPER		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());
+	        }
+       		set(
+       			$current, 
+       			"upperBound",
+        		lv_upperBound_2_0, 
+        		"UPPER");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleMultiplicityStringCS
+entryRuleMultiplicityStringCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityStringCSRule()); }
+	 iv_ruleMultiplicityStringCS=ruleMultiplicityStringCS 
+	 { $current=$iv_ruleMultiplicityStringCS.current; } 
+	 EOF 
+;
+
+// Rule MultiplicityStringCS
+ruleMultiplicityStringCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+(
+		lv_stringBounds_0_1=	'*' 
+    {
+        newLeafNode(lv_stringBounds_0_1, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_1, null);
+	    }
+
+    |		lv_stringBounds_0_2=	'+' 
+    {
+        newLeafNode(lv_stringBounds_0_2, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_2, null);
+	    }
+
+    |		lv_stringBounds_0_3=	'?' 
+    {
+        newLeafNode(lv_stringBounds_0_3, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_3, null);
+	    }
+
+)
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRulePathNameCS
+entryRulePathNameCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPathNameCSRule()); }
+	 iv_rulePathNameCS=rulePathNameCS 
+	 { $current=$iv_rulePathNameCS.current; } 
+	 EOF 
+;
+
+// Rule PathNameCS
+rulePathNameCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathElements_0_0=ruleFirstPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_0_0, 
+        		"FirstPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='::' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedPathElements_2_0=ruleNextPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_2_0, 
+        		"NextPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleFirstPathElementCS
+entryRuleFirstPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFirstPathElementCSRule()); }
+	 iv_ruleFirstPathElementCS=ruleFirstPathElementCS 
+	 { $current=$iv_ruleFirstPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule FirstPathElementCS
+ruleFirstPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFirstPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNextPathElementCS
+entryRuleNextPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNextPathElementCSRule()); }
+	 iv_ruleNextPathElementCS=ruleNextPathElementCS 
+	 { $current=$iv_ruleNextPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule NextPathElementCS
+ruleNextPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNextPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 
+	    }
+		ruleUnreservedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTemplateBindingCS
+entryRuleTemplateBindingCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTemplateBindingCSRule()); }
+	 iv_ruleTemplateBindingCS=ruleTemplateBindingCS 
+	 { $current=$iv_ruleTemplateBindingCS.current; } 
+	 EOF 
+;
+
+// Rule TemplateBindingCS
+ruleTemplateBindingCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedSubstitutions_1_0=ruleTemplateParameterSubstitutionCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSubstitutions",
+        		lv_ownedSubstitutions_1_0, 
+        		"TemplateParameterSubstitutionCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedSubstitutions_3_0=ruleTemplateParameterSubstitutionCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSubstitutions",
+        		lv_ownedSubstitutions_3_0, 
+        		"TemplateParameterSubstitutionCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTemplateParameterSubstitutionCS
+entryRuleTemplateParameterSubstitutionCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSRule()); }
+	 iv_ruleTemplateParameterSubstitutionCS=ruleTemplateParameterSubstitutionCS 
+	 { $current=$iv_ruleTemplateParameterSubstitutionCS.current; } 
+	 EOF 
+;
+
+// Rule TemplateParameterSubstitutionCS
+ruleTemplateParameterSubstitutionCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); 
+	    }
+		lv_ownedActualParameter_0_0=ruleTypeRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateParameterSubstitutionCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedActualParameter",
+        		lv_ownedActualParameter_0_0, 
+        		"TypeRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleTypeParameterCS
+entryRuleTypeParameterCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeParameterCSRule()); }
+	 iv_ruleTypeParameterCS=ruleTypeParameterCS 
+	 { $current=$iv_ruleTypeParameterCS.current; } 
+	 EOF 
+;
+
+// Rule TypeParameterCS
+ruleTypeParameterCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_1='extends' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); 
+	    }
+		lv_ownedExtends_2_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_2_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='&&' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); 
+	    }
+		lv_ownedExtends_4_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_4_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+    |(	otherlv_5='super' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); 
+	    }
+		lv_ownedSuper_6_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSuper",
+        		lv_ownedSuper_6_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeRefCS
+entryRuleTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeRefCSRule()); }
+	 iv_ruleTypeRefCS=ruleTypeRefCS 
+	 { $current=$iv_ruleTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypeRefCS
+ruleTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); 
+    }
+    this_TypedRefCS_0=ruleTypedRefCS
+    { 
+        $current = $this_TypedRefCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); 
+    }
+    this_WildcardTypeRefCS_1=ruleWildcardTypeRefCS
+    { 
+        $current = $this_WildcardTypeRefCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypedRefCS
+entryRuleTypedRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedRefCSRule()); }
+	 iv_ruleTypedRefCS=ruleTypedRefCS 
+	 { $current=$iv_ruleTypedRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypedRefCS
+ruleTypedRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall()); 
+    }
+    this_TypedTypeRefCS_0=ruleTypedTypeRefCS
+    { 
+        $current = $this_TypedTypeRefCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleTypedTypeRefCS
+entryRuleTypedTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedTypeRefCSRule()); }
+	 iv_ruleTypedTypeRefCS=ruleTypedTypeRefCS 
+	 { $current=$iv_ruleTypedTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypedTypeRefCS
+ruleTypedTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathName_0_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_0_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedBinding_1_0=ruleTemplateBindingCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedBinding",
+        		lv_ownedBinding_1_0, 
+        		"TemplateBindingCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleUnreservedName
+entryRuleUnreservedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnreservedNameRule()); } 
+	 iv_ruleUnreservedName=ruleUnreservedName 
+	 { $current=$iv_ruleUnreservedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnreservedName
+ruleUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getUnreservedNameAccess().getUnrestrictedNameParserRuleCall()); 
+    }
+    this_UnrestrictedName_0=ruleUnrestrictedName    {
+		$current.merge(this_UnrestrictedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleUnrestrictedName
+entryRuleUnrestrictedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnrestrictedNameRule()); } 
+	 iv_ruleUnrestrictedName=ruleUnrestrictedName 
+	 { $current=$iv_ruleUnrestrictedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnrestrictedName
+ruleUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getUnrestrictedNameAccess().getIdentifierParserRuleCall()); 
+    }
+    this_Identifier_0=ruleIdentifier    {
+		$current.merge(this_Identifier_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleWildcardTypeRefCS
+entryRuleWildcardTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getWildcardTypeRefCSRule()); }
+	 iv_ruleWildcardTypeRefCS=ruleWildcardTypeRefCS 
+	 { $current=$iv_ruleWildcardTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule WildcardTypeRefCS
+ruleWildcardTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0(),
+            $current);
+    }
+)	otherlv_1='?' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1());
+    }
+((	otherlv_2='extends' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); 
+	    }
+		lv_ownedExtends_3_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_3_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(	otherlv_4='super' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedSuper_5_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSuper",
+        		lv_ownedSuper_5_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleID
+entryRuleID returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIDRule()); } 
+	 iv_ruleID=ruleID 
+	 { $current=$iv_ruleID.current.getText(); }  
+	 EOF 
+;
+
+// Rule ID
+ruleID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_SIMPLE_ID_0=RULE_SIMPLE_ID    {
+		$current.merge(this_SIMPLE_ID_0);
+    }
+
+    { 
+    newLeafNode(this_SIMPLE_ID_0, grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); 
+    }
+
+    |    this_ESCAPED_ID_1=RULE_ESCAPED_ID    {
+		$current.merge(this_ESCAPED_ID_1);
+    }
+
+    { 
+    newLeafNode(this_ESCAPED_ID_1, grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleIdentifier
+entryRuleIdentifier returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIdentifierRule()); } 
+	 iv_ruleIdentifier=ruleIdentifier 
+	 { $current=$iv_ruleIdentifier.current.getText(); }  
+	 EOF 
+;
+
+// Rule Identifier
+ruleIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); 
+    }
+    this_ID_0=ruleID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleLOWER
+entryRuleLOWER returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLOWERRule()); } 
+	 iv_ruleLOWER=ruleLOWER 
+	 { $current=$iv_ruleLOWER.current.getText(); }  
+	 EOF 
+;
+
+// Rule LOWER
+ruleLOWER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+
+
+
+
+// Entry rule entryRuleUPPER
+entryRuleUPPER returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUPPERRule()); } 
+	 iv_ruleUPPER=ruleUPPER 
+	 { $current=$iv_ruleUPPER.current.getText(); }  
+	 EOF 
+;
+
+// Rule UPPER
+ruleUPPER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); 
+    }
+
+    |
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+
+
+fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');
+
+fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');
+
+RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';
+
+RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';
+
+RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';
+
+RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;
+
+RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;
+
+RULE_INT : ('0'..'9')+;
+
+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/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/internal/InternalBase.tokens b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/internal/InternalBase.tokens
index e005ad9..5d5e414 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/internal/InternalBase.tokens
+++ b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/internal/InternalBase.tokens
@@ -1,34 +1,34 @@
-'&&'=25

-'('=21

-')'=23

-'*'=17

-'+'=18

-','=22

-'..'=16

-'::'=20

-'?'=19

-'extends'=24

-'super'=26

-RULE_ANY_OTHER=15

-RULE_DOUBLE_QUOTED_STRING=9

-RULE_ESCAPED_CHARACTER=7

-RULE_ESCAPED_ID=5

-RULE_INT=6

-RULE_LETTER_CHARACTER=8

-RULE_ML_COMMENT=12

-RULE_ML_SINGLE_QUOTED_STRING=11

-RULE_SIMPLE_ID=4

-RULE_SINGLE_QUOTED_STRING=10

-RULE_SL_COMMENT=13

-RULE_WS=14

-T__16=16

-T__17=17

-T__18=18

-T__19=19

-T__20=20

-T__21=21

-T__22=22

-T__23=23

-T__24=24

-T__25=25

-T__26=26

+'&&'=25
+'('=21
+')'=23
+'*'=17
+'+'=18
+','=22
+'..'=16
+'::'=20
+'?'=19
+'extends'=24
+'super'=26
+RULE_ANY_OTHER=15
+RULE_DOUBLE_QUOTED_STRING=9
+RULE_ESCAPED_CHARACTER=7
+RULE_ESCAPED_ID=5
+RULE_INT=6
+RULE_LETTER_CHARACTER=8
+RULE_ML_COMMENT=12
+RULE_ML_SINGLE_QUOTED_STRING=11
+RULE_SIMPLE_ID=4
+RULE_SINGLE_QUOTED_STRING=10
+RULE_SL_COMMENT=13
+RULE_WS=14
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
diff --git a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/internal/InternalBaseLexer.java b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/internal/InternalBaseLexer.java
index 2c5c2f1..f061a8d 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/internal/InternalBaseLexer.java
+++ b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/parser/antlr/internal/InternalBaseLexer.java
@@ -14,8 +14,8 @@
 public class InternalBaseLexer extends Lexer {
     public static final int RULE_ML_SINGLE_QUOTED_STRING=11;
     public static final int T__26=26;
-    public static final int RULE_ESCAPED_CHARACTER=7;
     public static final int T__25=25;
+    public static final int RULE_ESCAPED_CHARACTER=7;
     public static final int T__24=24;
     public static final int T__23=23;
     public static final int T__22=22;
@@ -27,8 +27,8 @@
     public static final int RULE_DOUBLE_QUOTED_STRING=9;
     public static final int EOF=-1;
     public static final int RULE_SL_COMMENT=13;
-    public static final int RULE_ML_COMMENT=12;
     public static final int RULE_LETTER_CHARACTER=8;
+    public static final int RULE_ML_COMMENT=12;
     public static final int T__19=19;
     public static final int T__16=16;
     public static final int T__18=18;
diff --git a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/serializer/AbstractBaseSemanticSequencer.java b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/serializer/AbstractBaseSemanticSequencer.java
index f909847..298ff74 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/serializer/AbstractBaseSemanticSequencer.java
+++ b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/serializer/AbstractBaseSemanticSequencer.java
@@ -1,3 +1,6 @@
+/*
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.base.serializer;
 
 import com.google.inject.Inject;
@@ -29,22 +32,15 @@
 	@Inject
 	private BaseGrammarAccess grammarAccess;
 	
+	@Override
 	public void createSequence(EObject context, EObject semanticObject) {
 		if(semanticObject.eClass().getEPackage() == BaseCSPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
 			case BaseCSPackage.MULTIPLICITY_BOUNDS_CS:
-				if(context == grammarAccess.getMultiplicityBoundsCSRule() ||
-				   context == grammarAccess.getMultiplicityCSRule()) {
-					sequence_MultiplicityBoundsCS(context, (MultiplicityBoundsCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_MultiplicityBoundsCS(context, (MultiplicityBoundsCS) semanticObject); 
+				return; 
 			case BaseCSPackage.MULTIPLICITY_STRING_CS:
-				if(context == grammarAccess.getMultiplicityCSRule() ||
-				   context == grammarAccess.getMultiplicityStringCSRule()) {
-					sequence_MultiplicityStringCS(context, (MultiplicityStringCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_MultiplicityStringCS(context, (MultiplicityStringCS) semanticObject); 
+				return; 
 			case BaseCSPackage.PATH_ELEMENT_CS:
 				if(context == grammarAccess.getFirstPathElementCSRule()) {
 					sequence_FirstPathElementCS(context, (PathElementCS) semanticObject); 
@@ -56,50 +52,26 @@
 				}
 				else break;
 			case BaseCSPackage.PATH_NAME_CS:
-				if(context == grammarAccess.getPathNameCSRule()) {
-					sequence_PathNameCS(context, (PathNameCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PathNameCS(context, (PathNameCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TEMPLATE_BINDING_CS:
-				if(context == grammarAccess.getTemplateBindingCSRule()) {
-					sequence_TemplateBindingCS(context, (TemplateBindingCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateBindingCS(context, (TemplateBindingCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TEMPLATE_PARAMETER_SUBSTITUTION_CS:
-				if(context == grammarAccess.getTemplateParameterSubstitutionCSRule()) {
-					sequence_TemplateParameterSubstitutionCS(context, (TemplateParameterSubstitutionCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateParameterSubstitutionCS(context, (TemplateParameterSubstitutionCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TEMPLATE_SIGNATURE_CS:
-				if(context == grammarAccess.getTemplateSignatureCSRule()) {
-					sequence_TemplateSignatureCS(context, (TemplateSignatureCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateSignatureCS(context, (TemplateSignatureCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TYPE_PARAMETER_CS:
-				if(context == grammarAccess.getTypeParameterCSRule()) {
-					sequence_TypeParameterCS(context, (TypeParameterCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TypeParameterCS(context, (TypeParameterCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TYPED_TYPE_REF_CS:
-				if(context == grammarAccess.getTypeRefCSRule() ||
-				   context == grammarAccess.getTypedRefCSRule() ||
-				   context == grammarAccess.getTypedTypeRefCSRule()) {
-					sequence_TypedTypeRefCS(context, (TypedTypeRefCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TypedTypeRefCS(context, (TypedTypeRefCS) semanticObject); 
+				return; 
 			case BaseCSPackage.WILDCARD_TYPE_REF_CS:
-				if(context == grammarAccess.getTypeRefCSRule() ||
-				   context == grammarAccess.getWildcardTypeRefCSRule()) {
-					sequence_WildcardTypeRefCS(context, (WildcardTypeRefCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_WildcardTypeRefCS(context, (WildcardTypeRefCS) semanticObject); 
+				return; 
 			}
 		if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
 	}
diff --git a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/serializer/AbstractBaseSyntacticSequencer.java b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/serializer/AbstractBaseSyntacticSequencer.java
index 82eecd4..93d3fa2 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/serializer/AbstractBaseSyntacticSequencer.java
+++ b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/serializer/AbstractBaseSyntacticSequencer.java
@@ -1,3 +1,6 @@
+/*
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.base.serializer;
 
 import com.google.inject.Inject;
diff --git a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/services/BaseGrammarAccess.java b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/services/BaseGrammarAccess.java
index 97d2104..a5d1c86 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/services/BaseGrammarAccess.java
+++ b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/services/BaseGrammarAccess.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.base.services;
 
 import com.google.inject.Singleton;
@@ -29,8 +29,7 @@
 		
 		//MultiplicityBoundsCS:
 		//	lowerBound=LOWER (".." upperBound=UPPER)?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//lowerBound=LOWER (".." upperBound=UPPER)?
 		public Group getGroup() { return cGroup; }
@@ -65,8 +64,7 @@
 		
 		//MultiplicityCS:
 		//	"[" (MultiplicityBoundsCS | MultiplicityStringCS) "]";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"[" (MultiplicityBoundsCS | MultiplicityStringCS) "]"
 		public Group getGroup() { return cGroup; }
@@ -97,8 +95,7 @@
 		
 		//MultiplicityStringCS:
 		//	stringBounds=("*" | "+" | "?");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//stringBounds=("*" | "+" | "?")
 		public Assignment getStringBoundsAssignment() { return cStringBoundsAssignment; }
@@ -128,8 +125,7 @@
 		
 		//PathNameCS:
 		//	ownedPathElements+=FirstPathElementCS ("::" ownedPathElements+=NextPathElementCS)*;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedPathElements+=FirstPathElementCS ("::" ownedPathElements+=NextPathElementCS)*
 		public Group getGroup() { return cGroup; }
@@ -161,8 +157,7 @@
 		
 		//FirstPathElementCS returns PathElementCS:
 		//	referredElement=[pivot::NamedElement|UnrestrictedName];
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//referredElement=[pivot::NamedElement|UnrestrictedName]
 		public Assignment getReferredElementAssignment() { return cReferredElementAssignment; }
@@ -182,8 +177,7 @@
 		
 		//NextPathElementCS returns PathElementCS:
 		//	referredElement=[pivot::NamedElement|UnreservedName];
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//referredElement=[pivot::NamedElement|UnreservedName]
 		public Assignment getReferredElementAssignment() { return cReferredElementAssignment; }
@@ -210,8 +204,7 @@
 		//TemplateBindingCS:
 		//	"(" ownedSubstitutions+=TemplateParameterSubstitutionCS ("," ownedSubstitutions+=TemplateParameterSubstitutionCS)*
 		//	")";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"(" ownedSubstitutions+=TemplateParameterSubstitutionCS ("," ownedSubstitutions+=TemplateParameterSubstitutionCS)* ")"
 		public Group getGroup() { return cGroup; }
@@ -248,8 +241,7 @@
 		
 		//TemplateParameterSubstitutionCS:
 		//	ownedActualParameter=TypeRefCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedActualParameter=TypeRefCS
 		public Assignment getOwnedActualParameterAssignment() { return cOwnedActualParameterAssignment; }
@@ -272,8 +264,7 @@
 		
 		//TemplateSignatureCS:
 		//	"(" ownedParameters+=TypeParameterCS ("," ownedParameters+=TypeParameterCS)* ")";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"(" ownedParameters+=TypeParameterCS ("," ownedParameters+=TypeParameterCS)* ")"
 		public Group getGroup() { return cGroup; }
@@ -325,8 +316,7 @@
 		//TypeParameterCS:
 		//	name=UnrestrictedName ("extends" ownedExtends+=TypedRefCS ("&&" ownedExtends+=TypedRefCS)* | "super"
 		//	ownedSuper=TypedRefCS)?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name=UnrestrictedName ("extends" ownedExtends+=TypedRefCS ("&&" ownedExtends+=TypedRefCS)* | "super"
 		//ownedSuper=TypedRefCS)?
@@ -386,8 +376,7 @@
 		
 		//TypeRefCS:
 		//	TypedRefCS | WildcardTypeRefCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//TypedRefCS | WildcardTypeRefCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -405,8 +394,7 @@
 		
 		//TypedRefCS:
 		//	TypedTypeRefCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//TypedTypeRefCS
 		public RuleCall getTypedTypeRefCSParserRuleCall() { return cTypedTypeRefCSParserRuleCall; }
@@ -422,8 +410,7 @@
 		
 		//TypedTypeRefCS:
 		//	ownedPathName=PathNameCS ownedBinding=TemplateBindingCS?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedPathName=PathNameCS ownedBinding=TemplateBindingCS?
 		public Group getGroup() { return cGroup; }
@@ -448,8 +435,7 @@
 		//// Intended to be overridden
 		// UnreservedName returns ecore::EString:
 		//	UnrestrictedName;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameParserRuleCall() { return cUnrestrictedNameParserRuleCall; }
@@ -462,8 +448,7 @@
 		//// Intended to be overridden
 		// UnrestrictedName returns ecore::EString:
 		//	Identifier;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//Identifier
 		public RuleCall getIdentifierParserRuleCall() { return cIdentifierParserRuleCall; }
@@ -486,8 +471,7 @@
 		
 		//WildcardTypeRefCS:
 		//	{WildcardTypeRefCS} "?" ("extends" ownedExtends=TypedRefCS | "super" ownedSuper=TypedRefCS)?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{WildcardTypeRefCS} "?" ("extends" ownedExtends=TypedRefCS | "super" ownedSuper=TypedRefCS)?
 		public Group getGroup() { return cGroup; }
@@ -534,8 +518,7 @@
 		
 		//ID:
 		//	SIMPLE_ID | ESCAPED_ID;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//SIMPLE_ID | ESCAPED_ID
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -553,8 +536,7 @@
 		
 		//Identifier:
 		//	ID;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ID
 		public RuleCall getIDParserRuleCall() { return cIDParserRuleCall; }
@@ -567,8 +549,7 @@
 		/// * A lowerbounded integer is used to define the lowerbound of a collection multiplicity. The value may not be the unlimited value. * /
 		//LOWER returns ecore::EInt:
 		//	INT;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//INT
 		public RuleCall getINTTerminalRuleCall() { return cINTTerminalRuleCall; }
@@ -589,8 +570,7 @@
 		// NUMBER_LITERAL returns
 		//BigNumber:
 		//	INT;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//INT
 		public RuleCall getINTTerminalRuleCall() { return cINTTerminalRuleCall; }
@@ -602,8 +582,7 @@
 		
 		//StringLiteral:
 		//	SINGLE_QUOTED_STRING;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//SINGLE_QUOTED_STRING
 		public RuleCall getSINGLE_QUOTED_STRINGTerminalRuleCall() { return cSINGLE_QUOTED_STRINGTerminalRuleCall; }
@@ -618,8 +597,7 @@
 		/// * An upperbounded integer is used to define the upperbound of a collection multiplicity. The value may be the unlimited value. * /
 		//UPPER returns ecore::EInt:
 		//	INT | "*";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//INT | "*"
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -637,8 +615,7 @@
 		
 		//URI:
 		//	SINGLE_QUOTED_STRING;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//SINGLE_QUOTED_STRING
 		public RuleCall getSINGLE_QUOTED_STRINGTerminalRuleCall() { return cSINGLE_QUOTED_STRINGTerminalRuleCall; }
@@ -739,7 +716,6 @@
 		return grammar;
 	}
 	
-	
 	@Override
 	public Grammar getGrammar() {
 		return grammar;
diff --git a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/validation/AbstractBaseJavaValidator.java b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/validation/AbstractBaseJavaValidator.java
index 1530a5c..f16ac37 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/validation/AbstractBaseJavaValidator.java
+++ b/plugins/org.eclipse.ocl.xtext.base/src-gen/org/eclipse/ocl/xtext/base/validation/AbstractBaseJavaValidator.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.base.validation;
  
 import java.util.ArrayList;
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/AbstractCompleteOCLUiModule.java b/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/AbstractCompleteOCLUiModule.java
index 763cdb8..258995b 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/AbstractCompleteOCLUiModule.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/AbstractCompleteOCLUiModule.java
@@ -4,14 +4,13 @@
  */
 package org.eclipse.ocl.xtext.completeocl.ui;
 
-import org.eclipse.xtext.ui.DefaultUiModule;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
  * Manual modifications go to {org.eclipse.ocl.xtext.completeocl.ui.CompleteOCLUiModule}
  */
 @SuppressWarnings("all")
-public abstract class AbstractCompleteOCLUiModule extends DefaultUiModule {
+public abstract class AbstractCompleteOCLUiModule extends org.eclipse.xtext.ui.DefaultUiModule {
 	
 	public AbstractCompleteOCLUiModule(AbstractUIPlugin plugin) {
 		super(plugin);
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/AbstractCompleteOCLProposalProvider.java b/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/AbstractCompleteOCLProposalProvider.java
index 3158c15..d0b1cf8 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/AbstractCompleteOCLProposalProvider.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/AbstractCompleteOCLProposalProvider.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.completeocl.ui.contentassist;
 
 import org.eclipse.emf.ecore.EObject;
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/CompleteOCLParser.java b/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/CompleteOCLParser.java
index 54217ce..f070118 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/CompleteOCLParser.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/CompleteOCLParser.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.completeocl.ui.contentassist.antlr;
 
 import java.util.Collection;
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g b/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g
index fb101df..a17e8a7 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g
+++ b/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g
@@ -1,17611 +1,17611 @@
-/*

-* generated by Xtext

-*/

-grammar InternalCompleteOCL;

-

-options {

-	superClass=AbstractInternalContentAssistParser;

-	backtrack=true;

-	

-}

-

-@lexer::header {

-package org.eclipse.ocl.xtext.completeocl.ui.contentassist.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.ui.editor.contentassist.antlr.internal.Lexer;

-}

-

-@parser::header {

-package org.eclipse.ocl.xtext.completeocl.ui.contentassist.antlr.internal; 

-

-import java.io.InputStream;

-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.XtextTokenStream;

-import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;

-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;

-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;

-import org.eclipse.ocl.xtext.completeocl.services.CompleteOCLGrammarAccess;

-

-}

-

-@parser::members {

- 

- 	private CompleteOCLGrammarAccess grammarAccess;

- 	

-    public void setGrammarAccess(CompleteOCLGrammarAccess grammarAccess) {

-    	this.grammarAccess = grammarAccess;

-    }

-    

-    @Override

-    protected Grammar getGrammar() {

-    	return grammarAccess.getGrammar();

-    }

-    

-    @Override

-    protected String getValueForTokenName(String tokenName) {

-    	return tokenName;

-    }

-

-}

-

-

-

-

-// Entry rule entryRuleCompleteOCLDocumentCS

-entryRuleCompleteOCLDocumentCS 

-:

-{ before(grammarAccess.getCompleteOCLDocumentCSRule()); }

-	 ruleCompleteOCLDocumentCS

-{ after(grammarAccess.getCompleteOCLDocumentCSRule()); } 

-	 EOF 

-;

-

-// Rule CompleteOCLDocumentCS

-ruleCompleteOCLDocumentCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getGroup()); }

-(rule__CompleteOCLDocumentCS__Group__0)

-{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCompleteOCLNavigationOperatorName

-entryRuleCompleteOCLNavigationOperatorName 

-:

-{ before(grammarAccess.getCompleteOCLNavigationOperatorNameRule()); }

-	 ruleCompleteOCLNavigationOperatorName

-{ after(grammarAccess.getCompleteOCLNavigationOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule CompleteOCLNavigationOperatorName

-ruleCompleteOCLNavigationOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getAlternatives()); }

-(rule__CompleteOCLNavigationOperatorName__Alternatives)

-{ after(grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleClassifierContextDeclCS

-entryRuleClassifierContextDeclCS 

-:

-{ before(grammarAccess.getClassifierContextDeclCSRule()); }

-	 ruleClassifierContextDeclCS

-{ after(grammarAccess.getClassifierContextDeclCSRule()); } 

-	 EOF 

-;

-

-// Rule ClassifierContextDeclCS

-ruleClassifierContextDeclCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getGroup()); }

-(rule__ClassifierContextDeclCS__Group__0)

-{ after(grammarAccess.getClassifierContextDeclCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleConstraintCS

-entryRuleConstraintCS 

-:

-{ before(grammarAccess.getConstraintCSRule()); }

-	 ruleConstraintCS

-{ after(grammarAccess.getConstraintCSRule()); } 

-	 EOF 

-;

-

-// Rule ConstraintCS

-ruleConstraintCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getConstraintCSAccess().getGroup()); }

-(rule__ConstraintCS__Group__0)

-{ after(grammarAccess.getConstraintCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleContextDeclCS

-entryRuleContextDeclCS 

-:

-{ before(grammarAccess.getContextDeclCSRule()); }

-	 ruleContextDeclCS

-{ after(grammarAccess.getContextDeclCSRule()); } 

-	 EOF 

-;

-

-// Rule ContextDeclCS

-ruleContextDeclCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getContextDeclCSAccess().getAlternatives()); }

-(rule__ContextDeclCS__Alternatives)

-{ after(grammarAccess.getContextDeclCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleDefCS

-entryRuleDefCS 

-:

-{ before(grammarAccess.getDefCSRule()); }

-	 ruleDefCS

-{ after(grammarAccess.getDefCSRule()); } 

-	 EOF 

-;

-

-// Rule DefCS

-ruleDefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getDefCSAccess().getAlternatives()); }

-(rule__DefCS__Alternatives)

-{ after(grammarAccess.getDefCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleDefOperationCS

-entryRuleDefOperationCS 

-:

-{ before(grammarAccess.getDefOperationCSRule()); }

-	 ruleDefOperationCS

-{ after(grammarAccess.getDefOperationCSRule()); } 

-	 EOF 

-;

-

-// Rule DefOperationCS

-ruleDefOperationCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getGroup()); }

-(rule__DefOperationCS__Group__0)

-{ after(grammarAccess.getDefOperationCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleDefParameterCS

-entryRuleDefParameterCS 

-:

-{ before(grammarAccess.getDefParameterCSRule()); }

-	 ruleDefParameterCS

-{ after(grammarAccess.getDefParameterCSRule()); } 

-	 EOF 

-;

-

-// Rule DefParameterCS

-ruleDefParameterCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getDefParameterCSAccess().getGroup()); }

-(rule__DefParameterCS__Group__0)

-{ after(grammarAccess.getDefParameterCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleDefPropertyCS

-entryRuleDefPropertyCS 

-:

-{ before(grammarAccess.getDefPropertyCSRule()); }

-	 ruleDefPropertyCS

-{ after(grammarAccess.getDefPropertyCSRule()); } 

-	 EOF 

-;

-

-// Rule DefPropertyCS

-ruleDefPropertyCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getGroup()); }

-(rule__DefPropertyCS__Group__0)

-{ after(grammarAccess.getDefPropertyCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleImportCS

-entryRuleImportCS 

-:

-{ before(grammarAccess.getImportCSRule()); }

-	 ruleImportCS

-{ after(grammarAccess.getImportCSRule()); } 

-	 EOF 

-;

-

-// Rule ImportCS

-ruleImportCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getImportCSAccess().getGroup()); }

-(rule__ImportCS__Group__0)

-{ after(grammarAccess.getImportCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleIncludeCS

-entryRuleIncludeCS 

-:

-{ before(grammarAccess.getIncludeCSRule()); }

-	 ruleIncludeCS

-{ after(grammarAccess.getIncludeCSRule()); } 

-	 EOF 

-;

-

-// Rule IncludeCS

-ruleIncludeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIncludeCSAccess().getGroup()); }

-(rule__IncludeCS__Group__0)

-{ after(grammarAccess.getIncludeCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLibraryCS

-entryRuleLibraryCS 

-:

-{ before(grammarAccess.getLibraryCSRule()); }

-	 ruleLibraryCS

-{ after(grammarAccess.getLibraryCSRule()); } 

-	 EOF 

-;

-

-// Rule LibraryCS

-ruleLibraryCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLibraryCSAccess().getGroup()); }

-(rule__LibraryCS__Group__0)

-{ after(grammarAccess.getLibraryCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleOperationContextDeclCS

-entryRuleOperationContextDeclCS 

-:

-{ before(grammarAccess.getOperationContextDeclCSRule()); }

-	 ruleOperationContextDeclCS

-{ after(grammarAccess.getOperationContextDeclCSRule()); } 

-	 EOF 

-;

-

-// Rule OperationContextDeclCS

-ruleOperationContextDeclCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getGroup()); }

-(rule__OperationContextDeclCS__Group__0)

-{ after(grammarAccess.getOperationContextDeclCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePackageDeclarationCS

-entryRulePackageDeclarationCS 

-:

-{ before(grammarAccess.getPackageDeclarationCSRule()); }

-	 rulePackageDeclarationCS

-{ after(grammarAccess.getPackageDeclarationCSRule()); } 

-	 EOF 

-;

-

-// Rule PackageDeclarationCS

-rulePackageDeclarationCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPackageDeclarationCSAccess().getGroup()); }

-(rule__PackageDeclarationCS__Group__0)

-{ after(grammarAccess.getPackageDeclarationCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleParameterCS

-entryRuleParameterCS 

-:

-{ before(grammarAccess.getParameterCSRule()); }

-	 ruleParameterCS

-{ after(grammarAccess.getParameterCSRule()); } 

-	 EOF 

-;

-

-// Rule ParameterCS

-ruleParameterCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getParameterCSAccess().getGroup()); }

-(rule__ParameterCS__Group__0)

-{ after(grammarAccess.getParameterCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePropertyContextDeclCS

-entryRulePropertyContextDeclCS 

-:

-{ before(grammarAccess.getPropertyContextDeclCSRule()); }

-	 rulePropertyContextDeclCS

-{ after(grammarAccess.getPropertyContextDeclCSRule()); } 

-	 EOF 

-;

-

-// Rule PropertyContextDeclCS

-rulePropertyContextDeclCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getGroup()); }

-(rule__PropertyContextDeclCS__Group__0)

-{ after(grammarAccess.getPropertyContextDeclCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleSpecificationCS

-entryRuleSpecificationCS 

-:

-{ before(grammarAccess.getSpecificationCSRule()); }

-	 ruleSpecificationCS

-{ after(grammarAccess.getSpecificationCSRule()); } 

-	 EOF 

-;

-

-// Rule SpecificationCS

-ruleSpecificationCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getSpecificationCSAccess().getAlternatives()); }

-(rule__SpecificationCS__Alternatives)

-{ after(grammarAccess.getSpecificationCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTemplateSignatureCS

-entryRuleTemplateSignatureCS 

-:

-{ before(grammarAccess.getTemplateSignatureCSRule()); }

-	 ruleTemplateSignatureCS

-{ after(grammarAccess.getTemplateSignatureCSRule()); } 

-	 EOF 

-;

-

-// Rule TemplateSignatureCS

-ruleTemplateSignatureCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getAlternatives()); }

-(rule__TemplateSignatureCS__Alternatives)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypedRefCS

-entryRuleTypedRefCS 

-:

-{ before(grammarAccess.getTypedRefCSRule()); }

-	 ruleTypedRefCS

-{ after(grammarAccess.getTypedRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypedRefCS

-ruleTypedRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypedRefCSAccess().getAlternatives()); }

-(rule__TypedRefCS__Alternatives)

-{ after(grammarAccess.getTypedRefCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnrestrictedName

-entryRuleUnrestrictedName 

-:

-{ before(grammarAccess.getUnrestrictedNameRule()); }

-	 ruleUnrestrictedName

-{ after(grammarAccess.getUnrestrictedNameRule()); } 

-	 EOF 

-;

-

-// Rule UnrestrictedName

-ruleUnrestrictedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnrestrictedNameAccess().getAlternatives()); }

-(rule__UnrestrictedName__Alternatives)

-{ after(grammarAccess.getUnrestrictedNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingArgExpCS

-entryRuleNavigatingArgExpCS 

-:

-{ before(grammarAccess.getNavigatingArgExpCSRule()); }

-	 ruleNavigatingArgExpCS

-{ after(grammarAccess.getNavigatingArgExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingArgExpCS

-ruleNavigatingArgExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingArgExpCSAccess().getAlternatives()); }

-(rule__NavigatingArgExpCS__Alternatives)

-{ after(grammarAccess.getNavigatingArgExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigationOperatorName

-entryRuleNavigationOperatorName 

-:

-{ before(grammarAccess.getNavigationOperatorNameRule()); }

-	 ruleNavigationOperatorName

-{ after(grammarAccess.getNavigationOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule NavigationOperatorName

-ruleNavigationOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigationOperatorNameAccess().getAlternatives()); }

-(rule__NavigationOperatorName__Alternatives)

-{ after(grammarAccess.getNavigationOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimitiveTypeIdentifier

-entryRulePrimitiveTypeIdentifier 

-:

-{ before(grammarAccess.getPrimitiveTypeIdentifierRule()); }

-	 rulePrimitiveTypeIdentifier

-{ after(grammarAccess.getPrimitiveTypeIdentifierRule()); } 

-	 EOF 

-;

-

-// Rule PrimitiveTypeIdentifier

-rulePrimitiveTypeIdentifier

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }

-(rule__PrimitiveTypeIdentifier__Alternatives)

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnaryOperatorName

-entryRuleEssentialOCLUnaryOperatorName 

-:

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); }

-	 ruleEssentialOCLUnaryOperatorName

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLUnaryOperatorName

-ruleEssentialOCLUnaryOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }

-(rule__EssentialOCLUnaryOperatorName__Alternatives)

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLInfixOperatorName

-entryRuleEssentialOCLInfixOperatorName 

-:

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameRule()); }

-	 ruleEssentialOCLInfixOperatorName

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLInfixOperatorName

-ruleEssentialOCLInfixOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }

-(rule__EssentialOCLInfixOperatorName__Alternatives)

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLNavigationOperatorName

-entryRuleEssentialOCLNavigationOperatorName 

-:

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); }

-	 ruleEssentialOCLNavigationOperatorName

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLNavigationOperatorName

-ruleEssentialOCLNavigationOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }

-(rule__EssentialOCLNavigationOperatorName__Alternatives)

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleBinaryOperatorName

-entryRuleBinaryOperatorName 

-:

-{ before(grammarAccess.getBinaryOperatorNameRule()); }

-	 ruleBinaryOperatorName

-{ after(grammarAccess.getBinaryOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule BinaryOperatorName

-ruleBinaryOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }

-(rule__BinaryOperatorName__Alternatives)

-{ after(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleInfixOperatorName

-entryRuleInfixOperatorName 

-:

-{ before(grammarAccess.getInfixOperatorNameRule()); }

-	 ruleInfixOperatorName

-{ after(grammarAccess.getInfixOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule InfixOperatorName

-ruleInfixOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }

-	ruleEssentialOCLInfixOperatorName

-{ after(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnaryOperatorName

-entryRuleUnaryOperatorName 

-:

-{ before(grammarAccess.getUnaryOperatorNameRule()); }

-	 ruleUnaryOperatorName

-{ after(grammarAccess.getUnaryOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule UnaryOperatorName

-ruleUnaryOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }

-	ruleEssentialOCLUnaryOperatorName

-{ after(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLUnrestrictedName

-entryRuleEssentialOCLUnrestrictedName 

-:

-{ before(grammarAccess.getEssentialOCLUnrestrictedNameRule()); }

-	 ruleEssentialOCLUnrestrictedName

-{ after(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLUnrestrictedName

-ruleEssentialOCLUnrestrictedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }

-	ruleIdentifier

-{ after(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLUnreservedName

-entryRuleEssentialOCLUnreservedName 

-:

-{ before(grammarAccess.getEssentialOCLUnreservedNameRule()); }

-	 ruleEssentialOCLUnreservedName

-{ after(grammarAccess.getEssentialOCLUnreservedNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLUnreservedName

-ruleEssentialOCLUnreservedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }

-(rule__EssentialOCLUnreservedName__Alternatives)

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnreservedName

-entryRuleUnreservedName 

-:

-{ before(grammarAccess.getUnreservedNameRule()); }

-	 ruleUnreservedName

-{ after(grammarAccess.getUnreservedNameRule()); } 

-	 EOF 

-;

-

-// Rule UnreservedName

-ruleUnreservedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }

-	ruleEssentialOCLUnreservedName

-{ after(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleURIPathNameCS

-entryRuleURIPathNameCS 

-:

-{ before(grammarAccess.getURIPathNameCSRule()); }

-	 ruleURIPathNameCS

-{ after(grammarAccess.getURIPathNameCSRule()); } 

-	 EOF 

-;

-

-// Rule URIPathNameCS

-ruleURIPathNameCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getURIPathNameCSAccess().getGroup()); }

-(rule__URIPathNameCS__Group__0)

-{ after(grammarAccess.getURIPathNameCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleURIFirstPathElementCS

-entryRuleURIFirstPathElementCS 

-:

-{ before(grammarAccess.getURIFirstPathElementCSRule()); }

-	 ruleURIFirstPathElementCS

-{ after(grammarAccess.getURIFirstPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule URIFirstPathElementCS

-ruleURIFirstPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }

-(rule__URIFirstPathElementCS__Alternatives)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimitiveTypeCS

-entryRulePrimitiveTypeCS 

-:

-{ before(grammarAccess.getPrimitiveTypeCSRule()); }

-	 rulePrimitiveTypeCS

-{ after(grammarAccess.getPrimitiveTypeCSRule()); } 

-	 EOF 

-;

-

-// Rule PrimitiveTypeCS

-rulePrimitiveTypeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }

-(rule__PrimitiveTypeCS__NameAssignment)

-{ after(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionTypeIdentifier

-entryRuleCollectionTypeIdentifier 

-:

-{ before(grammarAccess.getCollectionTypeIdentifierRule()); }

-	 ruleCollectionTypeIdentifier

-{ after(grammarAccess.getCollectionTypeIdentifierRule()); } 

-	 EOF 

-;

-

-// Rule CollectionTypeIdentifier

-ruleCollectionTypeIdentifier

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }

-(rule__CollectionTypeIdentifier__Alternatives)

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionTypeCS

-entryRuleCollectionTypeCS 

-:

-{ before(grammarAccess.getCollectionTypeCSRule()); }

-	 ruleCollectionTypeCS

-{ after(grammarAccess.getCollectionTypeCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionTypeCS

-ruleCollectionTypeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getGroup()); }

-(rule__CollectionTypeCS__Group__0)

-{ after(grammarAccess.getCollectionTypeCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTupleTypeCS

-entryRuleTupleTypeCS 

-:

-{ before(grammarAccess.getTupleTypeCSRule()); }

-	 ruleTupleTypeCS

-{ after(grammarAccess.getTupleTypeCSRule()); } 

-	 EOF 

-;

-

-// Rule TupleTypeCS

-ruleTupleTypeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup()); }

-(rule__TupleTypeCS__Group__0)

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTuplePartCS

-entryRuleTuplePartCS 

-:

-{ before(grammarAccess.getTuplePartCSRule()); }

-	 ruleTuplePartCS

-{ after(grammarAccess.getTuplePartCSRule()); } 

-	 EOF 

-;

-

-// Rule TuplePartCS

-ruleTuplePartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getGroup()); }

-(rule__TuplePartCS__Group__0)

-{ after(grammarAccess.getTuplePartCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionLiteralExpCS

-entryRuleCollectionLiteralExpCS 

-:

-{ before(grammarAccess.getCollectionLiteralExpCSRule()); }

-	 ruleCollectionLiteralExpCS

-{ after(grammarAccess.getCollectionLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionLiteralExpCS

-ruleCollectionLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }

-(rule__CollectionLiteralExpCS__Group__0)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionLiteralPartCS

-entryRuleCollectionLiteralPartCS 

-:

-{ before(grammarAccess.getCollectionLiteralPartCSRule()); }

-	 ruleCollectionLiteralPartCS

-{ after(grammarAccess.getCollectionLiteralPartCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionLiteralPartCS

-ruleCollectionLiteralPartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }

-(rule__CollectionLiteralPartCS__Alternatives)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionPatternCS

-entryRuleCollectionPatternCS 

-:

-{ before(grammarAccess.getCollectionPatternCSRule()); }

-	 ruleCollectionPatternCS

-{ after(grammarAccess.getCollectionPatternCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionPatternCS

-ruleCollectionPatternCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup()); }

-(rule__CollectionPatternCS__Group__0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleConstructorPartCS

-entryRuleConstructorPartCS 

-:

-{ before(grammarAccess.getConstructorPartCSRule()); }

-	 ruleConstructorPartCS

-{ after(grammarAccess.getConstructorPartCSRule()); } 

-	 EOF 

-;

-

-// Rule ConstructorPartCS

-ruleConstructorPartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getGroup()); }

-(rule__ConstructorPartCS__Group__0)

-{ after(grammarAccess.getConstructorPartCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePatternExpCS

-entryRulePatternExpCS 

-:

-{ before(grammarAccess.getPatternExpCSRule()); }

-	 rulePatternExpCS

-{ after(grammarAccess.getPatternExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PatternExpCS

-rulePatternExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getGroup()); }

-(rule__PatternExpCS__Group__0)

-{ after(grammarAccess.getPatternExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLambdaLiteralExpCS

-entryRuleLambdaLiteralExpCS 

-:

-{ before(grammarAccess.getLambdaLiteralExpCSRule()); }

-	 ruleLambdaLiteralExpCS

-{ after(grammarAccess.getLambdaLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule LambdaLiteralExpCS

-ruleLambdaLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }

-(rule__LambdaLiteralExpCS__Group__0)

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimitiveLiteralExpCS

-entryRulePrimitiveLiteralExpCS 

-:

-{ before(grammarAccess.getPrimitiveLiteralExpCSRule()); }

-	 rulePrimitiveLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrimitiveLiteralExpCS

-rulePrimitiveLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }

-(rule__PrimitiveLiteralExpCS__Alternatives)

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTupleLiteralExpCS

-entryRuleTupleLiteralExpCS 

-:

-{ before(grammarAccess.getTupleLiteralExpCSRule()); }

-	 ruleTupleLiteralExpCS

-{ after(grammarAccess.getTupleLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TupleLiteralExpCS

-ruleTupleLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }

-(rule__TupleLiteralExpCS__Group__0)

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTupleLiteralPartCS

-entryRuleTupleLiteralPartCS 

-:

-{ before(grammarAccess.getTupleLiteralPartCSRule()); }

-	 ruleTupleLiteralPartCS

-{ after(grammarAccess.getTupleLiteralPartCSRule()); } 

-	 EOF 

-;

-

-// Rule TupleLiteralPartCS

-ruleTupleLiteralPartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }

-(rule__TupleLiteralPartCS__Group__0)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNumberLiteralExpCS

-entryRuleNumberLiteralExpCS 

-:

-{ before(grammarAccess.getNumberLiteralExpCSRule()); }

-	 ruleNumberLiteralExpCS

-{ after(grammarAccess.getNumberLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NumberLiteralExpCS

-ruleNumberLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }

-(rule__NumberLiteralExpCS__SymbolAssignment)

-{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleStringLiteralExpCS

-entryRuleStringLiteralExpCS 

-:

-{ before(grammarAccess.getStringLiteralExpCSRule()); }

-	 ruleStringLiteralExpCS

-{ after(grammarAccess.getStringLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule StringLiteralExpCS

-ruleStringLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-(

-{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-(rule__StringLiteralExpCS__SegmentsAssignment)

-{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-)

-(

-{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-(rule__StringLiteralExpCS__SegmentsAssignment)*

-{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-)

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleBooleanLiteralExpCS

-entryRuleBooleanLiteralExpCS 

-:

-{ before(grammarAccess.getBooleanLiteralExpCSRule()); }

-	 ruleBooleanLiteralExpCS

-{ after(grammarAccess.getBooleanLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule BooleanLiteralExpCS

-ruleBooleanLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }

-(rule__BooleanLiteralExpCS__Alternatives)

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnlimitedNaturalLiteralExpCS

-entryRuleUnlimitedNaturalLiteralExpCS 

-:

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }

-	 ruleUnlimitedNaturalLiteralExpCS

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule UnlimitedNaturalLiteralExpCS

-ruleUnlimitedNaturalLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }

-(rule__UnlimitedNaturalLiteralExpCS__Group__0)

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleInvalidLiteralExpCS

-entryRuleInvalidLiteralExpCS 

-:

-{ before(grammarAccess.getInvalidLiteralExpCSRule()); }

-	 ruleInvalidLiteralExpCS

-{ after(grammarAccess.getInvalidLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule InvalidLiteralExpCS

-ruleInvalidLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }

-(rule__InvalidLiteralExpCS__Group__0)

-{ after(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNullLiteralExpCS

-entryRuleNullLiteralExpCS 

-:

-{ before(grammarAccess.getNullLiteralExpCSRule()); }

-	 ruleNullLiteralExpCS

-{ after(grammarAccess.getNullLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NullLiteralExpCS

-ruleNullLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }

-(rule__NullLiteralExpCS__Group__0)

-{ after(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeLiteralCS

-entryRuleTypeLiteralCS 

-:

-{ before(grammarAccess.getTypeLiteralCSRule()); }

-	 ruleTypeLiteralCS

-{ after(grammarAccess.getTypeLiteralCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeLiteralCS

-ruleTypeLiteralCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }

-(rule__TypeLiteralCS__Alternatives)

-{ after(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeLiteralWithMultiplicityCS

-entryRuleTypeLiteralWithMultiplicityCS 

-:

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }

-	 ruleTypeLiteralWithMultiplicityCS

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeLiteralWithMultiplicityCS

-ruleTypeLiteralWithMultiplicityCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }

-(rule__TypeLiteralWithMultiplicityCS__Group__0)

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeLiteralExpCS

-entryRuleTypeLiteralExpCS 

-:

-{ before(grammarAccess.getTypeLiteralExpCSRule()); }

-	 ruleTypeLiteralExpCS

-{ after(grammarAccess.getTypeLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeLiteralExpCS

-ruleTypeLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }

-(rule__TypeLiteralExpCS__OwnedTypeAssignment)

-{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeNameExpCS

-entryRuleTypeNameExpCS 

-:

-{ before(grammarAccess.getTypeNameExpCSRule()); }

-	 ruleTypeNameExpCS

-{ after(grammarAccess.getTypeNameExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeNameExpCS

-ruleTypeNameExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getGroup()); }

-(rule__TypeNameExpCS__Group__0)

-{ after(grammarAccess.getTypeNameExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeExpCS

-entryRuleTypeExpCS 

-:

-{ before(grammarAccess.getTypeExpCSRule()); }

-	 ruleTypeExpCS

-{ after(grammarAccess.getTypeExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeExpCS

-ruleTypeExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getGroup()); }

-(rule__TypeExpCS__Group__0)

-{ after(grammarAccess.getTypeExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleExpCS

-entryRuleExpCS 

-:

-{ before(grammarAccess.getExpCSRule()); }

-	 ruleExpCS

-{ after(grammarAccess.getExpCSRule()); } 

-	 EOF 

-;

-

-// Rule ExpCS

-ruleExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getExpCSAccess().getAlternatives()); }

-(rule__ExpCS__Alternatives)

-{ after(grammarAccess.getExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrefixedLetExpCS

-entryRulePrefixedLetExpCS 

-:

-{ before(grammarAccess.getPrefixedLetExpCSRule()); }

-	 rulePrefixedLetExpCS

-{ after(grammarAccess.getPrefixedLetExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrefixedLetExpCS

-rulePrefixedLetExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }

-(rule__PrefixedLetExpCS__Alternatives)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrefixedPrimaryExpCS

-entryRulePrefixedPrimaryExpCS 

-:

-{ before(grammarAccess.getPrefixedPrimaryExpCSRule()); }

-	 rulePrefixedPrimaryExpCS

-{ after(grammarAccess.getPrefixedPrimaryExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrefixedPrimaryExpCS

-rulePrefixedPrimaryExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }

-(rule__PrefixedPrimaryExpCS__Alternatives)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimaryExpCS

-entryRulePrimaryExpCS 

-:

-{ before(grammarAccess.getPrimaryExpCSRule()); }

-	 rulePrimaryExpCS

-{ after(grammarAccess.getPrimaryExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrimaryExpCS

-rulePrimaryExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }

-(rule__PrimaryExpCS__Alternatives)

-{ after(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNameExpCS

-entryRuleNameExpCS 

-:

-{ before(grammarAccess.getNameExpCSRule()); }

-	 ruleNameExpCS

-{ after(grammarAccess.getNameExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NameExpCS

-ruleNameExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNameExpCSAccess().getGroup()); }

-(rule__NameExpCS__Group__0)

-{ after(grammarAccess.getNameExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCurlyBracketedClauseCS

-entryRuleCurlyBracketedClauseCS 

-:

-{ before(grammarAccess.getCurlyBracketedClauseCSRule()); }

-	 ruleCurlyBracketedClauseCS

-{ after(grammarAccess.getCurlyBracketedClauseCSRule()); } 

-	 EOF 

-;

-

-// Rule CurlyBracketedClauseCS

-ruleCurlyBracketedClauseCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }

-(rule__CurlyBracketedClauseCS__Group__0)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleRoundBracketedClauseCS

-entryRuleRoundBracketedClauseCS 

-:

-{ before(grammarAccess.getRoundBracketedClauseCSRule()); }

-	 ruleRoundBracketedClauseCS

-{ after(grammarAccess.getRoundBracketedClauseCSRule()); } 

-	 EOF 

-;

-

-// Rule RoundBracketedClauseCS

-ruleRoundBracketedClauseCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }

-(rule__RoundBracketedClauseCS__Group__0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleSquareBracketedClauseCS

-entryRuleSquareBracketedClauseCS 

-:

-{ before(grammarAccess.getSquareBracketedClauseCSRule()); }

-	 ruleSquareBracketedClauseCS

-{ after(grammarAccess.getSquareBracketedClauseCSRule()); } 

-	 EOF 

-;

-

-// Rule SquareBracketedClauseCS

-ruleSquareBracketedClauseCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }

-(rule__SquareBracketedClauseCS__Group__0)

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingArgCS

-entryRuleNavigatingArgCS 

-:

-{ before(grammarAccess.getNavigatingArgCSRule()); }

-	 ruleNavigatingArgCS

-{ after(grammarAccess.getNavigatingArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingArgCS

-ruleNavigatingArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }

-(rule__NavigatingArgCS__Alternatives)

-{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingBarArgCS

-entryRuleNavigatingBarArgCS 

-:

-{ before(grammarAccess.getNavigatingBarArgCSRule()); }

-	 ruleNavigatingBarArgCS

-{ after(grammarAccess.getNavigatingBarArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingBarArgCS

-ruleNavigatingBarArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }

-(rule__NavigatingBarArgCS__Group__0)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingCommaArgCS

-entryRuleNavigatingCommaArgCS 

-:

-{ before(grammarAccess.getNavigatingCommaArgCSRule()); }

-	 ruleNavigatingCommaArgCS

-{ after(grammarAccess.getNavigatingCommaArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingCommaArgCS

-ruleNavigatingCommaArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }

-(rule__NavigatingCommaArgCS__Group__0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingSemiArgCS

-entryRuleNavigatingSemiArgCS 

-:

-{ before(grammarAccess.getNavigatingSemiArgCSRule()); }

-	 ruleNavigatingSemiArgCS

-{ after(grammarAccess.getNavigatingSemiArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingSemiArgCS

-ruleNavigatingSemiArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }

-(rule__NavigatingSemiArgCS__Group__0)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleIfExpCS

-entryRuleIfExpCS 

-:

-{ before(grammarAccess.getIfExpCSRule()); }

-	 ruleIfExpCS

-{ after(grammarAccess.getIfExpCSRule()); } 

-	 EOF 

-;

-

-// Rule IfExpCS

-ruleIfExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIfExpCSAccess().getGroup()); }

-(rule__IfExpCS__Group__0)

-{ after(grammarAccess.getIfExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleElseIfThenExpCS

-entryRuleElseIfThenExpCS 

-:

-{ before(grammarAccess.getElseIfThenExpCSRule()); }

-	 ruleElseIfThenExpCS

-{ after(grammarAccess.getElseIfThenExpCSRule()); } 

-	 EOF 

-;

-

-// Rule ElseIfThenExpCS

-ruleElseIfThenExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }

-(rule__ElseIfThenExpCS__Group__0)

-{ after(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLetExpCS

-entryRuleLetExpCS 

-:

-{ before(grammarAccess.getLetExpCSRule()); }

-	 ruleLetExpCS

-{ after(grammarAccess.getLetExpCSRule()); } 

-	 EOF 

-;

-

-// Rule LetExpCS

-ruleLetExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLetExpCSAccess().getGroup()); }

-(rule__LetExpCS__Group__0)

-{ after(grammarAccess.getLetExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLetVariableCS

-entryRuleLetVariableCS 

-:

-{ before(grammarAccess.getLetVariableCSRule()); }

-	 ruleLetVariableCS

-{ after(grammarAccess.getLetVariableCSRule()); } 

-	 EOF 

-;

-

-// Rule LetVariableCS

-ruleLetVariableCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getGroup()); }

-(rule__LetVariableCS__Group__0)

-{ after(grammarAccess.getLetVariableCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNestedExpCS

-entryRuleNestedExpCS 

-:

-{ before(grammarAccess.getNestedExpCSRule()); }

-	 ruleNestedExpCS

-{ after(grammarAccess.getNestedExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NestedExpCS

-ruleNestedExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getGroup()); }

-(rule__NestedExpCS__Group__0)

-{ after(grammarAccess.getNestedExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleSelfExpCS

-entryRuleSelfExpCS 

-:

-{ before(grammarAccess.getSelfExpCSRule()); }

-	 ruleSelfExpCS

-{ after(grammarAccess.getSelfExpCSRule()); } 

-	 EOF 

-;

-

-// Rule SelfExpCS

-ruleSelfExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getSelfExpCSAccess().getGroup()); }

-(rule__SelfExpCS__Group__0)

-{ after(grammarAccess.getSelfExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleMultiplicityBoundsCS

-entryRuleMultiplicityBoundsCS 

-:

-{ before(grammarAccess.getMultiplicityBoundsCSRule()); }

-	 ruleMultiplicityBoundsCS

-{ after(grammarAccess.getMultiplicityBoundsCSRule()); } 

-	 EOF 

-;

-

-// Rule MultiplicityBoundsCS

-ruleMultiplicityBoundsCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }

-(rule__MultiplicityBoundsCS__Group__0)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleMultiplicityCS

-entryRuleMultiplicityCS 

-:

-{ before(grammarAccess.getMultiplicityCSRule()); }

-	 ruleMultiplicityCS

-{ after(grammarAccess.getMultiplicityCSRule()); } 

-	 EOF 

-;

-

-// Rule MultiplicityCS

-ruleMultiplicityCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getGroup()); }

-(rule__MultiplicityCS__Group__0)

-{ after(grammarAccess.getMultiplicityCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleMultiplicityStringCS

-entryRuleMultiplicityStringCS 

-:

-{ before(grammarAccess.getMultiplicityStringCSRule()); }

-	 ruleMultiplicityStringCS

-{ after(grammarAccess.getMultiplicityStringCSRule()); } 

-	 EOF 

-;

-

-// Rule MultiplicityStringCS

-ruleMultiplicityStringCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }

-(rule__MultiplicityStringCS__StringBoundsAssignment)

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePathNameCS

-entryRulePathNameCS 

-:

-{ before(grammarAccess.getPathNameCSRule()); }

-	 rulePathNameCS

-{ after(grammarAccess.getPathNameCSRule()); } 

-	 EOF 

-;

-

-// Rule PathNameCS

-rulePathNameCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPathNameCSAccess().getGroup()); }

-(rule__PathNameCS__Group__0)

-{ after(grammarAccess.getPathNameCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleFirstPathElementCS

-entryRuleFirstPathElementCS 

-:

-{ before(grammarAccess.getFirstPathElementCSRule()); }

-	 ruleFirstPathElementCS

-{ after(grammarAccess.getFirstPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule FirstPathElementCS

-ruleFirstPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }

-(rule__FirstPathElementCS__ReferredElementAssignment)

-{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNextPathElementCS

-entryRuleNextPathElementCS 

-:

-{ before(grammarAccess.getNextPathElementCSRule()); }

-	 ruleNextPathElementCS

-{ after(grammarAccess.getNextPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule NextPathElementCS

-ruleNextPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }

-(rule__NextPathElementCS__ReferredElementAssignment)

-{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTemplateBindingCS

-entryRuleTemplateBindingCS 

-:

-{ before(grammarAccess.getTemplateBindingCSRule()); }

-	 ruleTemplateBindingCS

-{ after(grammarAccess.getTemplateBindingCSRule()); } 

-	 EOF 

-;

-

-// Rule TemplateBindingCS

-ruleTemplateBindingCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getGroup()); }

-(rule__TemplateBindingCS__Group__0)

-{ after(grammarAccess.getTemplateBindingCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTemplateParameterSubstitutionCS

-entryRuleTemplateParameterSubstitutionCS 

-:

-{ before(grammarAccess.getTemplateParameterSubstitutionCSRule()); }

-	 ruleTemplateParameterSubstitutionCS

-{ after(grammarAccess.getTemplateParameterSubstitutionCSRule()); } 

-	 EOF 

-;

-

-// Rule TemplateParameterSubstitutionCS

-ruleTemplateParameterSubstitutionCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }

-(rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment)

-{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeParameterCS

-entryRuleTypeParameterCS 

-:

-{ before(grammarAccess.getTypeParameterCSRule()); }

-	 ruleTypeParameterCS

-{ after(grammarAccess.getTypeParameterCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeParameterCS

-ruleTypeParameterCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup()); }

-(rule__TypeParameterCS__Group__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeRefCS

-entryRuleTypeRefCS 

-:

-{ before(grammarAccess.getTypeRefCSRule()); }

-	 ruleTypeRefCS

-{ after(grammarAccess.getTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeRefCS

-ruleTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeRefCSAccess().getAlternatives()); }

-(rule__TypeRefCS__Alternatives)

-{ after(grammarAccess.getTypeRefCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypedTypeRefCS

-entryRuleTypedTypeRefCS 

-:

-{ before(grammarAccess.getTypedTypeRefCSRule()); }

-	 ruleTypedTypeRefCS

-{ after(grammarAccess.getTypedTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypedTypeRefCS

-ruleTypedTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }

-(rule__TypedTypeRefCS__Group__0)

-{ after(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleWildcardTypeRefCS

-entryRuleWildcardTypeRefCS 

-:

-{ before(grammarAccess.getWildcardTypeRefCSRule()); }

-	 ruleWildcardTypeRefCS

-{ after(grammarAccess.getWildcardTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule WildcardTypeRefCS

-ruleWildcardTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }

-(rule__WildcardTypeRefCS__Group__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleID

-entryRuleID 

-:

-{ before(grammarAccess.getIDRule()); }

-	 ruleID

-{ after(grammarAccess.getIDRule()); } 

-	 EOF 

-;

-

-// Rule ID

-ruleID

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIDAccess().getAlternatives()); }

-(rule__ID__Alternatives)

-{ after(grammarAccess.getIDAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleIdentifier

-entryRuleIdentifier 

-:

-{ before(grammarAccess.getIdentifierRule()); }

-	 ruleIdentifier

-{ after(grammarAccess.getIdentifierRule()); } 

-	 EOF 

-;

-

-// Rule Identifier

-ruleIdentifier

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }

-	ruleID

-{ after(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLOWER

-entryRuleLOWER 

-:

-{ before(grammarAccess.getLOWERRule()); }

-	 ruleLOWER

-{ after(grammarAccess.getLOWERRule()); } 

-	 EOF 

-;

-

-// Rule LOWER

-ruleLOWER

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }

-	RULE_INT

-{ after(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNUMBER_LITERAL

-entryRuleNUMBER_LITERAL 

-:

-{ before(grammarAccess.getNUMBER_LITERALRule()); }

-	 ruleNUMBER_LITERAL

-{ after(grammarAccess.getNUMBER_LITERALRule()); } 

-	 EOF 

-;

-

-// Rule NUMBER_LITERAL

-ruleNUMBER_LITERAL

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }

-	RULE_INT

-{ after(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleStringLiteral

-entryRuleStringLiteral 

-:

-{ before(grammarAccess.getStringLiteralRule()); }

-	 ruleStringLiteral

-{ after(grammarAccess.getStringLiteralRule()); } 

-	 EOF 

-;

-

-// Rule StringLiteral

-ruleStringLiteral

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-	RULE_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUPPER

-entryRuleUPPER 

-:

-{ before(grammarAccess.getUPPERRule()); }

-	 ruleUPPER

-{ after(grammarAccess.getUPPERRule()); } 

-	 EOF 

-;

-

-// Rule UPPER

-ruleUPPER

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUPPERAccess().getAlternatives()); }

-(rule__UPPER__Alternatives)

-{ after(grammarAccess.getUPPERAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleURI

-entryRuleURI 

-:

-{ before(grammarAccess.getURIRule()); }

-	 ruleURI

-{ after(grammarAccess.getURIRule()); } 

-	 EOF 

-;

-

-// Rule URI

-ruleURI

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-	RULE_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-rule__CompleteOCLDocumentCS__Alternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedImportsAssignment_0_0()); }

-(rule__CompleteOCLDocumentCS__OwnedImportsAssignment_0_0)

-{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedImportsAssignment_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedIncludesAssignment_0_1()); }

-(rule__CompleteOCLDocumentCS__OwnedIncludesAssignment_0_1)

-{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedIncludesAssignment_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedLibrariesAssignment_0_2()); }

-(rule__CompleteOCLDocumentCS__OwnedLibrariesAssignment_0_2)

-{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedLibrariesAssignment_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CompleteOCLDocumentCS__Alternatives_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedPackagesAssignment_1_0()); }

-(rule__CompleteOCLDocumentCS__OwnedPackagesAssignment_1_0)

-{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedPackagesAssignment_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedContextsAssignment_1_1()); }

-(rule__CompleteOCLDocumentCS__OwnedContextsAssignment_1_1)

-{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedContextsAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CompleteOCLNavigationOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getCircumflexAccentKeyword_0()); }

-

-	'^' 

-

-{ after(grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getCircumflexAccentKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getCircumflexAccentCircumflexAccentKeyword_1()); }

-

-	'^^' 

-

-{ after(grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getCircumflexAccentCircumflexAccentKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ClassifierContextDeclCS__Alternatives_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getGroup_4_0()); }

-(rule__ClassifierContextDeclCS__Group_4_0__0)

-{ after(grammarAccess.getClassifierContextDeclCSAccess().getGroup_4_0()); }

-)

-

-    |(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedDefinitionsAssignment_4_1()); }

-(rule__ClassifierContextDeclCS__OwnedDefinitionsAssignment_4_1)

-{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedDefinitionsAssignment_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ContextDeclCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getContextDeclCSAccess().getPropertyContextDeclCSParserRuleCall_0()); }

-	rulePropertyContextDeclCS

-{ after(grammarAccess.getContextDeclCSAccess().getPropertyContextDeclCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getContextDeclCSAccess().getClassifierContextDeclCSParserRuleCall_1()); }

-	ruleClassifierContextDeclCS

-{ after(grammarAccess.getContextDeclCSAccess().getClassifierContextDeclCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getContextDeclCSAccess().getOperationContextDeclCSParserRuleCall_2()); }

-	ruleOperationContextDeclCS

-{ after(grammarAccess.getContextDeclCSAccess().getOperationContextDeclCSParserRuleCall_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefCSAccess().getDefOperationCSParserRuleCall_0()); }

-	ruleDefOperationCS

-{ after(grammarAccess.getDefCSAccess().getDefOperationCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getDefCSAccess().getDefPropertyCSParserRuleCall_1()); }

-	ruleDefPropertyCS

-{ after(grammarAccess.getDefCSAccess().getDefPropertyCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Alternatives_8

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getGroup_8_0()); }

-(rule__OperationContextDeclCS__Group_8_0__0)

-{ after(grammarAccess.getOperationContextDeclCSAccess().getGroup_8_0()); }

-)

-

-    |(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getGroup_8_1()); }

-(rule__OperationContextDeclCS__Group_8_1__0)

-{ after(grammarAccess.getOperationContextDeclCSAccess().getGroup_8_1()); }

-)

-

-    |(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getGroup_8_2()); }

-(rule__OperationContextDeclCS__Group_8_2__0)

-{ after(grammarAccess.getOperationContextDeclCSAccess().getGroup_8_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__Alternatives_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getGroup_4_0()); }

-(rule__PropertyContextDeclCS__Group_4_0__0)

-{ after(grammarAccess.getPropertyContextDeclCSAccess().getGroup_4_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getGroup_4_1()); }

-(rule__PropertyContextDeclCS__Group_4_1__0)

-{ after(grammarAccess.getPropertyContextDeclCSAccess().getGroup_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SpecificationCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSpecificationCSAccess().getOwnedExpressionAssignment_0()); }

-(rule__SpecificationCS__OwnedExpressionAssignment_0)

-{ after(grammarAccess.getSpecificationCSAccess().getOwnedExpressionAssignment_0()); }

-)

-

-    |(

-{ before(grammarAccess.getSpecificationCSAccess().getExprStringAssignment_1()); }

-(rule__SpecificationCS__ExprStringAssignment_1)

-{ after(grammarAccess.getSpecificationCSAccess().getExprStringAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_0()); }

-(rule__TemplateSignatureCS__Group_0__0)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_1()); }

-(rule__TemplateSignatureCS__Group_1__0)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedRefCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedRefCSAccess().getTypeLiteralCSParserRuleCall_0()); }

-	ruleTypeLiteralCS

-{ after(grammarAccess.getTypedRefCSAccess().getTypeLiteralCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); }

-	ruleTypedTypeRefCS

-{ after(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UnrestrictedName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall_0()); }

-	ruleEssentialOCLUnrestrictedName

-{ after(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getUnrestrictedNameAccess().getImportKeyword_1()); }

-

-	'import' 

-

-{ after(grammarAccess.getUnrestrictedNameAccess().getImportKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getUnrestrictedNameAccess().getIncludeKeyword_2()); }

-

-	'include' 

-

-{ after(grammarAccess.getUnrestrictedNameAccess().getIncludeKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getUnrestrictedNameAccess().getLibraryKeyword_3()); }

-

-	'library' 

-

-{ after(grammarAccess.getUnrestrictedNameAccess().getLibraryKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgExpCSAccess().getGroup_0()); }

-(rule__NavigatingArgExpCS__Group_0__0)

-{ after(grammarAccess.getNavigatingArgExpCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall_1()); }

-	ruleExpCS

-{ after(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigationOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall_0()); }

-	ruleEssentialOCLNavigationOperatorName

-{ after(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNavigationOperatorNameAccess().getCompleteOCLNavigationOperatorNameParserRuleCall_1()); }

-	ruleCompleteOCLNavigationOperatorName

-{ after(grammarAccess.getNavigationOperatorNameAccess().getCompleteOCLNavigationOperatorNameParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimitiveTypeIdentifier__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }

-

-	'Boolean' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }

-

-	'Integer' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }

-

-	'Real' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }

-

-	'String' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }

-

-	'UnlimitedNatural' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }

-

-	'OclAny' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }

-

-	'OclInvalid' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclMessageKeyword_7()); }

-

-	'OclMessage' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclMessageKeyword_7()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclStateKeyword_8()); }

-

-	'OclState' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclStateKeyword_8()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_9()); }

-

-	'OclVoid' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_9()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EssentialOCLUnaryOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }

-

-	'-' 

-

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }

-

-	'not' 

-

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EssentialOCLInfixOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }

-

-	'*' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }

-

-	'/' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }

-

-	'+' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }

-

-	'-' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }

-

-	'>' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }

-

-	'<' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }

-

-	'>=' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }

-

-	'<=' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }

-

-	'=' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }

-

-	'<>' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }

-

-	'and' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }

-

-	'or' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }

-

-	'xor' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }

-

-	'implies' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EssentialOCLNavigationOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }

-

-	'.' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }

-

-	'->' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }

-

-	'?.' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }

-

-	'?->' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BinaryOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }

-	ruleInfixOperatorName

-{ after(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }

-	ruleNavigationOperatorName

-{ after(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EssentialOCLUnreservedName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }

-	ruleUnrestrictedName

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }

-	ruleCollectionTypeIdentifier

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }

-	rulePrimitiveTypeIdentifier

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }

-

-	'Tuple' 

-

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }

-(rule__URIFirstPathElementCS__ReferredElementAssignment_0)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }

-)

-

-    |(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }

-(rule__URIFirstPathElementCS__Group_1__0)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeIdentifier__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }

-

-	'Set' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }

-

-	'Bag' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }

-

-	'Sequence' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }

-

-	'Collection' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }

-

-	'OrderedSet' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }

-(rule__CollectionLiteralPartCS__Group_0__0)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }

-(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }

-	ruleExpCS

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }

-	rulePatternExpCS

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimitiveLiteralExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }

-	ruleNumberLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }

-	ruleStringLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }

-	ruleBooleanLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }

-	ruleUnlimitedNaturalLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }

-	ruleInvalidLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }

-	ruleNullLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BooleanLiteralExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }

-(rule__BooleanLiteralExpCS__SymbolAssignment_0)

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }

-)

-

-    |(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }

-(rule__BooleanLiteralExpCS__SymbolAssignment_1)

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }

-	rulePrimitiveTypeCS

-{ after(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }

-	ruleCollectionTypeCS

-{ after(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }

-	ruleTupleTypeCS

-{ after(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__Alternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }

-	ruleTypeNameExpCS

-{ after(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }

-	ruleTypeLiteralCS

-{ after(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }

-	ruleCollectionPatternCS

-{ after(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getGroup_0()); }

-(rule__ExpCS__Group_0__0)

-{ after(grammarAccess.getExpCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }

-	rulePrefixedLetExpCS

-{ after(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }

-(rule__PrefixedLetExpCS__Group_0__0)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }

-	ruleLetExpCS

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }

-(rule__PrefixedPrimaryExpCS__Group_0__0)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }

-	rulePrimaryExpCS

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimaryExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }

-	ruleNestedExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }

-	ruleIfExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }

-	ruleSelfExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }

-	rulePrimitiveLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }

-	ruleTupleLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }

-	ruleCollectionLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }

-	ruleLambdaLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }

-	ruleTypeLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }

-	ruleNameExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }

-(rule__CurlyBracketedClauseCS__Group_2_0__0)?

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }

-(rule__CurlyBracketedClauseCS__ValueAssignment_2_1)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }

-(rule__NavigatingArgCS__Group_0__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }

-(rule__NavigatingArgCS__Group_1__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Alternatives_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }

-(rule__NavigatingArgCS__Group_0_1_0__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }

-(rule__NavigatingArgCS__Group_0_1_1__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }

-(rule__NavigatingCommaArgCS__Group_2_0__0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }

-(rule__NavigatingCommaArgCS__Group_2_1__0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedConditionAlternatives_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }

-	ruleExpCS

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }

-	rulePatternExpCS

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Alternatives_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }

-	ruleMultiplicityBoundsCS

-{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }

-	ruleMultiplicityStringCS

-{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityStringCS__StringBoundsAlternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }

-

-	'*' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }

-

-	'+' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }

-

-	'?' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Alternatives_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }

-(rule__TypeParameterCS__Group_1_0__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }

-(rule__TypeParameterCS__Group_1_1__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeRefCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }

-	ruleTypedRefCS

-{ after(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }

-	ruleWildcardTypeRefCS

-{ after(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }

-(rule__WildcardTypeRefCS__Group_2_0__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }

-(rule__WildcardTypeRefCS__Group_2_1__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ID__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }

-	RULE_SIMPLE_ID

-{ after(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }

-	RULE_ESCAPED_ID

-{ after(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UPPER__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }

-	RULE_INT

-{ after(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }

-

-	'*' 

-

-{ after(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-rule__CompleteOCLDocumentCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CompleteOCLDocumentCS__Group__0__Impl

-	rule__CompleteOCLDocumentCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CompleteOCLDocumentCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getAlternatives_0()); }

-(rule__CompleteOCLDocumentCS__Alternatives_0)*

-{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CompleteOCLDocumentCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CompleteOCLDocumentCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CompleteOCLDocumentCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getAlternatives_1()); }

-(rule__CompleteOCLDocumentCS__Alternatives_1)*

-{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getAlternatives_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ClassifierContextDeclCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ClassifierContextDeclCS__Group__0__Impl

-	rule__ClassifierContextDeclCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ClassifierContextDeclCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getContextKeyword_0()); }

-

-	'context' 

-

-{ after(grammarAccess.getClassifierContextDeclCSAccess().getContextKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ClassifierContextDeclCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ClassifierContextDeclCS__Group__1__Impl

-	rule__ClassifierContextDeclCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ClassifierContextDeclCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedSignatureAssignment_1()); }

-(rule__ClassifierContextDeclCS__OwnedSignatureAssignment_1)?

-{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedSignatureAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ClassifierContextDeclCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ClassifierContextDeclCS__Group__2__Impl

-	rule__ClassifierContextDeclCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ClassifierContextDeclCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getSelfNameAssignment_2()); }

-(rule__ClassifierContextDeclCS__SelfNameAssignment_2)?

-{ after(grammarAccess.getClassifierContextDeclCSAccess().getSelfNameAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ClassifierContextDeclCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ClassifierContextDeclCS__Group__3__Impl

-	rule__ClassifierContextDeclCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ClassifierContextDeclCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedPathNameAssignment_3()); }

-(rule__ClassifierContextDeclCS__OwnedPathNameAssignment_3)

-{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedPathNameAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ClassifierContextDeclCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ClassifierContextDeclCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ClassifierContextDeclCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getAlternatives_4()); }

-(rule__ClassifierContextDeclCS__Alternatives_4)

-{ after(grammarAccess.getClassifierContextDeclCSAccess().getAlternatives_4()); }

-)

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getAlternatives_4()); }

-(rule__ClassifierContextDeclCS__Alternatives_4)*

-{ after(grammarAccess.getClassifierContextDeclCSAccess().getAlternatives_4()); }

-)

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__ClassifierContextDeclCS__Group_4_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ClassifierContextDeclCS__Group_4_0__0__Impl

-	rule__ClassifierContextDeclCS__Group_4_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ClassifierContextDeclCS__Group_4_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getInvKeyword_4_0_0()); }

-

-	'inv' 

-

-{ after(grammarAccess.getClassifierContextDeclCSAccess().getInvKeyword_4_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ClassifierContextDeclCS__Group_4_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ClassifierContextDeclCS__Group_4_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ClassifierContextDeclCS__Group_4_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedInvariantsAssignment_4_0_1()); }

-(rule__ClassifierContextDeclCS__OwnedInvariantsAssignment_4_0_1)

-{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedInvariantsAssignment_4_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ConstraintCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstraintCS__Group__0__Impl

-	rule__ConstraintCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstraintCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstraintCSAccess().getGroup_0()); }

-(rule__ConstraintCS__Group_0__0)?

-{ after(grammarAccess.getConstraintCSAccess().getGroup_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ConstraintCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstraintCS__Group__1__Impl

-	rule__ConstraintCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstraintCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstraintCSAccess().getColonKeyword_1()); }

-

-	':' 

-

-{ after(grammarAccess.getConstraintCSAccess().getColonKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ConstraintCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstraintCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstraintCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstraintCSAccess().getOwnedSpecificationAssignment_2()); }

-(rule__ConstraintCS__OwnedSpecificationAssignment_2)

-{ after(grammarAccess.getConstraintCSAccess().getOwnedSpecificationAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__ConstraintCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstraintCS__Group_0__0__Impl

-	rule__ConstraintCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstraintCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstraintCSAccess().getNameAssignment_0_0()); }

-(rule__ConstraintCS__NameAssignment_0_0)

-{ after(grammarAccess.getConstraintCSAccess().getNameAssignment_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ConstraintCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstraintCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstraintCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstraintCSAccess().getGroup_0_1()); }

-(rule__ConstraintCS__Group_0_1__0)?

-{ after(grammarAccess.getConstraintCSAccess().getGroup_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ConstraintCS__Group_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstraintCS__Group_0_1__0__Impl

-	rule__ConstraintCS__Group_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstraintCS__Group_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstraintCSAccess().getLeftParenthesisKeyword_0_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getConstraintCSAccess().getLeftParenthesisKeyword_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ConstraintCS__Group_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstraintCS__Group_0_1__1__Impl

-	rule__ConstraintCS__Group_0_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstraintCS__Group_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstraintCSAccess().getOwnedMessageSpecificationAssignment_0_1_1()); }

-(rule__ConstraintCS__OwnedMessageSpecificationAssignment_0_1_1)

-{ after(grammarAccess.getConstraintCSAccess().getOwnedMessageSpecificationAssignment_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ConstraintCS__Group_0_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstraintCS__Group_0_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstraintCS__Group_0_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstraintCSAccess().getRightParenthesisKeyword_0_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getConstraintCSAccess().getRightParenthesisKeyword_0_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__DefOperationCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group__0__Impl

-	rule__DefOperationCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getIsStaticAssignment_0()); }

-(rule__DefOperationCS__IsStaticAssignment_0)?

-{ after(grammarAccess.getDefOperationCSAccess().getIsStaticAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefOperationCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group__1__Impl

-	rule__DefOperationCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getDefKeyword_1()); }

-

-	'def' 

-

-{ after(grammarAccess.getDefOperationCSAccess().getDefKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefOperationCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group__2__Impl

-	rule__DefOperationCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getUnrestrictedNameParserRuleCall_2()); }

-(	ruleUnrestrictedName)?

-{ after(grammarAccess.getDefOperationCSAccess().getUnrestrictedNameParserRuleCall_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefOperationCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group__3__Impl

-	rule__DefOperationCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getColonKeyword_3()); }

-

-	':' 

-

-{ after(grammarAccess.getDefOperationCSAccess().getColonKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefOperationCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group__4__Impl

-	rule__DefOperationCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getOwnedSignatureAssignment_4()); }

-(rule__DefOperationCS__OwnedSignatureAssignment_4)?

-{ after(grammarAccess.getDefOperationCSAccess().getOwnedSignatureAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefOperationCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group__5__Impl

-	rule__DefOperationCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getNameAssignment_5()); }

-(rule__DefOperationCS__NameAssignment_5)

-{ after(grammarAccess.getDefOperationCSAccess().getNameAssignment_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefOperationCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group__6__Impl

-	rule__DefOperationCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getLeftParenthesisKeyword_6()); }

-

-	'(' 

-

-{ after(grammarAccess.getDefOperationCSAccess().getLeftParenthesisKeyword_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefOperationCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group__7__Impl

-	rule__DefOperationCS__Group__8

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getGroup_7()); }

-(rule__DefOperationCS__Group_7__0)?

-{ after(grammarAccess.getDefOperationCSAccess().getGroup_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefOperationCS__Group__8

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group__8__Impl

-	rule__DefOperationCS__Group__9

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group__8__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getRightParenthesisKeyword_8()); }

-

-	')' 

-

-{ after(grammarAccess.getDefOperationCSAccess().getRightParenthesisKeyword_8()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefOperationCS__Group__9

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group__9__Impl

-	rule__DefOperationCS__Group__10

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group__9__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getColonKeyword_9()); }

-

-	':' 

-

-{ after(grammarAccess.getDefOperationCSAccess().getColonKeyword_9()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefOperationCS__Group__10

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group__10__Impl

-	rule__DefOperationCS__Group__11

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group__10__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getOwnedTypeAssignment_10()); }

-(rule__DefOperationCS__OwnedTypeAssignment_10)?

-{ after(grammarAccess.getDefOperationCSAccess().getOwnedTypeAssignment_10()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefOperationCS__Group__11

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group__11__Impl

-	rule__DefOperationCS__Group__12

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group__11__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getEqualsSignKeyword_11()); }

-

-	'=' 

-

-{ after(grammarAccess.getDefOperationCSAccess().getEqualsSignKeyword_11()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefOperationCS__Group__12

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group__12__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group__12__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getOwnedSpecificationAssignment_12()); }

-(rule__DefOperationCS__OwnedSpecificationAssignment_12)

-{ after(grammarAccess.getDefOperationCSAccess().getOwnedSpecificationAssignment_12()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__DefOperationCS__Group_7__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group_7__0__Impl

-	rule__DefOperationCS__Group_7__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group_7__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getOwnedParametersAssignment_7_0()); }

-(rule__DefOperationCS__OwnedParametersAssignment_7_0)

-{ after(grammarAccess.getDefOperationCSAccess().getOwnedParametersAssignment_7_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefOperationCS__Group_7__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group_7__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group_7__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getGroup_7_1()); }

-(rule__DefOperationCS__Group_7_1__0)*

-{ after(grammarAccess.getDefOperationCSAccess().getGroup_7_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__DefOperationCS__Group_7_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group_7_1__0__Impl

-	rule__DefOperationCS__Group_7_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group_7_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getCommaKeyword_7_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getDefOperationCSAccess().getCommaKeyword_7_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefOperationCS__Group_7_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefOperationCS__Group_7_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__Group_7_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getOwnedParametersAssignment_7_1_1()); }

-(rule__DefOperationCS__OwnedParametersAssignment_7_1_1)

-{ after(grammarAccess.getDefOperationCSAccess().getOwnedParametersAssignment_7_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__DefParameterCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefParameterCS__Group__0__Impl

-	rule__DefParameterCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefParameterCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefParameterCSAccess().getNameAssignment_0()); }

-(rule__DefParameterCS__NameAssignment_0)

-{ after(grammarAccess.getDefParameterCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefParameterCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefParameterCS__Group__1__Impl

-	rule__DefParameterCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefParameterCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefParameterCSAccess().getColonKeyword_1()); }

-

-	':' 

-

-{ after(grammarAccess.getDefParameterCSAccess().getColonKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefParameterCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefParameterCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefParameterCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefParameterCSAccess().getOwnedTypeAssignment_2()); }

-(rule__DefParameterCS__OwnedTypeAssignment_2)

-{ after(grammarAccess.getDefParameterCSAccess().getOwnedTypeAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__DefPropertyCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefPropertyCS__Group__0__Impl

-	rule__DefPropertyCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefPropertyCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getIsStaticAssignment_0()); }

-(rule__DefPropertyCS__IsStaticAssignment_0)?

-{ after(grammarAccess.getDefPropertyCSAccess().getIsStaticAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefPropertyCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefPropertyCS__Group__1__Impl

-	rule__DefPropertyCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefPropertyCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getDefKeyword_1()); }

-

-	'def' 

-

-{ after(grammarAccess.getDefPropertyCSAccess().getDefKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefPropertyCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefPropertyCS__Group__2__Impl

-	rule__DefPropertyCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefPropertyCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getUnrestrictedNameParserRuleCall_2()); }

-(	ruleUnrestrictedName)?

-{ after(grammarAccess.getDefPropertyCSAccess().getUnrestrictedNameParserRuleCall_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefPropertyCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefPropertyCS__Group__3__Impl

-	rule__DefPropertyCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefPropertyCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getColonKeyword_3()); }

-

-	':' 

-

-{ after(grammarAccess.getDefPropertyCSAccess().getColonKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefPropertyCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefPropertyCS__Group__4__Impl

-	rule__DefPropertyCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefPropertyCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getNameAssignment_4()); }

-(rule__DefPropertyCS__NameAssignment_4)

-{ after(grammarAccess.getDefPropertyCSAccess().getNameAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefPropertyCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefPropertyCS__Group__5__Impl

-	rule__DefPropertyCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefPropertyCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getColonKeyword_5()); }

-

-	':' 

-

-{ after(grammarAccess.getDefPropertyCSAccess().getColonKeyword_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefPropertyCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefPropertyCS__Group__6__Impl

-	rule__DefPropertyCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefPropertyCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getOwnedTypeAssignment_6()); }

-(rule__DefPropertyCS__OwnedTypeAssignment_6)

-{ after(grammarAccess.getDefPropertyCSAccess().getOwnedTypeAssignment_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefPropertyCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefPropertyCS__Group__7__Impl

-	rule__DefPropertyCS__Group__8

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefPropertyCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getEqualsSignKeyword_7()); }

-

-	'=' 

-

-{ after(grammarAccess.getDefPropertyCSAccess().getEqualsSignKeyword_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DefPropertyCS__Group__8

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DefPropertyCS__Group__8__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefPropertyCS__Group__8__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getOwnedSpecificationAssignment_8()); }

-(rule__DefPropertyCS__OwnedSpecificationAssignment_8)

-{ after(grammarAccess.getDefPropertyCSAccess().getOwnedSpecificationAssignment_8()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__ImportCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ImportCS__Group__0__Impl

-	rule__ImportCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getImportKeyword_0()); }

-

-	'import' 

-

-{ after(grammarAccess.getImportCSAccess().getImportKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ImportCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ImportCS__Group__1__Impl

-	rule__ImportCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getGroup_1()); }

-(rule__ImportCS__Group_1__0)?

-{ after(grammarAccess.getImportCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ImportCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ImportCS__Group__2__Impl

-	rule__ImportCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getOwnedPathNameAssignment_2()); }

-(rule__ImportCS__OwnedPathNameAssignment_2)

-{ after(grammarAccess.getImportCSAccess().getOwnedPathNameAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ImportCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ImportCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getIsAllAssignment_3()); }

-(rule__ImportCS__IsAllAssignment_3)?

-{ after(grammarAccess.getImportCSAccess().getIsAllAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__ImportCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ImportCS__Group_1__0__Impl

-	rule__ImportCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getNameAssignment_1_0()); }

-(rule__ImportCS__NameAssignment_1_0)

-{ after(grammarAccess.getImportCSAccess().getNameAssignment_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ImportCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ImportCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getColonKeyword_1_1()); }

-

-	':' 

-

-{ after(grammarAccess.getImportCSAccess().getColonKeyword_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__IncludeCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IncludeCS__Group__0__Impl

-	rule__IncludeCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IncludeCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIncludeCSAccess().getIncludeKeyword_0()); }

-

-	'include' 

-

-{ after(grammarAccess.getIncludeCSAccess().getIncludeKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IncludeCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IncludeCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IncludeCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIncludeCSAccess().getReferredNamespaceAssignment_1()); }

-(rule__IncludeCS__ReferredNamespaceAssignment_1)

-{ after(grammarAccess.getIncludeCSAccess().getReferredNamespaceAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibraryCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibraryCS__Group__0__Impl

-	rule__LibraryCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibraryCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryCSAccess().getLibraryKeyword_0()); }

-

-	'library' 

-

-{ after(grammarAccess.getLibraryCSAccess().getLibraryKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibraryCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibraryCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibraryCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryCSAccess().getReferredPackageAssignment_1()); }

-(rule__LibraryCS__ReferredPackageAssignment_1)

-{ after(grammarAccess.getLibraryCSAccess().getReferredPackageAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__OperationContextDeclCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group__0__Impl

-	rule__OperationContextDeclCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getContextKeyword_0()); }

-

-	'context' 

-

-{ after(grammarAccess.getOperationContextDeclCSAccess().getContextKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group__1__Impl

-	rule__OperationContextDeclCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedSignatureAssignment_1()); }

-(rule__OperationContextDeclCS__OwnedSignatureAssignment_1)?

-{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedSignatureAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group__2__Impl

-	rule__OperationContextDeclCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPathNameAssignment_2()); }

-(rule__OperationContextDeclCS__OwnedPathNameAssignment_2)

-{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedPathNameAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group__3__Impl

-	rule__OperationContextDeclCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getLeftParenthesisKeyword_3()); }

-

-	'(' 

-

-{ after(grammarAccess.getOperationContextDeclCSAccess().getLeftParenthesisKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group__4__Impl

-	rule__OperationContextDeclCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getGroup_4()); }

-(rule__OperationContextDeclCS__Group_4__0)?

-{ after(grammarAccess.getOperationContextDeclCSAccess().getGroup_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group__5__Impl

-	rule__OperationContextDeclCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getRightParenthesisKeyword_5()); }

-

-	')' 

-

-{ after(grammarAccess.getOperationContextDeclCSAccess().getRightParenthesisKeyword_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group__6__Impl

-	rule__OperationContextDeclCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getColonKeyword_6()); }

-

-	':' 

-

-{ after(grammarAccess.getOperationContextDeclCSAccess().getColonKeyword_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group__7__Impl

-	rule__OperationContextDeclCS__Group__8

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedTypeAssignment_7()); }

-(rule__OperationContextDeclCS__OwnedTypeAssignment_7)?

-{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedTypeAssignment_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group__8

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group__8__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group__8__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getAlternatives_8()); }

-(rule__OperationContextDeclCS__Alternatives_8)*

-{ after(grammarAccess.getOperationContextDeclCSAccess().getAlternatives_8()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__OperationContextDeclCS__Group_4__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group_4__0__Impl

-	rule__OperationContextDeclCS__Group_4__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group_4__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersAssignment_4_0()); }

-(rule__OperationContextDeclCS__OwnedParametersAssignment_4_0)

-{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersAssignment_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group_4__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group_4__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group_4__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getGroup_4_1()); }

-(rule__OperationContextDeclCS__Group_4_1__0)*

-{ after(grammarAccess.getOperationContextDeclCSAccess().getGroup_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__OperationContextDeclCS__Group_4_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group_4_1__0__Impl

-	rule__OperationContextDeclCS__Group_4_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group_4_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getCommaKeyword_4_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getOperationContextDeclCSAccess().getCommaKeyword_4_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group_4_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group_4_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group_4_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersAssignment_4_1_1()); }

-(rule__OperationContextDeclCS__OwnedParametersAssignment_4_1_1)

-{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersAssignment_4_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__OperationContextDeclCS__Group_8_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group_8_0__0__Impl

-	rule__OperationContextDeclCS__Group_8_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group_8_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getPreKeyword_8_0_0()); }

-

-	'pre' 

-

-{ after(grammarAccess.getOperationContextDeclCSAccess().getPreKeyword_8_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group_8_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group_8_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group_8_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPreconditionsAssignment_8_0_1()); }

-(rule__OperationContextDeclCS__OwnedPreconditionsAssignment_8_0_1)

-{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedPreconditionsAssignment_8_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__OperationContextDeclCS__Group_8_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group_8_1__0__Impl

-	rule__OperationContextDeclCS__Group_8_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group_8_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getPostKeyword_8_1_0()); }

-

-	'post' 

-

-{ after(grammarAccess.getOperationContextDeclCSAccess().getPostKeyword_8_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group_8_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group_8_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group_8_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPostconditionsAssignment_8_1_1()); }

-(rule__OperationContextDeclCS__OwnedPostconditionsAssignment_8_1_1)

-{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedPostconditionsAssignment_8_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__OperationContextDeclCS__Group_8_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group_8_2__0__Impl

-	rule__OperationContextDeclCS__Group_8_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group_8_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getBodyKeyword_8_2_0()); }

-

-	'body' 

-

-{ after(grammarAccess.getOperationContextDeclCSAccess().getBodyKeyword_8_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group_8_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group_8_2__1__Impl

-	rule__OperationContextDeclCS__Group_8_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group_8_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getUnrestrictedNameParserRuleCall_8_2_1()); }

-(	ruleUnrestrictedName)?

-{ after(grammarAccess.getOperationContextDeclCSAccess().getUnrestrictedNameParserRuleCall_8_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group_8_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group_8_2__2__Impl

-	rule__OperationContextDeclCS__Group_8_2__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group_8_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getColonKeyword_8_2_2()); }

-

-	':' 

-

-{ after(grammarAccess.getOperationContextDeclCSAccess().getColonKeyword_8_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationContextDeclCS__Group_8_2__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationContextDeclCS__Group_8_2__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__Group_8_2__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedBodiesAssignment_8_2_3()); }

-(rule__OperationContextDeclCS__OwnedBodiesAssignment_8_2_3)

-{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedBodiesAssignment_8_2_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__PackageDeclarationCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageDeclarationCS__Group__0__Impl

-	rule__PackageDeclarationCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageDeclarationCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageDeclarationCSAccess().getPackageKeyword_0()); }

-

-	'package' 

-

-{ after(grammarAccess.getPackageDeclarationCSAccess().getPackageKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageDeclarationCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageDeclarationCS__Group__1__Impl

-	rule__PackageDeclarationCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageDeclarationCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageDeclarationCSAccess().getOwnedPathNameAssignment_1()); }

-(rule__PackageDeclarationCS__OwnedPathNameAssignment_1)

-{ after(grammarAccess.getPackageDeclarationCSAccess().getOwnedPathNameAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageDeclarationCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageDeclarationCS__Group__2__Impl

-	rule__PackageDeclarationCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageDeclarationCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageDeclarationCSAccess().getGroup_2()); }

-(rule__PackageDeclarationCS__Group_2__0)*

-{ after(grammarAccess.getPackageDeclarationCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageDeclarationCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageDeclarationCS__Group__3__Impl

-	rule__PackageDeclarationCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageDeclarationCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageDeclarationCSAccess().getOwnedContextsAssignment_3()); }

-(rule__PackageDeclarationCS__OwnedContextsAssignment_3)*

-{ after(grammarAccess.getPackageDeclarationCSAccess().getOwnedContextsAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageDeclarationCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageDeclarationCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageDeclarationCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageDeclarationCSAccess().getEndpackageKeyword_4()); }

-

-	'endpackage' 

-

-{ after(grammarAccess.getPackageDeclarationCSAccess().getEndpackageKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__PackageDeclarationCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageDeclarationCS__Group_2__0__Impl

-	rule__PackageDeclarationCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageDeclarationCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageDeclarationCSAccess().getInvKeyword_2_0()); }

-

-	'inv' 

-

-{ after(grammarAccess.getPackageDeclarationCSAccess().getInvKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageDeclarationCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageDeclarationCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageDeclarationCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageDeclarationCSAccess().getOwnedInvariantsAssignment_2_1()); }

-(rule__PackageDeclarationCS__OwnedInvariantsAssignment_2_1)

-{ after(grammarAccess.getPackageDeclarationCSAccess().getOwnedInvariantsAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ParameterCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group__0__Impl

-	rule__ParameterCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getGroup_0()); }

-(rule__ParameterCS__Group_0__0)?

-{ after(grammarAccess.getParameterCSAccess().getGroup_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ParameterCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getOwnedTypeAssignment_1()); }

-(rule__ParameterCS__OwnedTypeAssignment_1)

-{ after(grammarAccess.getParameterCSAccess().getOwnedTypeAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ParameterCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group_0__0__Impl

-	rule__ParameterCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getNameAssignment_0_0()); }

-(rule__ParameterCS__NameAssignment_0_0)

-{ after(grammarAccess.getParameterCSAccess().getNameAssignment_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ParameterCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getColonKeyword_0_1()); }

-

-	':' 

-

-{ after(grammarAccess.getParameterCSAccess().getColonKeyword_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__PropertyContextDeclCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PropertyContextDeclCS__Group__0__Impl

-	rule__PropertyContextDeclCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getContextKeyword_0()); }

-

-	'context' 

-

-{ after(grammarAccess.getPropertyContextDeclCSAccess().getContextKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PropertyContextDeclCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PropertyContextDeclCS__Group__1__Impl

-	rule__PropertyContextDeclCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedPathNameAssignment_1()); }

-(rule__PropertyContextDeclCS__OwnedPathNameAssignment_1)

-{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedPathNameAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PropertyContextDeclCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PropertyContextDeclCS__Group__2__Impl

-	rule__PropertyContextDeclCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_2()); }

-

-	':' 

-

-{ after(grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PropertyContextDeclCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PropertyContextDeclCS__Group__3__Impl

-	rule__PropertyContextDeclCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedTypeAssignment_3()); }

-(rule__PropertyContextDeclCS__OwnedTypeAssignment_3)?

-{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedTypeAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PropertyContextDeclCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PropertyContextDeclCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getAlternatives_4()); }

-(rule__PropertyContextDeclCS__Alternatives_4)*

-{ after(grammarAccess.getPropertyContextDeclCSAccess().getAlternatives_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__PropertyContextDeclCS__Group_4_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PropertyContextDeclCS__Group_4_0__0__Impl

-	rule__PropertyContextDeclCS__Group_4_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__Group_4_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getDeriveKeyword_4_0_0()); }

-

-	'derive' 

-

-{ after(grammarAccess.getPropertyContextDeclCSAccess().getDeriveKeyword_4_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PropertyContextDeclCS__Group_4_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PropertyContextDeclCS__Group_4_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__Group_4_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDerivedInvariantsAssignment_4_0_1()); }

-(rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_1)

-{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDerivedInvariantsAssignment_4_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__PropertyContextDeclCS__Group_4_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PropertyContextDeclCS__Group_4_1__0__Impl

-	rule__PropertyContextDeclCS__Group_4_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__Group_4_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getInitKeyword_4_1_0()); }

-

-	'init' 

-

-{ after(grammarAccess.getPropertyContextDeclCSAccess().getInitKeyword_4_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PropertyContextDeclCS__Group_4_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PropertyContextDeclCS__Group_4_1__1__Impl

-	rule__PropertyContextDeclCS__Group_4_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__Group_4_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_4_1_1()); }

-

-	':' 

-

-{ after(grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_4_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PropertyContextDeclCS__Group_4_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PropertyContextDeclCS__Group_4_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__Group_4_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDefaultExpressionsAssignment_4_1_2()); }

-(rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_2)

-{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDefaultExpressionsAssignment_4_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TemplateSignatureCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_0__0__Impl

-	rule__TemplateSignatureCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_0__1__Impl

-	rule__TemplateSignatureCS__Group_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_1()); }

-(rule__TemplateSignatureCS__OwnedParametersAssignment_0_1)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_0__2__Impl

-	rule__TemplateSignatureCS__Group_0__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_0_2()); }

-(rule__TemplateSignatureCS__Group_0_2__0)*

-{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_0__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_0__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_0__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3()); }

-

-	')' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TemplateSignatureCS__Group_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_0_2__0__Impl

-	rule__TemplateSignatureCS__Group_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_2_1()); }

-(rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TemplateSignatureCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_1__0__Impl

-	rule__TemplateSignatureCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0()); }

-

-	'<' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_1__1__Impl

-	rule__TemplateSignatureCS__Group_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_1()); }

-(rule__TemplateSignatureCS__OwnedParametersAssignment_1_1)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_1__2__Impl

-	rule__TemplateSignatureCS__Group_1__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_1_2()); }

-(rule__TemplateSignatureCS__Group_1_2__0)*

-{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_1__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_1__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_1__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3()); }

-

-	'>' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TemplateSignatureCS__Group_1_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_1_2__0__Impl

-	rule__TemplateSignatureCS__Group_1_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_1_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_1_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_1_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_1_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_2_1()); }

-(rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgExpCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgExpCS__Group_0__0__Impl

-	rule__NavigatingArgExpCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgExpCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgExpCSAccess().getOCLMessageArgCSAction_0_0()); }

-(

-

-)

-{ after(grammarAccess.getNavigatingArgExpCSAccess().getOCLMessageArgCSAction_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgExpCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgExpCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgExpCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgExpCSAccess().getQuestionMarkKeyword_0_1()); }

-

-	'?' 

-

-{ after(grammarAccess.getNavigatingArgExpCSAccess().getQuestionMarkKeyword_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__URIPathNameCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIPathNameCS__Group__0__Impl

-	rule__URIPathNameCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIPathNameCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-(rule__URIPathNameCS__OwnedPathElementsAssignment_0)

-{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__URIPathNameCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIPathNameCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIPathNameCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIPathNameCSAccess().getGroup_1()); }

-(rule__URIPathNameCS__Group_1__0)*

-{ after(grammarAccess.getURIPathNameCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__URIPathNameCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIPathNameCS__Group_1__0__Impl

-	rule__URIPathNameCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIPathNameCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0()); }

-

-	'::' 

-

-{ after(grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__URIPathNameCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIPathNameCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIPathNameCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-(rule__URIPathNameCS__OwnedPathElementsAssignment_1_1)

-{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__URIFirstPathElementCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIFirstPathElementCS__Group_1__0__Impl

-	rule__URIFirstPathElementCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }

-(

-

-)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__URIFirstPathElementCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIFirstPathElementCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }

-(rule__URIFirstPathElementCS__ReferredElementAssignment_1_1)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionTypeCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group__0__Impl

-	rule__CollectionTypeCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }

-(rule__CollectionTypeCS__NameAssignment_0)

-{ after(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionTypeCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }

-(rule__CollectionTypeCS__Group_1__0)?

-{ after(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionTypeCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group_1__0__Impl

-	rule__CollectionTypeCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionTypeCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group_1__1__Impl

-	rule__CollectionTypeCS__Group_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }

-(rule__CollectionTypeCS__OwnedTypeAssignment_1_1)

-{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionTypeCS__Group_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TupleTypeCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group__0__Impl

-	rule__TupleTypeCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }

-(rule__TupleTypeCS__NameAssignment_0)

-{ after(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }

-(rule__TupleTypeCS__Group_1__0)?

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TupleTypeCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1__0__Impl

-	rule__TupleTypeCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1__1__Impl

-	rule__TupleTypeCS__Group_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }

-(rule__TupleTypeCS__Group_1_1__0)?

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TupleTypeCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1__0__Impl

-	rule__TupleTypeCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }

-(rule__TupleTypeCS__OwnedPartsAssignment_1_1_0)

-{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }

-(rule__TupleTypeCS__Group_1_1_1__0)*

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TupleTypeCS__Group_1_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1_1__0__Impl

-	rule__TupleTypeCS__Group_1_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }

-(rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1)

-{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TuplePartCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TuplePartCS__Group__0__Impl

-	rule__TuplePartCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }

-(rule__TuplePartCS__NameAssignment_0)

-{ after(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TuplePartCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TuplePartCS__Group__1__Impl

-	rule__TuplePartCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }

-

-	':' 

-

-{ after(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TuplePartCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TuplePartCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }

-(rule__TuplePartCS__OwnedTypeAssignment_2)

-{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__CollectionLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__0__Impl

-	rule__CollectionLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }

-(rule__CollectionLiteralExpCS__OwnedTypeAssignment_0)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__1__Impl

-	rule__CollectionLiteralExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__2__Impl

-	rule__CollectionLiteralExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }

-(rule__CollectionLiteralExpCS__Group_2__0)?

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__CollectionLiteralExpCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2__0__Impl

-	rule__CollectionLiteralExpCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }

-(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }

-(rule__CollectionLiteralExpCS__Group_2_1__0)*

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionLiteralExpCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2_1__0__Impl

-	rule__CollectionLiteralExpCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }

-(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionLiteralPartCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0__0__Impl

-	rule__CollectionLiteralPartCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }

-(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralPartCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }

-(rule__CollectionLiteralPartCS__Group_0_1__0)?

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionLiteralPartCS__Group_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0_1__0__Impl

-	rule__CollectionLiteralPartCS__Group_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }

-

-	'..' 

-

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralPartCS__Group_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }

-(rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionPatternCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__0__Impl

-	rule__CollectionPatternCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }

-(rule__CollectionPatternCS__OwnedTypeAssignment_0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__1__Impl

-	rule__CollectionPatternCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__2__Impl

-	rule__CollectionPatternCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }

-(rule__CollectionPatternCS__Group_2__0)?

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__CollectionPatternCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2__0__Impl

-	rule__CollectionPatternCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }

-(rule__CollectionPatternCS__OwnedPartsAssignment_2_0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2__1__Impl

-	rule__CollectionPatternCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }

-(rule__CollectionPatternCS__Group_2_1__0)*

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }

-(rule__CollectionPatternCS__Group_2_2__0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__CollectionPatternCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_1__0__Impl

-	rule__CollectionPatternCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }

-(rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1)

-{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionPatternCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_2__0__Impl

-	rule__CollectionPatternCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }

-

-	'++' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }

-(rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1)

-{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ConstructorPartCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstructorPartCS__Group__0__Impl

-	rule__ConstructorPartCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }

-(rule__ConstructorPartCS__ReferredPropertyAssignment_0)

-{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ConstructorPartCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstructorPartCS__Group__1__Impl

-	rule__ConstructorPartCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }

-

-	'=' 

-

-{ after(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ConstructorPartCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstructorPartCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }

-(rule__ConstructorPartCS__OwnedInitExpressionAssignment_2)

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PatternExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PatternExpCS__Group__0__Impl

-	rule__PatternExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }

-(rule__PatternExpCS__PatternVariableNameAssignment_0)?

-{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PatternExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PatternExpCS__Group__1__Impl

-	rule__PatternExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }

-

-	':' 

-

-{ after(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PatternExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PatternExpCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }

-(rule__PatternExpCS__OwnedPatternTypeAssignment_2)

-{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__LambdaLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__0__Impl

-	rule__LambdaLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }

-

-	'Lambda' 

-

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__1__Impl

-	rule__LambdaLiteralExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaLiteralExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__2__Impl

-	rule__LambdaLiteralExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }

-(rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2)

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaLiteralExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TupleLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__0__Impl

-	rule__TupleLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }

-

-	'Tuple' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__1__Impl

-	rule__TupleLiteralExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__2__Impl

-	rule__TupleLiteralExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }

-(rule__TupleLiteralExpCS__OwnedPartsAssignment_2)

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__3__Impl

-	rule__TupleLiteralExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }

-(rule__TupleLiteralExpCS__Group_3__0)*

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }

-

-	'}' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__TupleLiteralExpCS__Group_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group_3__0__Impl

-	rule__TupleLiteralExpCS__Group_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group_3__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }

-(rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1)

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TupleLiteralPartCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__0__Impl

-	rule__TupleLiteralPartCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }

-(rule__TupleLiteralPartCS__NameAssignment_0)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__1__Impl

-	rule__TupleLiteralPartCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }

-(rule__TupleLiteralPartCS__Group_1__0)?

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__2__Impl

-	rule__TupleLiteralPartCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }

-

-	'=' 

-

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }

-(rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TupleLiteralPartCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group_1__0__Impl

-	rule__TupleLiteralPartCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }

-

-	':' 

-

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }

-(rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__UnlimitedNaturalLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl

-	rule__UnlimitedNaturalLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__UnlimitedNaturalLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }

-

-	'*' 

-

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__InvalidLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvalidLiteralExpCS__Group__0__Impl

-	rule__InvalidLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvalidLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvalidLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvalidLiteralExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvalidLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }

-

-	'invalid' 

-

-{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NullLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NullLiteralExpCS__Group__0__Impl

-	rule__NullLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NullLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NullLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NullLiteralExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NullLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }

-

-	'null' 

-

-{ after(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeLiteralWithMultiplicityCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeLiteralWithMultiplicityCS__Group__0__Impl

-	rule__TypeLiteralWithMultiplicityCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralWithMultiplicityCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }

-	ruleTypeLiteralCS

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeLiteralWithMultiplicityCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeLiteralWithMultiplicityCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralWithMultiplicityCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }

-(rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1)?

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeNameExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group__0__Impl

-	rule__TypeNameExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-(rule__TypeNameExpCS__OwnedPathNameAssignment_0)

-{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }

-(rule__TypeNameExpCS__Group_1__0)?

-{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeNameExpCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1__0__Impl

-	rule__TypeNameExpCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }

-(rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0)

-{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }

-(rule__TypeNameExpCS__Group_1_1__0)?

-{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeNameExpCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1_1__0__Impl

-	rule__TypeNameExpCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1_1__1__Impl

-	rule__TypeNameExpCS__Group_1_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }

-(rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1)

-{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group_1_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TypeExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeExpCS__Group__0__Impl

-	rule__TypeExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }

-(rule__TypeExpCS__Alternatives_0)

-{ after(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }

-(rule__TypeExpCS__OwnedMultiplicityAssignment_1)?

-{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ExpCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0__0__Impl

-	rule__ExpCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }

-	rulePrefixedPrimaryExpCS

-{ after(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ExpCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getGroup_0_1()); }

-(rule__ExpCS__Group_0_1__0)?

-{ after(grammarAccess.getExpCSAccess().getGroup_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ExpCS__Group_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0_1__0__Impl

-	rule__ExpCS__Group_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }

-(

-

-)

-{ after(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ExpCS__Group_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0_1__1__Impl

-	rule__ExpCS__Group_0_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }

-(rule__ExpCS__NameAssignment_0_1_1)

-{ after(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ExpCS__Group_0_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }

-(rule__ExpCS__OwnedRightAssignment_0_1_2)

-{ after(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PrefixedLetExpCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedLetExpCS__Group_0__0__Impl

-	rule__PrefixedLetExpCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }

-(

-

-)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedLetExpCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedLetExpCS__Group_0__1__Impl

-	rule__PrefixedLetExpCS__Group_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }

-(rule__PrefixedLetExpCS__NameAssignment_0_1)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedLetExpCS__Group_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedLetExpCS__Group_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Group_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }

-(rule__PrefixedLetExpCS__OwnedRightAssignment_0_2)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PrefixedPrimaryExpCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedPrimaryExpCS__Group_0__0__Impl

-	rule__PrefixedPrimaryExpCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }

-(

-

-)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedPrimaryExpCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedPrimaryExpCS__Group_0__1__Impl

-	rule__PrefixedPrimaryExpCS__Group_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }

-(rule__PrefixedPrimaryExpCS__NameAssignment_0_1)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedPrimaryExpCS__Group_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedPrimaryExpCS__Group_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Group_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }

-(rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NameExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__0__Impl

-	rule__NameExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-(rule__NameExpCS__OwnedPathNameAssignment_0)

-{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__1__Impl

-	rule__NameExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }

-(rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1)*

-{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__2__Impl

-	rule__NameExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }

-(rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2)?

-{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__3__Impl

-	rule__NameExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }

-(rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3)?

-{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getGroup_4()); }

-(rule__NameExpCS__Group_4__0)?

-{ after(grammarAccess.getNameExpCSAccess().getGroup_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__NameExpCS__Group_4__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group_4__0__Impl

-	rule__NameExpCS__Group_4__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group_4__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }

-(rule__NameExpCS__IsPreAssignment_4_0)

-{ after(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group_4__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group_4__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group_4__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }

-

-	'pre' 

-

-{ after(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CurlyBracketedClauseCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__0__Impl

-	rule__CurlyBracketedClauseCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__1__Impl

-	rule__CurlyBracketedClauseCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__2__Impl

-	rule__CurlyBracketedClauseCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }

-(rule__CurlyBracketedClauseCS__Alternatives_2)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__CurlyBracketedClauseCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0__0__Impl

-	rule__CurlyBracketedClauseCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }

-(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }

-(rule__CurlyBracketedClauseCS__Group_2_0_1__0)*

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl

-	rule__CurlyBracketedClauseCS__Group_2_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }

-(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__0__Impl

-	rule__RoundBracketedClauseCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__1__Impl

-	rule__RoundBracketedClauseCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }

-

-	'(' 

-

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__2__Impl

-	rule__RoundBracketedClauseCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }

-(rule__RoundBracketedClauseCS__Group_2__0)?

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }

-

-	')' 

-

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__0__Impl

-	rule__RoundBracketedClauseCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__1__Impl

-	rule__RoundBracketedClauseCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__2__Impl

-	rule__RoundBracketedClauseCS__Group_2__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }

-(rule__RoundBracketedClauseCS__Group_2_2__0)?

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }

-(rule__RoundBracketedClauseCS__Group_2_3__0)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_2__0__Impl

-	rule__RoundBracketedClauseCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group_2_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_3__0__Impl

-	rule__RoundBracketedClauseCS__Group_2_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_3__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__SquareBracketedClauseCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__0__Impl

-	rule__SquareBracketedClauseCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }

-

-	'[' 

-

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__1__Impl

-	rule__SquareBracketedClauseCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }

-(rule__SquareBracketedClauseCS__OwnedTermsAssignment_1)

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__2__Impl

-	rule__SquareBracketedClauseCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }

-(rule__SquareBracketedClauseCS__Group_2__0)*

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }

-

-	']' 

-

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__SquareBracketedClauseCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group_2__0__Impl

-	rule__SquareBracketedClauseCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }

-(rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1)

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0__0__Impl

-	rule__NavigatingArgCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }

-(rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }

-(rule__NavigatingArgCS__Alternatives_0_1)?

-{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0_1_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0__0__Impl

-	rule__NavigatingArgCS__Group_0_1_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0__1__Impl

-	rule__NavigatingArgCS__Group_0_1_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }

-(rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }

-(rule__NavigatingArgCS__Group_0_1_0_2__0)?

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0_1_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0_2__0__Impl

-	rule__NavigatingArgCS__Group_0_1_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }

-(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_1__0__Impl

-	rule__NavigatingArgCS__Group_0_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }

-

-	'in' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }

-(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_1__0__Impl

-	rule__NavigatingArgCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }

-(rule__NavigatingArgCS__OwnedTypeAssignment_1_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingBarArgCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group__0__Impl

-	rule__NavigatingBarArgCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }

-(rule__NavigatingBarArgCS__PrefixAssignment_0)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group__1__Impl

-	rule__NavigatingBarArgCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-(rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }

-(rule__NavigatingBarArgCS__Group_2__0)?

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingBarArgCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2__0__Impl

-	rule__NavigatingBarArgCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2__1__Impl

-	rule__NavigatingBarArgCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }

-(rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }

-(rule__NavigatingBarArgCS__Group_2_2__0)?

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingBarArgCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2_2__0__Impl

-	rule__NavigatingBarArgCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-(rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group__0__Impl

-	rule__NavigatingCommaArgCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }

-(rule__NavigatingCommaArgCS__PrefixAssignment_0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group__1__Impl

-	rule__NavigatingCommaArgCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-(rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }

-(rule__NavigatingCommaArgCS__Alternatives_2)?

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0__0__Impl

-	rule__NavigatingCommaArgCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0__1__Impl

-	rule__NavigatingCommaArgCS__Group_2_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }

-(rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }

-(rule__NavigatingCommaArgCS__Group_2_0_2__0)?

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group_2_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl

-	rule__NavigatingCommaArgCS__Group_2_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }

-(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_1__0__Impl

-	rule__NavigatingCommaArgCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }

-

-	'in' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }

-(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingSemiArgCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group__0__Impl

-	rule__NavigatingSemiArgCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }

-(rule__NavigatingSemiArgCS__PrefixAssignment_0)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group__1__Impl

-	rule__NavigatingSemiArgCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-(rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }

-(rule__NavigatingSemiArgCS__Group_2__0)?

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingSemiArgCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2__0__Impl

-	rule__NavigatingSemiArgCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2__1__Impl

-	rule__NavigatingSemiArgCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }

-(rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }

-(rule__NavigatingSemiArgCS__Group_2_2__0)?

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingSemiArgCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2_2__0__Impl

-	rule__NavigatingSemiArgCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-(rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__IfExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__0__Impl

-	rule__IfExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }

-

-	'if' 

-

-{ after(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__1__Impl

-	rule__IfExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }

-(rule__IfExpCS__OwnedConditionAssignment_1)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__2__Impl

-	rule__IfExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }

-

-	'then' 

-

-{ after(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__3__Impl

-	rule__IfExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-(rule__IfExpCS__OwnedThenExpressionAssignment_3)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__4__Impl

-	rule__IfExpCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }

-(rule__IfExpCS__OwnedIfThenExpressionsAssignment_4)*

-{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__5__Impl

-	rule__IfExpCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }

-

-	'else' 

-

-{ after(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__6__Impl

-	rule__IfExpCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }

-(rule__IfExpCS__OwnedElseExpressionAssignment_6)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__7__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }

-

-	'endif' 

-

-{ after(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__ElseIfThenExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__0__Impl

-	rule__ElseIfThenExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }

-

-	'elseif' 

-

-{ after(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ElseIfThenExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__1__Impl

-	rule__ElseIfThenExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }

-(rule__ElseIfThenExpCS__OwnedConditionAssignment_1)

-{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ElseIfThenExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__2__Impl

-	rule__ElseIfThenExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }

-

-	'then' 

-

-{ after(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ElseIfThenExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-(rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3)

-{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__LetExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__0__Impl

-	rule__LetExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }

-

-	'let' 

-

-{ after(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__1__Impl

-	rule__LetExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }

-(rule__LetExpCS__OwnedVariablesAssignment_1)

-{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__2__Impl

-	rule__LetExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getGroup_2()); }

-(rule__LetExpCS__Group_2__0)*

-{ after(grammarAccess.getLetExpCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__3__Impl

-	rule__LetExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }

-

-	'in' 

-

-{ after(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }

-(rule__LetExpCS__OwnedInExpressionAssignment_4)

-{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LetExpCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group_2__0__Impl

-	rule__LetExpCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }

-(rule__LetExpCS__OwnedVariablesAssignment_2_1)

-{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LetVariableCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__0__Impl

-	rule__LetVariableCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }

-(rule__LetVariableCS__NameAssignment_0)

-{ after(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__1__Impl

-	rule__LetVariableCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }

-(rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1)?

-{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__2__Impl

-	rule__LetVariableCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getGroup_2()); }

-(rule__LetVariableCS__Group_2__0)?

-{ after(grammarAccess.getLetVariableCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__3__Impl

-	rule__LetVariableCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }

-

-	'=' 

-

-{ after(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }

-(rule__LetVariableCS__OwnedInitExpressionAssignment_4)

-{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LetVariableCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group_2__0__Impl

-	rule__LetVariableCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }

-(rule__LetVariableCS__OwnedTypeAssignment_2_1)

-{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NestedExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NestedExpCS__Group__0__Impl

-	rule__NestedExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NestedExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NestedExpCS__Group__1__Impl

-	rule__NestedExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }

-(rule__NestedExpCS__OwnedExpressionAssignment_1)

-{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NestedExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NestedExpCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }

-

-	')' 

-

-{ after(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__SelfExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SelfExpCS__Group__0__Impl

-	rule__SelfExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SelfExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SelfExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SelfExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SelfExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }

-

-	'self' 

-

-{ after(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__MultiplicityBoundsCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group__0__Impl

-	rule__MultiplicityBoundsCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }

-(rule__MultiplicityBoundsCS__LowerBoundAssignment_0)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityBoundsCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }

-(rule__MultiplicityBoundsCS__Group_1__0)?

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__MultiplicityBoundsCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group_1__0__Impl

-	rule__MultiplicityBoundsCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }

-

-	'..' 

-

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityBoundsCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }

-(rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__MultiplicityCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityCS__Group__0__Impl

-	rule__MultiplicityCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }

-

-	'[' 

-

-{ after(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityCS__Group__1__Impl

-	rule__MultiplicityCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }

-(rule__MultiplicityCS__Alternatives_1)

-{ after(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }

-

-	']' 

-

-{ after(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PathNameCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group__0__Impl

-	rule__PathNameCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-(rule__PathNameCS__OwnedPathElementsAssignment_0)

-{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PathNameCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getGroup_1()); }

-(rule__PathNameCS__Group_1__0)*

-{ after(grammarAccess.getPathNameCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__PathNameCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group_1__0__Impl

-	rule__PathNameCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }

-

-	'::' 

-

-{ after(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PathNameCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-(rule__PathNameCS__OwnedPathElementsAssignment_1_1)

-{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TemplateBindingCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__0__Impl

-	rule__TemplateBindingCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__1__Impl

-	rule__TemplateBindingCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }

-(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1)

-{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__2__Impl

-	rule__TemplateBindingCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }

-(rule__TemplateBindingCS__Group_2__0)*

-{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }

-

-	')' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TemplateBindingCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_2__0__Impl

-	rule__TemplateBindingCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }

-(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1)

-{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeParameterCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group__0__Impl

-	rule__TypeParameterCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }

-(rule__TypeParameterCS__NameAssignment_0)

-{ after(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }

-(rule__TypeParameterCS__Alternatives_1)?

-{ after(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__0__Impl

-	rule__TypeParameterCS__Group_1_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }

-

-	'extends' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__1__Impl

-	rule__TypeParameterCS__Group_1_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }

-(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }

-(rule__TypeParameterCS__Group_1_0_2__0)*

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0_2__0__Impl

-	rule__TypeParameterCS__Group_1_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }

-

-	'&&' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }

-(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_1__0__Impl

-	rule__TypeParameterCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }

-

-	'super' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }

-(rule__TypeParameterCS__OwnedSuperAssignment_1_1_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypedTypeRefCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedTypeRefCS__Group__0__Impl

-	rule__TypedTypeRefCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }

-(rule__TypedTypeRefCS__OwnedPathNameAssignment_0)

-{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypedTypeRefCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedTypeRefCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }

-(rule__TypedTypeRefCS__OwnedBindingAssignment_1)?

-{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__0__Impl

-	rule__WildcardTypeRefCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__1__Impl

-	rule__WildcardTypeRefCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }

-

-	'?' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }

-(rule__WildcardTypeRefCS__Alternatives_2)?

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_0__0__Impl

-	rule__WildcardTypeRefCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }

-

-	'extends' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }

-(rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_1__0__Impl

-	rule__WildcardTypeRefCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }

-

-	'super' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }

-(rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-rule__CompleteOCLDocumentCS__OwnedImportsAssignment_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedImportsImportCSParserRuleCall_0_0_0()); }

-	ruleImportCS{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedImportsImportCSParserRuleCall_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CompleteOCLDocumentCS__OwnedIncludesAssignment_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedIncludesIncludeCSParserRuleCall_0_1_0()); }

-	ruleIncludeCS{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedIncludesIncludeCSParserRuleCall_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CompleteOCLDocumentCS__OwnedLibrariesAssignment_0_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedLibrariesLibraryCSParserRuleCall_0_2_0()); }

-	ruleLibraryCS{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedLibrariesLibraryCSParserRuleCall_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CompleteOCLDocumentCS__OwnedPackagesAssignment_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedPackagesPackageDeclarationCSParserRuleCall_1_0_0()); }

-	rulePackageDeclarationCS{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedPackagesPackageDeclarationCSParserRuleCall_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CompleteOCLDocumentCS__OwnedContextsAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedContextsContextDeclCSParserRuleCall_1_1_0()); }

-	ruleContextDeclCS{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedContextsContextDeclCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ClassifierContextDeclCS__OwnedSignatureAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); }

-	ruleTemplateSignatureCS{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ClassifierContextDeclCS__SelfNameAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getSelfNameUnrestrictedNameParserRuleCall_2_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getClassifierContextDeclCSAccess().getSelfNameUnrestrictedNameParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ClassifierContextDeclCS__OwnedPathNameAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_3_0()); }

-	rulePathNameCS{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ClassifierContextDeclCS__OwnedInvariantsAssignment_4_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedInvariantsConstraintCSParserRuleCall_4_0_1_0()); }

-	ruleConstraintCS{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedInvariantsConstraintCSParserRuleCall_4_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ClassifierContextDeclCS__OwnedDefinitionsAssignment_4_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedDefinitionsDefCSParserRuleCall_4_1_0()); }

-	ruleDefCS{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedDefinitionsDefCSParserRuleCall_4_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstraintCS__NameAssignment_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstraintCS__OwnedMessageSpecificationAssignment_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_0_1_1_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstraintCS__OwnedSpecificationAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_2_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__IsStaticAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getIsStaticStaticKeyword_0_0()); }

-(

-{ before(grammarAccess.getDefOperationCSAccess().getIsStaticStaticKeyword_0_0()); }

-

-	'static' 

-

-{ after(grammarAccess.getDefOperationCSAccess().getIsStaticStaticKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getDefOperationCSAccess().getIsStaticStaticKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__OwnedSignatureAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_4_0()); }

-	ruleTemplateSignatureCS{ after(grammarAccess.getDefOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__NameAssignment_5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getNameUnrestrictedNameParserRuleCall_5_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getDefOperationCSAccess().getNameUnrestrictedNameParserRuleCall_5_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__OwnedParametersAssignment_7_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getOwnedParametersDefParameterCSParserRuleCall_7_0_0()); }

-	ruleDefParameterCS{ after(grammarAccess.getDefOperationCSAccess().getOwnedParametersDefParameterCSParserRuleCall_7_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__OwnedParametersAssignment_7_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getOwnedParametersDefParameterCSParserRuleCall_7_1_1_0()); }

-	ruleDefParameterCS{ after(grammarAccess.getDefOperationCSAccess().getOwnedParametersDefParameterCSParserRuleCall_7_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__OwnedTypeAssignment_10

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getOwnedTypeTypeExpCSParserRuleCall_10_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getDefOperationCSAccess().getOwnedTypeTypeExpCSParserRuleCall_10_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefOperationCS__OwnedSpecificationAssignment_12

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefOperationCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_12_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getDefOperationCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_12_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefParameterCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getDefParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefParameterCS__OwnedTypeAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefParameterCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getDefParameterCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefPropertyCS__IsStaticAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }

-

-	'static' 

-

-{ after(grammarAccess.getDefPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getDefPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefPropertyCS__NameAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getNameUnrestrictedNameParserRuleCall_4_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getDefPropertyCSAccess().getNameUnrestrictedNameParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefPropertyCS__OwnedTypeAssignment_6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getOwnedTypeTypeExpCSParserRuleCall_6_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getDefPropertyCSAccess().getOwnedTypeTypeExpCSParserRuleCall_6_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DefPropertyCS__OwnedSpecificationAssignment_8

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDefPropertyCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_8_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getDefPropertyCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_8_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__NameAssignment_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getNameIdentifierParserRuleCall_1_0_0()); }

-	ruleIdentifier{ after(grammarAccess.getImportCSAccess().getNameIdentifierParserRuleCall_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__OwnedPathNameAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getOwnedPathNameURIPathNameCSParserRuleCall_2_0()); }

-	ruleURIPathNameCS{ after(grammarAccess.getImportCSAccess().getOwnedPathNameURIPathNameCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__IsAllAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }

-(

-{ before(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }

-

-	'::*' 

-

-{ after(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }

-)

-

-{ after(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IncludeCS__ReferredNamespaceAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIncludeCSAccess().getReferredNamespaceNamespaceCrossReference_1_0()); }

-(

-{ before(grammarAccess.getIncludeCSAccess().getReferredNamespaceNamespaceURIParserRuleCall_1_0_1()); }

-	ruleURI{ after(grammarAccess.getIncludeCSAccess().getReferredNamespaceNamespaceURIParserRuleCall_1_0_1()); }

-)

-{ after(grammarAccess.getIncludeCSAccess().getReferredNamespaceNamespaceCrossReference_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibraryCS__ReferredPackageAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_1_0()); }

-(

-{ before(grammarAccess.getLibraryCSAccess().getReferredPackagePackageURIParserRuleCall_1_0_1()); }

-	ruleURI{ after(grammarAccess.getLibraryCSAccess().getReferredPackagePackageURIParserRuleCall_1_0_1()); }

-)

-{ after(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__OwnedSignatureAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); }

-	ruleTemplateSignatureCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__OwnedPathNameAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_2_0()); }

-	rulePathNameCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__OwnedParametersAssignment_4_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersParameterCSParserRuleCall_4_0_0()); }

-	ruleParameterCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersParameterCSParserRuleCall_4_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__OwnedParametersAssignment_4_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersParameterCSParserRuleCall_4_1_1_0()); }

-	ruleParameterCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersParameterCSParserRuleCall_4_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__OwnedTypeAssignment_7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_7_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_7_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__OwnedPreconditionsAssignment_8_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPreconditionsConstraintCSParserRuleCall_8_0_1_0()); }

-	ruleConstraintCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedPreconditionsConstraintCSParserRuleCall_8_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__OwnedPostconditionsAssignment_8_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPostconditionsConstraintCSParserRuleCall_8_1_1_0()); }

-	ruleConstraintCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedPostconditionsConstraintCSParserRuleCall_8_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationContextDeclCS__OwnedBodiesAssignment_8_2_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedBodiesSpecificationCSParserRuleCall_8_2_3_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedBodiesSpecificationCSParserRuleCall_8_2_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageDeclarationCS__OwnedPathNameAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageDeclarationCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); }

-	rulePathNameCS{ after(grammarAccess.getPackageDeclarationCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageDeclarationCS__OwnedInvariantsAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageDeclarationCSAccess().getOwnedInvariantsConstraintCSParserRuleCall_2_1_0()); }

-	ruleConstraintCS{ after(grammarAccess.getPackageDeclarationCSAccess().getOwnedInvariantsConstraintCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageDeclarationCS__OwnedContextsAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageDeclarationCSAccess().getOwnedContextsContextDeclCSParserRuleCall_3_0()); }

-	ruleContextDeclCS{ after(grammarAccess.getPackageDeclarationCSAccess().getOwnedContextsContextDeclCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__NameAssignment_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__OwnedTypeAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getParameterCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__OwnedPathNameAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); }

-	rulePathNameCS{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__OwnedTypeAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_3_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDerivedInvariantsConstraintCSParserRuleCall_4_0_1_0()); }

-	ruleConstraintCS{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDerivedInvariantsConstraintCSParserRuleCall_4_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_4_1_2_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_4_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SpecificationCS__OwnedExpressionAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0()); }

-	ruleExpCS{ after(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SpecificationCS__ExprStringAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); }

-	RULE_UNQUOTED_STRING{ after(grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__OwnedParametersAssignment_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_1_0()); }

-	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_2_1_0()); }

-	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__OwnedParametersAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_1_0()); }

-	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_2_1_0()); }

-	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__URIPathNameCS__OwnedPathElementsAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsURIFirstPathElementCSParserRuleCall_0_0()); }

-	ruleURIFirstPathElementCS{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsURIFirstPathElementCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIPathNameCS__OwnedPathElementsAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }

-	ruleNextPathElementCS{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__ReferredElementAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }

-)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__ReferredElementAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }

-	ruleURI{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }

-)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimitiveTypeCS__NameAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }

-	rulePrimitiveTypeIdentifier{ after(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }

-	ruleCollectionTypeIdentifier{ after(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__OwnedTypeAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-

-	'Tuple' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__OwnedPartsAssignment_1_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }

-	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }

-	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__OwnedTypeAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__OwnedTypeAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-	ruleCollectionTypeCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }

-	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }

-	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }

-	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }

-	rulePatternExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__OwnedTypeAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-	ruleCollectionTypeCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__OwnedPartsAssignment_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }

-	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }

-	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }

-	ruleIdentifier{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__ReferredPropertyAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }

-)

-{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__OwnedInitExpressionAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }

-(rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0)

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__PatternVariableNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__OwnedPatternTypeAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }

-	ruleExpCS{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__OwnedPartsAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }

-	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }

-	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }

-	ruleExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NumberLiteralExpCS__SymbolAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }

-	ruleNUMBER_LITERAL{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StringLiteralExpCS__SegmentsAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }

-	ruleStringLiteral{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BooleanLiteralExpCS__SymbolAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-

-	'true' 

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BooleanLiteralExpCS__SymbolAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-

-	'false' 

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-)

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-	ruleMultiplicityCS{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralExpCS__OwnedTypeAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }

-	ruleTypeLiteralWithMultiplicityCS{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__OwnedPathNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-	rulePathNameCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }

-	ruleCurlyBracketedClauseCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__OwnedMultiplicityAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-	ruleMultiplicityCS{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__NameAssignment_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }

-	ruleBinaryOperatorName{ after(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__OwnedRightAssignment_0_1_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }

-	ruleExpCS{ after(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__NameAssignment_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__OwnedRightAssignment_0_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }

-	rulePrefixedLetExpCS{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__NameAssignment_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }

-	rulePrefixedPrimaryExpCS{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedPathNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-	rulePathNameCS{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }

-	ruleSquareBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }

-	ruleRoundBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }

-	ruleCurlyBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__IsPreAssignment_4_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-(

-{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-

-	'@' 

-

-{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-)

-

-{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }

-	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }

-	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__ValueAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }

-	ruleStringLiteral{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }

-	ruleNavigatingArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }

-	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }

-	ruleNavigatingSemiArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }

-	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }

-	ruleNavigatingBarArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }

-	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__OwnedTermsAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }

-	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedTypeAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__PrefixAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-

-	'|' 

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__PrefixAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-

-	',' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__PrefixAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-

-	';' 

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedConditionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }

-(rule__IfExpCS__OwnedConditionAlternatives_1_0)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedThenExpressionAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedIfThenExpressionsAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }

-	ruleElseIfThenExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedElseExpressionAssignment_6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }

-	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__OwnedConditionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }

-	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__OwnedVariablesAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }

-	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__OwnedVariablesAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }

-	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__OwnedInExpressionAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }

-	ruleExpCS{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }

-	ruleRoundBracketedClauseCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__OwnedTypeAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__OwnedInitExpressionAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }

-	ruleExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__OwnedExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__LowerBoundAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }

-	ruleLOWER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }

-	ruleUPPER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityStringCS__StringBoundsAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }

-(rule__MultiplicityStringCS__StringBoundsAlternatives_0)

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__OwnedPathElementsAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }

-	ruleFirstPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__OwnedPathElementsAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }

-	ruleNextPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FirstPathElementCS__ReferredElementAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }

-)

-{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NextPathElementCS__ReferredElementAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }

-	ruleUnreservedName{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }

-)

-{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }

-	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }

-	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }

-	ruleTypeRefCS{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedSuperAssignment_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__OwnedPathNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-	rulePathNameCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__OwnedBindingAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }

-	ruleTemplateBindingCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-RULE_UNQUOTED_STRING : '\u00A3$%^\u00A3$%^';

-

-fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');

-

-fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');

-

-RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';

-

-RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';

-

-RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';

-

-RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;

-

-RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;

-

-RULE_INT : ('0'..'9')+;

-

-RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';

-

-RULE_SL_COMMENT : '--' ~(('\n'|'\r'))* ('\r'? '\n')?;

-

-RULE_WS : (' '|'\t'|'\r'|'\n')+;

-

-RULE_ANY_OTHER : .;

-

-

+/*
+ * generated by Xtext
+ */
+grammar InternalCompleteOCL;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.ocl.xtext.completeocl.ui.contentassist.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.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.eclipse.ocl.xtext.completeocl.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+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.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.ocl.xtext.completeocl.services.CompleteOCLGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private CompleteOCLGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(CompleteOCLGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleCompleteOCLDocumentCS
+entryRuleCompleteOCLDocumentCS 
+:
+{ before(grammarAccess.getCompleteOCLDocumentCSRule()); }
+	 ruleCompleteOCLDocumentCS
+{ after(grammarAccess.getCompleteOCLDocumentCSRule()); } 
+	 EOF 
+;
+
+// Rule CompleteOCLDocumentCS
+ruleCompleteOCLDocumentCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getGroup()); }
+(rule__CompleteOCLDocumentCS__Group__0)
+{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCompleteOCLNavigationOperatorName
+entryRuleCompleteOCLNavigationOperatorName 
+:
+{ before(grammarAccess.getCompleteOCLNavigationOperatorNameRule()); }
+	 ruleCompleteOCLNavigationOperatorName
+{ after(grammarAccess.getCompleteOCLNavigationOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule CompleteOCLNavigationOperatorName
+ruleCompleteOCLNavigationOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getAlternatives()); }
+(rule__CompleteOCLNavigationOperatorName__Alternatives)
+{ after(grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleClassifierContextDeclCS
+entryRuleClassifierContextDeclCS 
+:
+{ before(grammarAccess.getClassifierContextDeclCSRule()); }
+	 ruleClassifierContextDeclCS
+{ after(grammarAccess.getClassifierContextDeclCSRule()); } 
+	 EOF 
+;
+
+// Rule ClassifierContextDeclCS
+ruleClassifierContextDeclCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getGroup()); }
+(rule__ClassifierContextDeclCS__Group__0)
+{ after(grammarAccess.getClassifierContextDeclCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleConstraintCS
+entryRuleConstraintCS 
+:
+{ before(grammarAccess.getConstraintCSRule()); }
+	 ruleConstraintCS
+{ after(grammarAccess.getConstraintCSRule()); } 
+	 EOF 
+;
+
+// Rule ConstraintCS
+ruleConstraintCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getConstraintCSAccess().getGroup()); }
+(rule__ConstraintCS__Group__0)
+{ after(grammarAccess.getConstraintCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleContextDeclCS
+entryRuleContextDeclCS 
+:
+{ before(grammarAccess.getContextDeclCSRule()); }
+	 ruleContextDeclCS
+{ after(grammarAccess.getContextDeclCSRule()); } 
+	 EOF 
+;
+
+// Rule ContextDeclCS
+ruleContextDeclCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getContextDeclCSAccess().getAlternatives()); }
+(rule__ContextDeclCS__Alternatives)
+{ after(grammarAccess.getContextDeclCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDefCS
+entryRuleDefCS 
+:
+{ before(grammarAccess.getDefCSRule()); }
+	 ruleDefCS
+{ after(grammarAccess.getDefCSRule()); } 
+	 EOF 
+;
+
+// Rule DefCS
+ruleDefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDefCSAccess().getAlternatives()); }
+(rule__DefCS__Alternatives)
+{ after(grammarAccess.getDefCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDefOperationCS
+entryRuleDefOperationCS 
+:
+{ before(grammarAccess.getDefOperationCSRule()); }
+	 ruleDefOperationCS
+{ after(grammarAccess.getDefOperationCSRule()); } 
+	 EOF 
+;
+
+// Rule DefOperationCS
+ruleDefOperationCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getGroup()); }
+(rule__DefOperationCS__Group__0)
+{ after(grammarAccess.getDefOperationCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDefParameterCS
+entryRuleDefParameterCS 
+:
+{ before(grammarAccess.getDefParameterCSRule()); }
+	 ruleDefParameterCS
+{ after(grammarAccess.getDefParameterCSRule()); } 
+	 EOF 
+;
+
+// Rule DefParameterCS
+ruleDefParameterCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDefParameterCSAccess().getGroup()); }
+(rule__DefParameterCS__Group__0)
+{ after(grammarAccess.getDefParameterCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDefPropertyCS
+entryRuleDefPropertyCS 
+:
+{ before(grammarAccess.getDefPropertyCSRule()); }
+	 ruleDefPropertyCS
+{ after(grammarAccess.getDefPropertyCSRule()); } 
+	 EOF 
+;
+
+// Rule DefPropertyCS
+ruleDefPropertyCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getGroup()); }
+(rule__DefPropertyCS__Group__0)
+{ after(grammarAccess.getDefPropertyCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleImportCS
+entryRuleImportCS 
+:
+{ before(grammarAccess.getImportCSRule()); }
+	 ruleImportCS
+{ after(grammarAccess.getImportCSRule()); } 
+	 EOF 
+;
+
+// Rule ImportCS
+ruleImportCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getImportCSAccess().getGroup()); }
+(rule__ImportCS__Group__0)
+{ after(grammarAccess.getImportCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIncludeCS
+entryRuleIncludeCS 
+:
+{ before(grammarAccess.getIncludeCSRule()); }
+	 ruleIncludeCS
+{ after(grammarAccess.getIncludeCSRule()); } 
+	 EOF 
+;
+
+// Rule IncludeCS
+ruleIncludeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIncludeCSAccess().getGroup()); }
+(rule__IncludeCS__Group__0)
+{ after(grammarAccess.getIncludeCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLibraryCS
+entryRuleLibraryCS 
+:
+{ before(grammarAccess.getLibraryCSRule()); }
+	 ruleLibraryCS
+{ after(grammarAccess.getLibraryCSRule()); } 
+	 EOF 
+;
+
+// Rule LibraryCS
+ruleLibraryCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLibraryCSAccess().getGroup()); }
+(rule__LibraryCS__Group__0)
+{ after(grammarAccess.getLibraryCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOperationContextDeclCS
+entryRuleOperationContextDeclCS 
+:
+{ before(grammarAccess.getOperationContextDeclCSRule()); }
+	 ruleOperationContextDeclCS
+{ after(grammarAccess.getOperationContextDeclCSRule()); } 
+	 EOF 
+;
+
+// Rule OperationContextDeclCS
+ruleOperationContextDeclCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getGroup()); }
+(rule__OperationContextDeclCS__Group__0)
+{ after(grammarAccess.getOperationContextDeclCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePackageDeclarationCS
+entryRulePackageDeclarationCS 
+:
+{ before(grammarAccess.getPackageDeclarationCSRule()); }
+	 rulePackageDeclarationCS
+{ after(grammarAccess.getPackageDeclarationCSRule()); } 
+	 EOF 
+;
+
+// Rule PackageDeclarationCS
+rulePackageDeclarationCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPackageDeclarationCSAccess().getGroup()); }
+(rule__PackageDeclarationCS__Group__0)
+{ after(grammarAccess.getPackageDeclarationCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleParameterCS
+entryRuleParameterCS 
+:
+{ before(grammarAccess.getParameterCSRule()); }
+	 ruleParameterCS
+{ after(grammarAccess.getParameterCSRule()); } 
+	 EOF 
+;
+
+// Rule ParameterCS
+ruleParameterCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getParameterCSAccess().getGroup()); }
+(rule__ParameterCS__Group__0)
+{ after(grammarAccess.getParameterCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyContextDeclCS
+entryRulePropertyContextDeclCS 
+:
+{ before(grammarAccess.getPropertyContextDeclCSRule()); }
+	 rulePropertyContextDeclCS
+{ after(grammarAccess.getPropertyContextDeclCSRule()); } 
+	 EOF 
+;
+
+// Rule PropertyContextDeclCS
+rulePropertyContextDeclCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getGroup()); }
+(rule__PropertyContextDeclCS__Group__0)
+{ after(grammarAccess.getPropertyContextDeclCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSpecificationCS
+entryRuleSpecificationCS 
+:
+{ before(grammarAccess.getSpecificationCSRule()); }
+	 ruleSpecificationCS
+{ after(grammarAccess.getSpecificationCSRule()); } 
+	 EOF 
+;
+
+// Rule SpecificationCS
+ruleSpecificationCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSpecificationCSAccess().getAlternatives()); }
+(rule__SpecificationCS__Alternatives)
+{ after(grammarAccess.getSpecificationCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTemplateSignatureCS
+entryRuleTemplateSignatureCS 
+:
+{ before(grammarAccess.getTemplateSignatureCSRule()); }
+	 ruleTemplateSignatureCS
+{ after(grammarAccess.getTemplateSignatureCSRule()); } 
+	 EOF 
+;
+
+// Rule TemplateSignatureCS
+ruleTemplateSignatureCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getAlternatives()); }
+(rule__TemplateSignatureCS__Alternatives)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypedRefCS
+entryRuleTypedRefCS 
+:
+{ before(grammarAccess.getTypedRefCSRule()); }
+	 ruleTypedRefCS
+{ after(grammarAccess.getTypedRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypedRefCS
+ruleTypedRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedRefCSAccess().getAlternatives()); }
+(rule__TypedRefCS__Alternatives)
+{ after(grammarAccess.getTypedRefCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnrestrictedName
+entryRuleUnrestrictedName 
+:
+{ before(grammarAccess.getUnrestrictedNameRule()); }
+	 ruleUnrestrictedName
+{ after(grammarAccess.getUnrestrictedNameRule()); } 
+	 EOF 
+;
+
+// Rule UnrestrictedName
+ruleUnrestrictedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnrestrictedNameAccess().getAlternatives()); }
+(rule__UnrestrictedName__Alternatives)
+{ after(grammarAccess.getUnrestrictedNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingArgExpCS
+entryRuleNavigatingArgExpCS 
+:
+{ before(grammarAccess.getNavigatingArgExpCSRule()); }
+	 ruleNavigatingArgExpCS
+{ after(grammarAccess.getNavigatingArgExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingArgExpCS
+ruleNavigatingArgExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingArgExpCSAccess().getAlternatives()); }
+(rule__NavigatingArgExpCS__Alternatives)
+{ after(grammarAccess.getNavigatingArgExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigationOperatorName
+entryRuleNavigationOperatorName 
+:
+{ before(grammarAccess.getNavigationOperatorNameRule()); }
+	 ruleNavigationOperatorName
+{ after(grammarAccess.getNavigationOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule NavigationOperatorName
+ruleNavigationOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigationOperatorNameAccess().getAlternatives()); }
+(rule__NavigationOperatorName__Alternatives)
+{ after(grammarAccess.getNavigationOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimitiveTypeIdentifier
+entryRulePrimitiveTypeIdentifier 
+:
+{ before(grammarAccess.getPrimitiveTypeIdentifierRule()); }
+	 rulePrimitiveTypeIdentifier
+{ after(grammarAccess.getPrimitiveTypeIdentifierRule()); } 
+	 EOF 
+;
+
+// Rule PrimitiveTypeIdentifier
+rulePrimitiveTypeIdentifier
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }
+(rule__PrimitiveTypeIdentifier__Alternatives)
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnaryOperatorName
+entryRuleEssentialOCLUnaryOperatorName 
+:
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); }
+	 ruleEssentialOCLUnaryOperatorName
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLUnaryOperatorName
+ruleEssentialOCLUnaryOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }
+(rule__EssentialOCLUnaryOperatorName__Alternatives)
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLInfixOperatorName
+entryRuleEssentialOCLInfixOperatorName 
+:
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameRule()); }
+	 ruleEssentialOCLInfixOperatorName
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLInfixOperatorName
+ruleEssentialOCLInfixOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }
+(rule__EssentialOCLInfixOperatorName__Alternatives)
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLNavigationOperatorName
+entryRuleEssentialOCLNavigationOperatorName 
+:
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); }
+	 ruleEssentialOCLNavigationOperatorName
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLNavigationOperatorName
+ruleEssentialOCLNavigationOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }
+(rule__EssentialOCLNavigationOperatorName__Alternatives)
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBinaryOperatorName
+entryRuleBinaryOperatorName 
+:
+{ before(grammarAccess.getBinaryOperatorNameRule()); }
+	 ruleBinaryOperatorName
+{ after(grammarAccess.getBinaryOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule BinaryOperatorName
+ruleBinaryOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }
+(rule__BinaryOperatorName__Alternatives)
+{ after(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleInfixOperatorName
+entryRuleInfixOperatorName 
+:
+{ before(grammarAccess.getInfixOperatorNameRule()); }
+	 ruleInfixOperatorName
+{ after(grammarAccess.getInfixOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule InfixOperatorName
+ruleInfixOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }
+	ruleEssentialOCLInfixOperatorName
+{ after(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnaryOperatorName
+entryRuleUnaryOperatorName 
+:
+{ before(grammarAccess.getUnaryOperatorNameRule()); }
+	 ruleUnaryOperatorName
+{ after(grammarAccess.getUnaryOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule UnaryOperatorName
+ruleUnaryOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }
+	ruleEssentialOCLUnaryOperatorName
+{ after(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLUnrestrictedName
+entryRuleEssentialOCLUnrestrictedName 
+:
+{ before(grammarAccess.getEssentialOCLUnrestrictedNameRule()); }
+	 ruleEssentialOCLUnrestrictedName
+{ after(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLUnrestrictedName
+ruleEssentialOCLUnrestrictedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }
+	ruleIdentifier
+{ after(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLUnreservedName
+entryRuleEssentialOCLUnreservedName 
+:
+{ before(grammarAccess.getEssentialOCLUnreservedNameRule()); }
+	 ruleEssentialOCLUnreservedName
+{ after(grammarAccess.getEssentialOCLUnreservedNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLUnreservedName
+ruleEssentialOCLUnreservedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }
+(rule__EssentialOCLUnreservedName__Alternatives)
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnreservedName
+entryRuleUnreservedName 
+:
+{ before(grammarAccess.getUnreservedNameRule()); }
+	 ruleUnreservedName
+{ after(grammarAccess.getUnreservedNameRule()); } 
+	 EOF 
+;
+
+// Rule UnreservedName
+ruleUnreservedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }
+	ruleEssentialOCLUnreservedName
+{ after(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleURIPathNameCS
+entryRuleURIPathNameCS 
+:
+{ before(grammarAccess.getURIPathNameCSRule()); }
+	 ruleURIPathNameCS
+{ after(grammarAccess.getURIPathNameCSRule()); } 
+	 EOF 
+;
+
+// Rule URIPathNameCS
+ruleURIPathNameCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getURIPathNameCSAccess().getGroup()); }
+(rule__URIPathNameCS__Group__0)
+{ after(grammarAccess.getURIPathNameCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleURIFirstPathElementCS
+entryRuleURIFirstPathElementCS 
+:
+{ before(grammarAccess.getURIFirstPathElementCSRule()); }
+	 ruleURIFirstPathElementCS
+{ after(grammarAccess.getURIFirstPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule URIFirstPathElementCS
+ruleURIFirstPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }
+(rule__URIFirstPathElementCS__Alternatives)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimitiveTypeCS
+entryRulePrimitiveTypeCS 
+:
+{ before(grammarAccess.getPrimitiveTypeCSRule()); }
+	 rulePrimitiveTypeCS
+{ after(grammarAccess.getPrimitiveTypeCSRule()); } 
+	 EOF 
+;
+
+// Rule PrimitiveTypeCS
+rulePrimitiveTypeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }
+(rule__PrimitiveTypeCS__NameAssignment)
+{ after(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionTypeIdentifier
+entryRuleCollectionTypeIdentifier 
+:
+{ before(grammarAccess.getCollectionTypeIdentifierRule()); }
+	 ruleCollectionTypeIdentifier
+{ after(grammarAccess.getCollectionTypeIdentifierRule()); } 
+	 EOF 
+;
+
+// Rule CollectionTypeIdentifier
+ruleCollectionTypeIdentifier
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }
+(rule__CollectionTypeIdentifier__Alternatives)
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionTypeCS
+entryRuleCollectionTypeCS 
+:
+{ before(grammarAccess.getCollectionTypeCSRule()); }
+	 ruleCollectionTypeCS
+{ after(grammarAccess.getCollectionTypeCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionTypeCS
+ruleCollectionTypeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getGroup()); }
+(rule__CollectionTypeCS__Group__0)
+{ after(grammarAccess.getCollectionTypeCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTupleTypeCS
+entryRuleTupleTypeCS 
+:
+{ before(grammarAccess.getTupleTypeCSRule()); }
+	 ruleTupleTypeCS
+{ after(grammarAccess.getTupleTypeCSRule()); } 
+	 EOF 
+;
+
+// Rule TupleTypeCS
+ruleTupleTypeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup()); }
+(rule__TupleTypeCS__Group__0)
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTuplePartCS
+entryRuleTuplePartCS 
+:
+{ before(grammarAccess.getTuplePartCSRule()); }
+	 ruleTuplePartCS
+{ after(grammarAccess.getTuplePartCSRule()); } 
+	 EOF 
+;
+
+// Rule TuplePartCS
+ruleTuplePartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getGroup()); }
+(rule__TuplePartCS__Group__0)
+{ after(grammarAccess.getTuplePartCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionLiteralExpCS
+entryRuleCollectionLiteralExpCS 
+:
+{ before(grammarAccess.getCollectionLiteralExpCSRule()); }
+	 ruleCollectionLiteralExpCS
+{ after(grammarAccess.getCollectionLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionLiteralExpCS
+ruleCollectionLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }
+(rule__CollectionLiteralExpCS__Group__0)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionLiteralPartCS
+entryRuleCollectionLiteralPartCS 
+:
+{ before(grammarAccess.getCollectionLiteralPartCSRule()); }
+	 ruleCollectionLiteralPartCS
+{ after(grammarAccess.getCollectionLiteralPartCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionLiteralPartCS
+ruleCollectionLiteralPartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }
+(rule__CollectionLiteralPartCS__Alternatives)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionPatternCS
+entryRuleCollectionPatternCS 
+:
+{ before(grammarAccess.getCollectionPatternCSRule()); }
+	 ruleCollectionPatternCS
+{ after(grammarAccess.getCollectionPatternCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionPatternCS
+ruleCollectionPatternCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup()); }
+(rule__CollectionPatternCS__Group__0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleConstructorPartCS
+entryRuleConstructorPartCS 
+:
+{ before(grammarAccess.getConstructorPartCSRule()); }
+	 ruleConstructorPartCS
+{ after(grammarAccess.getConstructorPartCSRule()); } 
+	 EOF 
+;
+
+// Rule ConstructorPartCS
+ruleConstructorPartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getGroup()); }
+(rule__ConstructorPartCS__Group__0)
+{ after(grammarAccess.getConstructorPartCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePatternExpCS
+entryRulePatternExpCS 
+:
+{ before(grammarAccess.getPatternExpCSRule()); }
+	 rulePatternExpCS
+{ after(grammarAccess.getPatternExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PatternExpCS
+rulePatternExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getGroup()); }
+(rule__PatternExpCS__Group__0)
+{ after(grammarAccess.getPatternExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLambdaLiteralExpCS
+entryRuleLambdaLiteralExpCS 
+:
+{ before(grammarAccess.getLambdaLiteralExpCSRule()); }
+	 ruleLambdaLiteralExpCS
+{ after(grammarAccess.getLambdaLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule LambdaLiteralExpCS
+ruleLambdaLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }
+(rule__LambdaLiteralExpCS__Group__0)
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimitiveLiteralExpCS
+entryRulePrimitiveLiteralExpCS 
+:
+{ before(grammarAccess.getPrimitiveLiteralExpCSRule()); }
+	 rulePrimitiveLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrimitiveLiteralExpCS
+rulePrimitiveLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }
+(rule__PrimitiveLiteralExpCS__Alternatives)
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTupleLiteralExpCS
+entryRuleTupleLiteralExpCS 
+:
+{ before(grammarAccess.getTupleLiteralExpCSRule()); }
+	 ruleTupleLiteralExpCS
+{ after(grammarAccess.getTupleLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TupleLiteralExpCS
+ruleTupleLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }
+(rule__TupleLiteralExpCS__Group__0)
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTupleLiteralPartCS
+entryRuleTupleLiteralPartCS 
+:
+{ before(grammarAccess.getTupleLiteralPartCSRule()); }
+	 ruleTupleLiteralPartCS
+{ after(grammarAccess.getTupleLiteralPartCSRule()); } 
+	 EOF 
+;
+
+// Rule TupleLiteralPartCS
+ruleTupleLiteralPartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }
+(rule__TupleLiteralPartCS__Group__0)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNumberLiteralExpCS
+entryRuleNumberLiteralExpCS 
+:
+{ before(grammarAccess.getNumberLiteralExpCSRule()); }
+	 ruleNumberLiteralExpCS
+{ after(grammarAccess.getNumberLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NumberLiteralExpCS
+ruleNumberLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }
+(rule__NumberLiteralExpCS__SymbolAssignment)
+{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStringLiteralExpCS
+entryRuleStringLiteralExpCS 
+:
+{ before(grammarAccess.getStringLiteralExpCSRule()); }
+	 ruleStringLiteralExpCS
+{ after(grammarAccess.getStringLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule StringLiteralExpCS
+ruleStringLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+(
+{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+(rule__StringLiteralExpCS__SegmentsAssignment)
+{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+)
+(
+{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+(rule__StringLiteralExpCS__SegmentsAssignment)*
+{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBooleanLiteralExpCS
+entryRuleBooleanLiteralExpCS 
+:
+{ before(grammarAccess.getBooleanLiteralExpCSRule()); }
+	 ruleBooleanLiteralExpCS
+{ after(grammarAccess.getBooleanLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule BooleanLiteralExpCS
+ruleBooleanLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }
+(rule__BooleanLiteralExpCS__Alternatives)
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnlimitedNaturalLiteralExpCS
+entryRuleUnlimitedNaturalLiteralExpCS 
+:
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }
+	 ruleUnlimitedNaturalLiteralExpCS
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule UnlimitedNaturalLiteralExpCS
+ruleUnlimitedNaturalLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }
+(rule__UnlimitedNaturalLiteralExpCS__Group__0)
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleInvalidLiteralExpCS
+entryRuleInvalidLiteralExpCS 
+:
+{ before(grammarAccess.getInvalidLiteralExpCSRule()); }
+	 ruleInvalidLiteralExpCS
+{ after(grammarAccess.getInvalidLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule InvalidLiteralExpCS
+ruleInvalidLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }
+(rule__InvalidLiteralExpCS__Group__0)
+{ after(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNullLiteralExpCS
+entryRuleNullLiteralExpCS 
+:
+{ before(grammarAccess.getNullLiteralExpCSRule()); }
+	 ruleNullLiteralExpCS
+{ after(grammarAccess.getNullLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NullLiteralExpCS
+ruleNullLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }
+(rule__NullLiteralExpCS__Group__0)
+{ after(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeLiteralCS
+entryRuleTypeLiteralCS 
+:
+{ before(grammarAccess.getTypeLiteralCSRule()); }
+	 ruleTypeLiteralCS
+{ after(grammarAccess.getTypeLiteralCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeLiteralCS
+ruleTypeLiteralCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }
+(rule__TypeLiteralCS__Alternatives)
+{ after(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeLiteralWithMultiplicityCS
+entryRuleTypeLiteralWithMultiplicityCS 
+:
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }
+	 ruleTypeLiteralWithMultiplicityCS
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeLiteralWithMultiplicityCS
+ruleTypeLiteralWithMultiplicityCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }
+(rule__TypeLiteralWithMultiplicityCS__Group__0)
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeLiteralExpCS
+entryRuleTypeLiteralExpCS 
+:
+{ before(grammarAccess.getTypeLiteralExpCSRule()); }
+	 ruleTypeLiteralExpCS
+{ after(grammarAccess.getTypeLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeLiteralExpCS
+ruleTypeLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }
+(rule__TypeLiteralExpCS__OwnedTypeAssignment)
+{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeNameExpCS
+entryRuleTypeNameExpCS 
+:
+{ before(grammarAccess.getTypeNameExpCSRule()); }
+	 ruleTypeNameExpCS
+{ after(grammarAccess.getTypeNameExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeNameExpCS
+ruleTypeNameExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getGroup()); }
+(rule__TypeNameExpCS__Group__0)
+{ after(grammarAccess.getTypeNameExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeExpCS
+entryRuleTypeExpCS 
+:
+{ before(grammarAccess.getTypeExpCSRule()); }
+	 ruleTypeExpCS
+{ after(grammarAccess.getTypeExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeExpCS
+ruleTypeExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getGroup()); }
+(rule__TypeExpCS__Group__0)
+{ after(grammarAccess.getTypeExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleExpCS
+entryRuleExpCS 
+:
+{ before(grammarAccess.getExpCSRule()); }
+	 ruleExpCS
+{ after(grammarAccess.getExpCSRule()); } 
+	 EOF 
+;
+
+// Rule ExpCS
+ruleExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getExpCSAccess().getAlternatives()); }
+(rule__ExpCS__Alternatives)
+{ after(grammarAccess.getExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrefixedLetExpCS
+entryRulePrefixedLetExpCS 
+:
+{ before(grammarAccess.getPrefixedLetExpCSRule()); }
+	 rulePrefixedLetExpCS
+{ after(grammarAccess.getPrefixedLetExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrefixedLetExpCS
+rulePrefixedLetExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }
+(rule__PrefixedLetExpCS__Alternatives)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrefixedPrimaryExpCS
+entryRulePrefixedPrimaryExpCS 
+:
+{ before(grammarAccess.getPrefixedPrimaryExpCSRule()); }
+	 rulePrefixedPrimaryExpCS
+{ after(grammarAccess.getPrefixedPrimaryExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrefixedPrimaryExpCS
+rulePrefixedPrimaryExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }
+(rule__PrefixedPrimaryExpCS__Alternatives)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimaryExpCS
+entryRulePrimaryExpCS 
+:
+{ before(grammarAccess.getPrimaryExpCSRule()); }
+	 rulePrimaryExpCS
+{ after(grammarAccess.getPrimaryExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrimaryExpCS
+rulePrimaryExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }
+(rule__PrimaryExpCS__Alternatives)
+{ after(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNameExpCS
+entryRuleNameExpCS 
+:
+{ before(grammarAccess.getNameExpCSRule()); }
+	 ruleNameExpCS
+{ after(grammarAccess.getNameExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NameExpCS
+ruleNameExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNameExpCSAccess().getGroup()); }
+(rule__NameExpCS__Group__0)
+{ after(grammarAccess.getNameExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCurlyBracketedClauseCS
+entryRuleCurlyBracketedClauseCS 
+:
+{ before(grammarAccess.getCurlyBracketedClauseCSRule()); }
+	 ruleCurlyBracketedClauseCS
+{ after(grammarAccess.getCurlyBracketedClauseCSRule()); } 
+	 EOF 
+;
+
+// Rule CurlyBracketedClauseCS
+ruleCurlyBracketedClauseCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }
+(rule__CurlyBracketedClauseCS__Group__0)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRoundBracketedClauseCS
+entryRuleRoundBracketedClauseCS 
+:
+{ before(grammarAccess.getRoundBracketedClauseCSRule()); }
+	 ruleRoundBracketedClauseCS
+{ after(grammarAccess.getRoundBracketedClauseCSRule()); } 
+	 EOF 
+;
+
+// Rule RoundBracketedClauseCS
+ruleRoundBracketedClauseCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }
+(rule__RoundBracketedClauseCS__Group__0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSquareBracketedClauseCS
+entryRuleSquareBracketedClauseCS 
+:
+{ before(grammarAccess.getSquareBracketedClauseCSRule()); }
+	 ruleSquareBracketedClauseCS
+{ after(grammarAccess.getSquareBracketedClauseCSRule()); } 
+	 EOF 
+;
+
+// Rule SquareBracketedClauseCS
+ruleSquareBracketedClauseCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }
+(rule__SquareBracketedClauseCS__Group__0)
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingArgCS
+entryRuleNavigatingArgCS 
+:
+{ before(grammarAccess.getNavigatingArgCSRule()); }
+	 ruleNavigatingArgCS
+{ after(grammarAccess.getNavigatingArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingArgCS
+ruleNavigatingArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }
+(rule__NavigatingArgCS__Alternatives)
+{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingBarArgCS
+entryRuleNavigatingBarArgCS 
+:
+{ before(grammarAccess.getNavigatingBarArgCSRule()); }
+	 ruleNavigatingBarArgCS
+{ after(grammarAccess.getNavigatingBarArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingBarArgCS
+ruleNavigatingBarArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }
+(rule__NavigatingBarArgCS__Group__0)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingCommaArgCS
+entryRuleNavigatingCommaArgCS 
+:
+{ before(grammarAccess.getNavigatingCommaArgCSRule()); }
+	 ruleNavigatingCommaArgCS
+{ after(grammarAccess.getNavigatingCommaArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingCommaArgCS
+ruleNavigatingCommaArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }
+(rule__NavigatingCommaArgCS__Group__0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingSemiArgCS
+entryRuleNavigatingSemiArgCS 
+:
+{ before(grammarAccess.getNavigatingSemiArgCSRule()); }
+	 ruleNavigatingSemiArgCS
+{ after(grammarAccess.getNavigatingSemiArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingSemiArgCS
+ruleNavigatingSemiArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }
+(rule__NavigatingSemiArgCS__Group__0)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIfExpCS
+entryRuleIfExpCS 
+:
+{ before(grammarAccess.getIfExpCSRule()); }
+	 ruleIfExpCS
+{ after(grammarAccess.getIfExpCSRule()); } 
+	 EOF 
+;
+
+// Rule IfExpCS
+ruleIfExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIfExpCSAccess().getGroup()); }
+(rule__IfExpCS__Group__0)
+{ after(grammarAccess.getIfExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleElseIfThenExpCS
+entryRuleElseIfThenExpCS 
+:
+{ before(grammarAccess.getElseIfThenExpCSRule()); }
+	 ruleElseIfThenExpCS
+{ after(grammarAccess.getElseIfThenExpCSRule()); } 
+	 EOF 
+;
+
+// Rule ElseIfThenExpCS
+ruleElseIfThenExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }
+(rule__ElseIfThenExpCS__Group__0)
+{ after(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLetExpCS
+entryRuleLetExpCS 
+:
+{ before(grammarAccess.getLetExpCSRule()); }
+	 ruleLetExpCS
+{ after(grammarAccess.getLetExpCSRule()); } 
+	 EOF 
+;
+
+// Rule LetExpCS
+ruleLetExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLetExpCSAccess().getGroup()); }
+(rule__LetExpCS__Group__0)
+{ after(grammarAccess.getLetExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLetVariableCS
+entryRuleLetVariableCS 
+:
+{ before(grammarAccess.getLetVariableCSRule()); }
+	 ruleLetVariableCS
+{ after(grammarAccess.getLetVariableCSRule()); } 
+	 EOF 
+;
+
+// Rule LetVariableCS
+ruleLetVariableCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getGroup()); }
+(rule__LetVariableCS__Group__0)
+{ after(grammarAccess.getLetVariableCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNestedExpCS
+entryRuleNestedExpCS 
+:
+{ before(grammarAccess.getNestedExpCSRule()); }
+	 ruleNestedExpCS
+{ after(grammarAccess.getNestedExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NestedExpCS
+ruleNestedExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getGroup()); }
+(rule__NestedExpCS__Group__0)
+{ after(grammarAccess.getNestedExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSelfExpCS
+entryRuleSelfExpCS 
+:
+{ before(grammarAccess.getSelfExpCSRule()); }
+	 ruleSelfExpCS
+{ after(grammarAccess.getSelfExpCSRule()); } 
+	 EOF 
+;
+
+// Rule SelfExpCS
+ruleSelfExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSelfExpCSAccess().getGroup()); }
+(rule__SelfExpCS__Group__0)
+{ after(grammarAccess.getSelfExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMultiplicityBoundsCS
+entryRuleMultiplicityBoundsCS 
+:
+{ before(grammarAccess.getMultiplicityBoundsCSRule()); }
+	 ruleMultiplicityBoundsCS
+{ after(grammarAccess.getMultiplicityBoundsCSRule()); } 
+	 EOF 
+;
+
+// Rule MultiplicityBoundsCS
+ruleMultiplicityBoundsCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }
+(rule__MultiplicityBoundsCS__Group__0)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMultiplicityCS
+entryRuleMultiplicityCS 
+:
+{ before(grammarAccess.getMultiplicityCSRule()); }
+	 ruleMultiplicityCS
+{ after(grammarAccess.getMultiplicityCSRule()); } 
+	 EOF 
+;
+
+// Rule MultiplicityCS
+ruleMultiplicityCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getGroup()); }
+(rule__MultiplicityCS__Group__0)
+{ after(grammarAccess.getMultiplicityCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMultiplicityStringCS
+entryRuleMultiplicityStringCS 
+:
+{ before(grammarAccess.getMultiplicityStringCSRule()); }
+	 ruleMultiplicityStringCS
+{ after(grammarAccess.getMultiplicityStringCSRule()); } 
+	 EOF 
+;
+
+// Rule MultiplicityStringCS
+ruleMultiplicityStringCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }
+(rule__MultiplicityStringCS__StringBoundsAssignment)
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePathNameCS
+entryRulePathNameCS 
+:
+{ before(grammarAccess.getPathNameCSRule()); }
+	 rulePathNameCS
+{ after(grammarAccess.getPathNameCSRule()); } 
+	 EOF 
+;
+
+// Rule PathNameCS
+rulePathNameCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPathNameCSAccess().getGroup()); }
+(rule__PathNameCS__Group__0)
+{ after(grammarAccess.getPathNameCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFirstPathElementCS
+entryRuleFirstPathElementCS 
+:
+{ before(grammarAccess.getFirstPathElementCSRule()); }
+	 ruleFirstPathElementCS
+{ after(grammarAccess.getFirstPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule FirstPathElementCS
+ruleFirstPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }
+(rule__FirstPathElementCS__ReferredElementAssignment)
+{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNextPathElementCS
+entryRuleNextPathElementCS 
+:
+{ before(grammarAccess.getNextPathElementCSRule()); }
+	 ruleNextPathElementCS
+{ after(grammarAccess.getNextPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule NextPathElementCS
+ruleNextPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }
+(rule__NextPathElementCS__ReferredElementAssignment)
+{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTemplateBindingCS
+entryRuleTemplateBindingCS 
+:
+{ before(grammarAccess.getTemplateBindingCSRule()); }
+	 ruleTemplateBindingCS
+{ after(grammarAccess.getTemplateBindingCSRule()); } 
+	 EOF 
+;
+
+// Rule TemplateBindingCS
+ruleTemplateBindingCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getGroup()); }
+(rule__TemplateBindingCS__Group__0)
+{ after(grammarAccess.getTemplateBindingCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTemplateParameterSubstitutionCS
+entryRuleTemplateParameterSubstitutionCS 
+:
+{ before(grammarAccess.getTemplateParameterSubstitutionCSRule()); }
+	 ruleTemplateParameterSubstitutionCS
+{ after(grammarAccess.getTemplateParameterSubstitutionCSRule()); } 
+	 EOF 
+;
+
+// Rule TemplateParameterSubstitutionCS
+ruleTemplateParameterSubstitutionCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }
+(rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment)
+{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeParameterCS
+entryRuleTypeParameterCS 
+:
+{ before(grammarAccess.getTypeParameterCSRule()); }
+	 ruleTypeParameterCS
+{ after(grammarAccess.getTypeParameterCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeParameterCS
+ruleTypeParameterCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup()); }
+(rule__TypeParameterCS__Group__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeRefCS
+entryRuleTypeRefCS 
+:
+{ before(grammarAccess.getTypeRefCSRule()); }
+	 ruleTypeRefCS
+{ after(grammarAccess.getTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeRefCS
+ruleTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeRefCSAccess().getAlternatives()); }
+(rule__TypeRefCS__Alternatives)
+{ after(grammarAccess.getTypeRefCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypedTypeRefCS
+entryRuleTypedTypeRefCS 
+:
+{ before(grammarAccess.getTypedTypeRefCSRule()); }
+	 ruleTypedTypeRefCS
+{ after(grammarAccess.getTypedTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypedTypeRefCS
+ruleTypedTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }
+(rule__TypedTypeRefCS__Group__0)
+{ after(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleWildcardTypeRefCS
+entryRuleWildcardTypeRefCS 
+:
+{ before(grammarAccess.getWildcardTypeRefCSRule()); }
+	 ruleWildcardTypeRefCS
+{ after(grammarAccess.getWildcardTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule WildcardTypeRefCS
+ruleWildcardTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }
+(rule__WildcardTypeRefCS__Group__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleID
+entryRuleID 
+:
+{ before(grammarAccess.getIDRule()); }
+	 ruleID
+{ after(grammarAccess.getIDRule()); } 
+	 EOF 
+;
+
+// Rule ID
+ruleID
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIDAccess().getAlternatives()); }
+(rule__ID__Alternatives)
+{ after(grammarAccess.getIDAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIdentifier
+entryRuleIdentifier 
+:
+{ before(grammarAccess.getIdentifierRule()); }
+	 ruleIdentifier
+{ after(grammarAccess.getIdentifierRule()); } 
+	 EOF 
+;
+
+// Rule Identifier
+ruleIdentifier
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }
+	ruleID
+{ after(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLOWER
+entryRuleLOWER 
+:
+{ before(grammarAccess.getLOWERRule()); }
+	 ruleLOWER
+{ after(grammarAccess.getLOWERRule()); } 
+	 EOF 
+;
+
+// Rule LOWER
+ruleLOWER
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }
+	RULE_INT
+{ after(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNUMBER_LITERAL
+entryRuleNUMBER_LITERAL 
+:
+{ before(grammarAccess.getNUMBER_LITERALRule()); }
+	 ruleNUMBER_LITERAL
+{ after(grammarAccess.getNUMBER_LITERALRule()); } 
+	 EOF 
+;
+
+// Rule NUMBER_LITERAL
+ruleNUMBER_LITERAL
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }
+	RULE_INT
+{ after(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStringLiteral
+entryRuleStringLiteral 
+:
+{ before(grammarAccess.getStringLiteralRule()); }
+	 ruleStringLiteral
+{ after(grammarAccess.getStringLiteralRule()); } 
+	 EOF 
+;
+
+// Rule StringLiteral
+ruleStringLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+	RULE_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUPPER
+entryRuleUPPER 
+:
+{ before(grammarAccess.getUPPERRule()); }
+	 ruleUPPER
+{ after(grammarAccess.getUPPERRule()); } 
+	 EOF 
+;
+
+// Rule UPPER
+ruleUPPER
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUPPERAccess().getAlternatives()); }
+(rule__UPPER__Alternatives)
+{ after(grammarAccess.getUPPERAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleURI
+entryRuleURI 
+:
+{ before(grammarAccess.getURIRule()); }
+	 ruleURI
+{ after(grammarAccess.getURIRule()); } 
+	 EOF 
+;
+
+// Rule URI
+ruleURI
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+	RULE_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__CompleteOCLDocumentCS__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedImportsAssignment_0_0()); }
+(rule__CompleteOCLDocumentCS__OwnedImportsAssignment_0_0)
+{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedImportsAssignment_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedIncludesAssignment_0_1()); }
+(rule__CompleteOCLDocumentCS__OwnedIncludesAssignment_0_1)
+{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedIncludesAssignment_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedLibrariesAssignment_0_2()); }
+(rule__CompleteOCLDocumentCS__OwnedLibrariesAssignment_0_2)
+{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedLibrariesAssignment_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompleteOCLDocumentCS__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedPackagesAssignment_1_0()); }
+(rule__CompleteOCLDocumentCS__OwnedPackagesAssignment_1_0)
+{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedPackagesAssignment_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedContextsAssignment_1_1()); }
+(rule__CompleteOCLDocumentCS__OwnedContextsAssignment_1_1)
+{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedContextsAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompleteOCLNavigationOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getCircumflexAccentKeyword_0()); }
+
+	'^' 
+
+{ after(grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getCircumflexAccentKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getCircumflexAccentCircumflexAccentKeyword_1()); }
+
+	'^^' 
+
+{ after(grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getCircumflexAccentCircumflexAccentKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ClassifierContextDeclCS__Alternatives_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getGroup_4_0()); }
+(rule__ClassifierContextDeclCS__Group_4_0__0)
+{ after(grammarAccess.getClassifierContextDeclCSAccess().getGroup_4_0()); }
+)
+
+    |(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedDefinitionsAssignment_4_1()); }
+(rule__ClassifierContextDeclCS__OwnedDefinitionsAssignment_4_1)
+{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedDefinitionsAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContextDeclCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContextDeclCSAccess().getPropertyContextDeclCSParserRuleCall_0()); }
+	rulePropertyContextDeclCS
+{ after(grammarAccess.getContextDeclCSAccess().getPropertyContextDeclCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getContextDeclCSAccess().getClassifierContextDeclCSParserRuleCall_1()); }
+	ruleClassifierContextDeclCS
+{ after(grammarAccess.getContextDeclCSAccess().getClassifierContextDeclCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getContextDeclCSAccess().getOperationContextDeclCSParserRuleCall_2()); }
+	ruleOperationContextDeclCS
+{ after(grammarAccess.getContextDeclCSAccess().getOperationContextDeclCSParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefCSAccess().getDefOperationCSParserRuleCall_0()); }
+	ruleDefOperationCS
+{ after(grammarAccess.getDefCSAccess().getDefOperationCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDefCSAccess().getDefPropertyCSParserRuleCall_1()); }
+	ruleDefPropertyCS
+{ after(grammarAccess.getDefCSAccess().getDefPropertyCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Alternatives_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getGroup_8_0()); }
+(rule__OperationContextDeclCS__Group_8_0__0)
+{ after(grammarAccess.getOperationContextDeclCSAccess().getGroup_8_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getGroup_8_1()); }
+(rule__OperationContextDeclCS__Group_8_1__0)
+{ after(grammarAccess.getOperationContextDeclCSAccess().getGroup_8_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getGroup_8_2()); }
+(rule__OperationContextDeclCS__Group_8_2__0)
+{ after(grammarAccess.getOperationContextDeclCSAccess().getGroup_8_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__Alternatives_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getGroup_4_0()); }
+(rule__PropertyContextDeclCS__Group_4_0__0)
+{ after(grammarAccess.getPropertyContextDeclCSAccess().getGroup_4_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getGroup_4_1()); }
+(rule__PropertyContextDeclCS__Group_4_1__0)
+{ after(grammarAccess.getPropertyContextDeclCSAccess().getGroup_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpecificationCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpecificationCSAccess().getOwnedExpressionAssignment_0()); }
+(rule__SpecificationCS__OwnedExpressionAssignment_0)
+{ after(grammarAccess.getSpecificationCSAccess().getOwnedExpressionAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getSpecificationCSAccess().getExprStringAssignment_1()); }
+(rule__SpecificationCS__ExprStringAssignment_1)
+{ after(grammarAccess.getSpecificationCSAccess().getExprStringAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_0()); }
+(rule__TemplateSignatureCS__Group_0__0)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_1()); }
+(rule__TemplateSignatureCS__Group_1__0)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedRefCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedRefCSAccess().getTypeLiteralCSParserRuleCall_0()); }
+	ruleTypeLiteralCS
+{ after(grammarAccess.getTypedRefCSAccess().getTypeLiteralCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); }
+	ruleTypedTypeRefCS
+{ after(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UnrestrictedName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall_0()); }
+	ruleEssentialOCLUnrestrictedName
+{ after(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUnrestrictedNameAccess().getImportKeyword_1()); }
+
+	'import' 
+
+{ after(grammarAccess.getUnrestrictedNameAccess().getImportKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getUnrestrictedNameAccess().getIncludeKeyword_2()); }
+
+	'include' 
+
+{ after(grammarAccess.getUnrestrictedNameAccess().getIncludeKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getUnrestrictedNameAccess().getLibraryKeyword_3()); }
+
+	'library' 
+
+{ after(grammarAccess.getUnrestrictedNameAccess().getLibraryKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgExpCSAccess().getGroup_0()); }
+(rule__NavigatingArgExpCS__Group_0__0)
+{ after(grammarAccess.getNavigatingArgExpCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall_1()); }
+	ruleExpCS
+{ after(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigationOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall_0()); }
+	ruleEssentialOCLNavigationOperatorName
+{ after(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNavigationOperatorNameAccess().getCompleteOCLNavigationOperatorNameParserRuleCall_1()); }
+	ruleCompleteOCLNavigationOperatorName
+{ after(grammarAccess.getNavigationOperatorNameAccess().getCompleteOCLNavigationOperatorNameParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimitiveTypeIdentifier__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }
+
+	'Boolean' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }
+
+	'Integer' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }
+
+	'Real' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }
+
+	'String' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }
+
+	'UnlimitedNatural' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }
+
+	'OclAny' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }
+
+	'OclInvalid' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclMessageKeyword_7()); }
+
+	'OclMessage' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclMessageKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclStateKeyword_8()); }
+
+	'OclState' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclStateKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_9()); }
+
+	'OclVoid' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EssentialOCLUnaryOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }
+
+	'-' 
+
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }
+
+	'not' 
+
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EssentialOCLInfixOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }
+
+	'*' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }
+
+	'/' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }
+
+	'+' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }
+
+	'-' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }
+
+	'>' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }
+
+	'<' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }
+
+	'>=' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }
+
+	'<=' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }
+
+	'=' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }
+
+	'<>' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }
+
+	'and' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }
+
+	'or' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }
+
+	'xor' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }
+
+	'implies' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EssentialOCLNavigationOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }
+
+	'.' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }
+
+	'->' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }
+
+	'?.' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }
+
+	'?->' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BinaryOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }
+	ruleInfixOperatorName
+{ after(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }
+	ruleNavigationOperatorName
+{ after(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EssentialOCLUnreservedName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }
+	ruleUnrestrictedName
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }
+	ruleCollectionTypeIdentifier
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }
+	rulePrimitiveTypeIdentifier
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }
+
+	'Tuple' 
+
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }
+(rule__URIFirstPathElementCS__ReferredElementAssignment_0)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }
+(rule__URIFirstPathElementCS__Group_1__0)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeIdentifier__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }
+
+	'Set' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }
+
+	'Bag' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }
+
+	'Sequence' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }
+
+	'Collection' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }
+
+	'OrderedSet' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }
+(rule__CollectionLiteralPartCS__Group_0__0)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }
+(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }
+	ruleExpCS
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }
+	rulePatternExpCS
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimitiveLiteralExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }
+	ruleNumberLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }
+	ruleStringLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }
+	ruleBooleanLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }
+	ruleUnlimitedNaturalLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }
+	ruleInvalidLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }
+	ruleNullLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanLiteralExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }
+(rule__BooleanLiteralExpCS__SymbolAssignment_0)
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }
+(rule__BooleanLiteralExpCS__SymbolAssignment_1)
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }
+	rulePrimitiveTypeCS
+{ after(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }
+	ruleCollectionTypeCS
+{ after(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }
+	ruleTupleTypeCS
+{ after(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }
+	ruleTypeNameExpCS
+{ after(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }
+	ruleTypeLiteralCS
+{ after(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }
+	ruleCollectionPatternCS
+{ after(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getGroup_0()); }
+(rule__ExpCS__Group_0__0)
+{ after(grammarAccess.getExpCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }
+	rulePrefixedLetExpCS
+{ after(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }
+(rule__PrefixedLetExpCS__Group_0__0)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }
+	ruleLetExpCS
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }
+(rule__PrefixedPrimaryExpCS__Group_0__0)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }
+	rulePrimaryExpCS
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }
+	ruleNestedExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }
+	ruleIfExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }
+	ruleSelfExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }
+	rulePrimitiveLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }
+	ruleTupleLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }
+	ruleCollectionLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }
+	ruleLambdaLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }
+	ruleTypeLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }
+	ruleNameExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }
+(rule__CurlyBracketedClauseCS__Group_2_0__0)?
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }
+(rule__CurlyBracketedClauseCS__ValueAssignment_2_1)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }
+(rule__NavigatingArgCS__Group_0__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }
+(rule__NavigatingArgCS__Group_1__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Alternatives_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }
+(rule__NavigatingArgCS__Group_0_1_0__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }
+(rule__NavigatingArgCS__Group_0_1_1__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }
+(rule__NavigatingCommaArgCS__Group_2_0__0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }
+(rule__NavigatingCommaArgCS__Group_2_1__0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedConditionAlternatives_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }
+	ruleExpCS
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }
+	rulePatternExpCS
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }
+	ruleMultiplicityBoundsCS
+{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }
+	ruleMultiplicityStringCS
+{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityStringCS__StringBoundsAlternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }
+
+	'*' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }
+
+	'+' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }
+
+	'?' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }
+(rule__TypeParameterCS__Group_1_0__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }
+(rule__TypeParameterCS__Group_1_1__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeRefCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }
+	ruleTypedRefCS
+{ after(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }
+	ruleWildcardTypeRefCS
+{ after(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }
+(rule__WildcardTypeRefCS__Group_2_0__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }
+(rule__WildcardTypeRefCS__Group_2_1__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ID__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }
+	RULE_SIMPLE_ID
+{ after(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }
+	RULE_ESCAPED_ID
+{ after(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UPPER__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }
+	RULE_INT
+{ after(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }
+
+	'*' 
+
+{ after(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__CompleteOCLDocumentCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CompleteOCLDocumentCS__Group__0__Impl
+	rule__CompleteOCLDocumentCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompleteOCLDocumentCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getAlternatives_0()); }
+(rule__CompleteOCLDocumentCS__Alternatives_0)*
+{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CompleteOCLDocumentCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CompleteOCLDocumentCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompleteOCLDocumentCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getAlternatives_1()); }
+(rule__CompleteOCLDocumentCS__Alternatives_1)*
+{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getAlternatives_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ClassifierContextDeclCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ClassifierContextDeclCS__Group__0__Impl
+	rule__ClassifierContextDeclCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ClassifierContextDeclCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getContextKeyword_0()); }
+
+	'context' 
+
+{ after(grammarAccess.getClassifierContextDeclCSAccess().getContextKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ClassifierContextDeclCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ClassifierContextDeclCS__Group__1__Impl
+	rule__ClassifierContextDeclCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ClassifierContextDeclCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedSignatureAssignment_1()); }
+(rule__ClassifierContextDeclCS__OwnedSignatureAssignment_1)?
+{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedSignatureAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ClassifierContextDeclCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ClassifierContextDeclCS__Group__2__Impl
+	rule__ClassifierContextDeclCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ClassifierContextDeclCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getSelfNameAssignment_2()); }
+(rule__ClassifierContextDeclCS__SelfNameAssignment_2)?
+{ after(grammarAccess.getClassifierContextDeclCSAccess().getSelfNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ClassifierContextDeclCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ClassifierContextDeclCS__Group__3__Impl
+	rule__ClassifierContextDeclCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ClassifierContextDeclCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedPathNameAssignment_3()); }
+(rule__ClassifierContextDeclCS__OwnedPathNameAssignment_3)
+{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedPathNameAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ClassifierContextDeclCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ClassifierContextDeclCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ClassifierContextDeclCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getAlternatives_4()); }
+(rule__ClassifierContextDeclCS__Alternatives_4)
+{ after(grammarAccess.getClassifierContextDeclCSAccess().getAlternatives_4()); }
+)
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getAlternatives_4()); }
+(rule__ClassifierContextDeclCS__Alternatives_4)*
+{ after(grammarAccess.getClassifierContextDeclCSAccess().getAlternatives_4()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ClassifierContextDeclCS__Group_4_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ClassifierContextDeclCS__Group_4_0__0__Impl
+	rule__ClassifierContextDeclCS__Group_4_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ClassifierContextDeclCS__Group_4_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getInvKeyword_4_0_0()); }
+
+	'inv' 
+
+{ after(grammarAccess.getClassifierContextDeclCSAccess().getInvKeyword_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ClassifierContextDeclCS__Group_4_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ClassifierContextDeclCS__Group_4_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ClassifierContextDeclCS__Group_4_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedInvariantsAssignment_4_0_1()); }
+(rule__ClassifierContextDeclCS__OwnedInvariantsAssignment_4_0_1)
+{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedInvariantsAssignment_4_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ConstraintCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstraintCS__Group__0__Impl
+	rule__ConstraintCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstraintCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintCSAccess().getGroup_0()); }
+(rule__ConstraintCS__Group_0__0)?
+{ after(grammarAccess.getConstraintCSAccess().getGroup_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstraintCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstraintCS__Group__1__Impl
+	rule__ConstraintCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstraintCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintCSAccess().getColonKeyword_1()); }
+
+	':' 
+
+{ after(grammarAccess.getConstraintCSAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstraintCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstraintCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstraintCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintCSAccess().getOwnedSpecificationAssignment_2()); }
+(rule__ConstraintCS__OwnedSpecificationAssignment_2)
+{ after(grammarAccess.getConstraintCSAccess().getOwnedSpecificationAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ConstraintCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstraintCS__Group_0__0__Impl
+	rule__ConstraintCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstraintCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintCSAccess().getNameAssignment_0_0()); }
+(rule__ConstraintCS__NameAssignment_0_0)
+{ after(grammarAccess.getConstraintCSAccess().getNameAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstraintCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstraintCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstraintCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintCSAccess().getGroup_0_1()); }
+(rule__ConstraintCS__Group_0_1__0)?
+{ after(grammarAccess.getConstraintCSAccess().getGroup_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ConstraintCS__Group_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstraintCS__Group_0_1__0__Impl
+	rule__ConstraintCS__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstraintCS__Group_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintCSAccess().getLeftParenthesisKeyword_0_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getConstraintCSAccess().getLeftParenthesisKeyword_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstraintCS__Group_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstraintCS__Group_0_1__1__Impl
+	rule__ConstraintCS__Group_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstraintCS__Group_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintCSAccess().getOwnedMessageSpecificationAssignment_0_1_1()); }
+(rule__ConstraintCS__OwnedMessageSpecificationAssignment_0_1_1)
+{ after(grammarAccess.getConstraintCSAccess().getOwnedMessageSpecificationAssignment_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstraintCS__Group_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstraintCS__Group_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstraintCS__Group_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintCSAccess().getRightParenthesisKeyword_0_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getConstraintCSAccess().getRightParenthesisKeyword_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DefOperationCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group__0__Impl
+	rule__DefOperationCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getIsStaticAssignment_0()); }
+(rule__DefOperationCS__IsStaticAssignment_0)?
+{ after(grammarAccess.getDefOperationCSAccess().getIsStaticAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefOperationCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group__1__Impl
+	rule__DefOperationCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getDefKeyword_1()); }
+
+	'def' 
+
+{ after(grammarAccess.getDefOperationCSAccess().getDefKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefOperationCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group__2__Impl
+	rule__DefOperationCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getUnrestrictedNameParserRuleCall_2()); }
+(	ruleUnrestrictedName)?
+{ after(grammarAccess.getDefOperationCSAccess().getUnrestrictedNameParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefOperationCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group__3__Impl
+	rule__DefOperationCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getColonKeyword_3()); }
+
+	':' 
+
+{ after(grammarAccess.getDefOperationCSAccess().getColonKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefOperationCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group__4__Impl
+	rule__DefOperationCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getOwnedSignatureAssignment_4()); }
+(rule__DefOperationCS__OwnedSignatureAssignment_4)?
+{ after(grammarAccess.getDefOperationCSAccess().getOwnedSignatureAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefOperationCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group__5__Impl
+	rule__DefOperationCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getNameAssignment_5()); }
+(rule__DefOperationCS__NameAssignment_5)
+{ after(grammarAccess.getDefOperationCSAccess().getNameAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefOperationCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group__6__Impl
+	rule__DefOperationCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getLeftParenthesisKeyword_6()); }
+
+	'(' 
+
+{ after(grammarAccess.getDefOperationCSAccess().getLeftParenthesisKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefOperationCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group__7__Impl
+	rule__DefOperationCS__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getGroup_7()); }
+(rule__DefOperationCS__Group_7__0)?
+{ after(grammarAccess.getDefOperationCSAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefOperationCS__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group__8__Impl
+	rule__DefOperationCS__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getRightParenthesisKeyword_8()); }
+
+	')' 
+
+{ after(grammarAccess.getDefOperationCSAccess().getRightParenthesisKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefOperationCS__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group__9__Impl
+	rule__DefOperationCS__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getColonKeyword_9()); }
+
+	':' 
+
+{ after(grammarAccess.getDefOperationCSAccess().getColonKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefOperationCS__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group__10__Impl
+	rule__DefOperationCS__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getOwnedTypeAssignment_10()); }
+(rule__DefOperationCS__OwnedTypeAssignment_10)?
+{ after(grammarAccess.getDefOperationCSAccess().getOwnedTypeAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefOperationCS__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group__11__Impl
+	rule__DefOperationCS__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getEqualsSignKeyword_11()); }
+
+	'=' 
+
+{ after(grammarAccess.getDefOperationCSAccess().getEqualsSignKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefOperationCS__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group__12__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getOwnedSpecificationAssignment_12()); }
+(rule__DefOperationCS__OwnedSpecificationAssignment_12)
+{ after(grammarAccess.getDefOperationCSAccess().getOwnedSpecificationAssignment_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DefOperationCS__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group_7__0__Impl
+	rule__DefOperationCS__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getOwnedParametersAssignment_7_0()); }
+(rule__DefOperationCS__OwnedParametersAssignment_7_0)
+{ after(grammarAccess.getDefOperationCSAccess().getOwnedParametersAssignment_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefOperationCS__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getGroup_7_1()); }
+(rule__DefOperationCS__Group_7_1__0)*
+{ after(grammarAccess.getDefOperationCSAccess().getGroup_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DefOperationCS__Group_7_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group_7_1__0__Impl
+	rule__DefOperationCS__Group_7_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group_7_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getCommaKeyword_7_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getDefOperationCSAccess().getCommaKeyword_7_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefOperationCS__Group_7_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefOperationCS__Group_7_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__Group_7_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getOwnedParametersAssignment_7_1_1()); }
+(rule__DefOperationCS__OwnedParametersAssignment_7_1_1)
+{ after(grammarAccess.getDefOperationCSAccess().getOwnedParametersAssignment_7_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DefParameterCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefParameterCS__Group__0__Impl
+	rule__DefParameterCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefParameterCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefParameterCSAccess().getNameAssignment_0()); }
+(rule__DefParameterCS__NameAssignment_0)
+{ after(grammarAccess.getDefParameterCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefParameterCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefParameterCS__Group__1__Impl
+	rule__DefParameterCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefParameterCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefParameterCSAccess().getColonKeyword_1()); }
+
+	':' 
+
+{ after(grammarAccess.getDefParameterCSAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefParameterCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefParameterCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefParameterCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefParameterCSAccess().getOwnedTypeAssignment_2()); }
+(rule__DefParameterCS__OwnedTypeAssignment_2)
+{ after(grammarAccess.getDefParameterCSAccess().getOwnedTypeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DefPropertyCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefPropertyCS__Group__0__Impl
+	rule__DefPropertyCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefPropertyCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getIsStaticAssignment_0()); }
+(rule__DefPropertyCS__IsStaticAssignment_0)?
+{ after(grammarAccess.getDefPropertyCSAccess().getIsStaticAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefPropertyCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefPropertyCS__Group__1__Impl
+	rule__DefPropertyCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefPropertyCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getDefKeyword_1()); }
+
+	'def' 
+
+{ after(grammarAccess.getDefPropertyCSAccess().getDefKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefPropertyCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefPropertyCS__Group__2__Impl
+	rule__DefPropertyCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefPropertyCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getUnrestrictedNameParserRuleCall_2()); }
+(	ruleUnrestrictedName)?
+{ after(grammarAccess.getDefPropertyCSAccess().getUnrestrictedNameParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefPropertyCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefPropertyCS__Group__3__Impl
+	rule__DefPropertyCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefPropertyCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getColonKeyword_3()); }
+
+	':' 
+
+{ after(grammarAccess.getDefPropertyCSAccess().getColonKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefPropertyCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefPropertyCS__Group__4__Impl
+	rule__DefPropertyCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefPropertyCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getNameAssignment_4()); }
+(rule__DefPropertyCS__NameAssignment_4)
+{ after(grammarAccess.getDefPropertyCSAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefPropertyCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefPropertyCS__Group__5__Impl
+	rule__DefPropertyCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefPropertyCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getColonKeyword_5()); }
+
+	':' 
+
+{ after(grammarAccess.getDefPropertyCSAccess().getColonKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefPropertyCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefPropertyCS__Group__6__Impl
+	rule__DefPropertyCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefPropertyCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getOwnedTypeAssignment_6()); }
+(rule__DefPropertyCS__OwnedTypeAssignment_6)
+{ after(grammarAccess.getDefPropertyCSAccess().getOwnedTypeAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefPropertyCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefPropertyCS__Group__7__Impl
+	rule__DefPropertyCS__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefPropertyCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getEqualsSignKeyword_7()); }
+
+	'=' 
+
+{ after(grammarAccess.getDefPropertyCSAccess().getEqualsSignKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DefPropertyCS__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DefPropertyCS__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefPropertyCS__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getOwnedSpecificationAssignment_8()); }
+(rule__DefPropertyCS__OwnedSpecificationAssignment_8)
+{ after(grammarAccess.getDefPropertyCSAccess().getOwnedSpecificationAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ImportCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ImportCS__Group__0__Impl
+	rule__ImportCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getImportKeyword_0()); }
+
+	'import' 
+
+{ after(grammarAccess.getImportCSAccess().getImportKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ImportCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ImportCS__Group__1__Impl
+	rule__ImportCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getGroup_1()); }
+(rule__ImportCS__Group_1__0)?
+{ after(grammarAccess.getImportCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ImportCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ImportCS__Group__2__Impl
+	rule__ImportCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getOwnedPathNameAssignment_2()); }
+(rule__ImportCS__OwnedPathNameAssignment_2)
+{ after(grammarAccess.getImportCSAccess().getOwnedPathNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ImportCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ImportCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getIsAllAssignment_3()); }
+(rule__ImportCS__IsAllAssignment_3)?
+{ after(grammarAccess.getImportCSAccess().getIsAllAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__ImportCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ImportCS__Group_1__0__Impl
+	rule__ImportCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getNameAssignment_1_0()); }
+(rule__ImportCS__NameAssignment_1_0)
+{ after(grammarAccess.getImportCSAccess().getNameAssignment_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ImportCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ImportCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getColonKeyword_1_1()); }
+
+	':' 
+
+{ after(grammarAccess.getImportCSAccess().getColonKeyword_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__IncludeCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IncludeCS__Group__0__Impl
+	rule__IncludeCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IncludeCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIncludeCSAccess().getIncludeKeyword_0()); }
+
+	'include' 
+
+{ after(grammarAccess.getIncludeCSAccess().getIncludeKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IncludeCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IncludeCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IncludeCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIncludeCSAccess().getReferredNamespaceAssignment_1()); }
+(rule__IncludeCS__ReferredNamespaceAssignment_1)
+{ after(grammarAccess.getIncludeCSAccess().getReferredNamespaceAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibraryCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibraryCS__Group__0__Impl
+	rule__LibraryCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibraryCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryCSAccess().getLibraryKeyword_0()); }
+
+	'library' 
+
+{ after(grammarAccess.getLibraryCSAccess().getLibraryKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibraryCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibraryCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibraryCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryCSAccess().getReferredPackageAssignment_1()); }
+(rule__LibraryCS__ReferredPackageAssignment_1)
+{ after(grammarAccess.getLibraryCSAccess().getReferredPackageAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__OperationContextDeclCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group__0__Impl
+	rule__OperationContextDeclCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getContextKeyword_0()); }
+
+	'context' 
+
+{ after(grammarAccess.getOperationContextDeclCSAccess().getContextKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group__1__Impl
+	rule__OperationContextDeclCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedSignatureAssignment_1()); }
+(rule__OperationContextDeclCS__OwnedSignatureAssignment_1)?
+{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedSignatureAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group__2__Impl
+	rule__OperationContextDeclCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPathNameAssignment_2()); }
+(rule__OperationContextDeclCS__OwnedPathNameAssignment_2)
+{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedPathNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group__3__Impl
+	rule__OperationContextDeclCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getLeftParenthesisKeyword_3()); }
+
+	'(' 
+
+{ after(grammarAccess.getOperationContextDeclCSAccess().getLeftParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group__4__Impl
+	rule__OperationContextDeclCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getGroup_4()); }
+(rule__OperationContextDeclCS__Group_4__0)?
+{ after(grammarAccess.getOperationContextDeclCSAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group__5__Impl
+	rule__OperationContextDeclCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getRightParenthesisKeyword_5()); }
+
+	')' 
+
+{ after(grammarAccess.getOperationContextDeclCSAccess().getRightParenthesisKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group__6__Impl
+	rule__OperationContextDeclCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getColonKeyword_6()); }
+
+	':' 
+
+{ after(grammarAccess.getOperationContextDeclCSAccess().getColonKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group__7__Impl
+	rule__OperationContextDeclCS__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedTypeAssignment_7()); }
+(rule__OperationContextDeclCS__OwnedTypeAssignment_7)?
+{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedTypeAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getAlternatives_8()); }
+(rule__OperationContextDeclCS__Alternatives_8)*
+{ after(grammarAccess.getOperationContextDeclCSAccess().getAlternatives_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__OperationContextDeclCS__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group_4__0__Impl
+	rule__OperationContextDeclCS__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersAssignment_4_0()); }
+(rule__OperationContextDeclCS__OwnedParametersAssignment_4_0)
+{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersAssignment_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getGroup_4_1()); }
+(rule__OperationContextDeclCS__Group_4_1__0)*
+{ after(grammarAccess.getOperationContextDeclCSAccess().getGroup_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__OperationContextDeclCS__Group_4_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group_4_1__0__Impl
+	rule__OperationContextDeclCS__Group_4_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group_4_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getCommaKeyword_4_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getOperationContextDeclCSAccess().getCommaKeyword_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group_4_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group_4_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group_4_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersAssignment_4_1_1()); }
+(rule__OperationContextDeclCS__OwnedParametersAssignment_4_1_1)
+{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersAssignment_4_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__OperationContextDeclCS__Group_8_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group_8_0__0__Impl
+	rule__OperationContextDeclCS__Group_8_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group_8_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getPreKeyword_8_0_0()); }
+
+	'pre' 
+
+{ after(grammarAccess.getOperationContextDeclCSAccess().getPreKeyword_8_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group_8_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group_8_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group_8_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPreconditionsAssignment_8_0_1()); }
+(rule__OperationContextDeclCS__OwnedPreconditionsAssignment_8_0_1)
+{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedPreconditionsAssignment_8_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__OperationContextDeclCS__Group_8_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group_8_1__0__Impl
+	rule__OperationContextDeclCS__Group_8_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group_8_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getPostKeyword_8_1_0()); }
+
+	'post' 
+
+{ after(grammarAccess.getOperationContextDeclCSAccess().getPostKeyword_8_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group_8_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group_8_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group_8_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPostconditionsAssignment_8_1_1()); }
+(rule__OperationContextDeclCS__OwnedPostconditionsAssignment_8_1_1)
+{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedPostconditionsAssignment_8_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__OperationContextDeclCS__Group_8_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group_8_2__0__Impl
+	rule__OperationContextDeclCS__Group_8_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group_8_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getBodyKeyword_8_2_0()); }
+
+	'body' 
+
+{ after(grammarAccess.getOperationContextDeclCSAccess().getBodyKeyword_8_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group_8_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group_8_2__1__Impl
+	rule__OperationContextDeclCS__Group_8_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group_8_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getUnrestrictedNameParserRuleCall_8_2_1()); }
+(	ruleUnrestrictedName)?
+{ after(grammarAccess.getOperationContextDeclCSAccess().getUnrestrictedNameParserRuleCall_8_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group_8_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group_8_2__2__Impl
+	rule__OperationContextDeclCS__Group_8_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group_8_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getColonKeyword_8_2_2()); }
+
+	':' 
+
+{ after(grammarAccess.getOperationContextDeclCSAccess().getColonKeyword_8_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationContextDeclCS__Group_8_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationContextDeclCS__Group_8_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__Group_8_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedBodiesAssignment_8_2_3()); }
+(rule__OperationContextDeclCS__OwnedBodiesAssignment_8_2_3)
+{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedBodiesAssignment_8_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__PackageDeclarationCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageDeclarationCS__Group__0__Impl
+	rule__PackageDeclarationCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageDeclarationCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageDeclarationCSAccess().getPackageKeyword_0()); }
+
+	'package' 
+
+{ after(grammarAccess.getPackageDeclarationCSAccess().getPackageKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageDeclarationCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageDeclarationCS__Group__1__Impl
+	rule__PackageDeclarationCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageDeclarationCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageDeclarationCSAccess().getOwnedPathNameAssignment_1()); }
+(rule__PackageDeclarationCS__OwnedPathNameAssignment_1)
+{ after(grammarAccess.getPackageDeclarationCSAccess().getOwnedPathNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageDeclarationCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageDeclarationCS__Group__2__Impl
+	rule__PackageDeclarationCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageDeclarationCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageDeclarationCSAccess().getGroup_2()); }
+(rule__PackageDeclarationCS__Group_2__0)*
+{ after(grammarAccess.getPackageDeclarationCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageDeclarationCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageDeclarationCS__Group__3__Impl
+	rule__PackageDeclarationCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageDeclarationCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageDeclarationCSAccess().getOwnedContextsAssignment_3()); }
+(rule__PackageDeclarationCS__OwnedContextsAssignment_3)*
+{ after(grammarAccess.getPackageDeclarationCSAccess().getOwnedContextsAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageDeclarationCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageDeclarationCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageDeclarationCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageDeclarationCSAccess().getEndpackageKeyword_4()); }
+
+	'endpackage' 
+
+{ after(grammarAccess.getPackageDeclarationCSAccess().getEndpackageKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PackageDeclarationCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageDeclarationCS__Group_2__0__Impl
+	rule__PackageDeclarationCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageDeclarationCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageDeclarationCSAccess().getInvKeyword_2_0()); }
+
+	'inv' 
+
+{ after(grammarAccess.getPackageDeclarationCSAccess().getInvKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageDeclarationCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageDeclarationCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageDeclarationCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageDeclarationCSAccess().getOwnedInvariantsAssignment_2_1()); }
+(rule__PackageDeclarationCS__OwnedInvariantsAssignment_2_1)
+{ after(grammarAccess.getPackageDeclarationCSAccess().getOwnedInvariantsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ParameterCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group__0__Impl
+	rule__ParameterCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getGroup_0()); }
+(rule__ParameterCS__Group_0__0)?
+{ after(grammarAccess.getParameterCSAccess().getGroup_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ParameterCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getOwnedTypeAssignment_1()); }
+(rule__ParameterCS__OwnedTypeAssignment_1)
+{ after(grammarAccess.getParameterCSAccess().getOwnedTypeAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ParameterCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group_0__0__Impl
+	rule__ParameterCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getNameAssignment_0_0()); }
+(rule__ParameterCS__NameAssignment_0_0)
+{ after(grammarAccess.getParameterCSAccess().getNameAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ParameterCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getColonKeyword_0_1()); }
+
+	':' 
+
+{ after(grammarAccess.getParameterCSAccess().getColonKeyword_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PropertyContextDeclCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PropertyContextDeclCS__Group__0__Impl
+	rule__PropertyContextDeclCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getContextKeyword_0()); }
+
+	'context' 
+
+{ after(grammarAccess.getPropertyContextDeclCSAccess().getContextKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PropertyContextDeclCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PropertyContextDeclCS__Group__1__Impl
+	rule__PropertyContextDeclCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedPathNameAssignment_1()); }
+(rule__PropertyContextDeclCS__OwnedPathNameAssignment_1)
+{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedPathNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PropertyContextDeclCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PropertyContextDeclCS__Group__2__Impl
+	rule__PropertyContextDeclCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_2()); }
+
+	':' 
+
+{ after(grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PropertyContextDeclCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PropertyContextDeclCS__Group__3__Impl
+	rule__PropertyContextDeclCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedTypeAssignment_3()); }
+(rule__PropertyContextDeclCS__OwnedTypeAssignment_3)
+{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedTypeAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PropertyContextDeclCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PropertyContextDeclCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getAlternatives_4()); }
+(rule__PropertyContextDeclCS__Alternatives_4)*
+{ after(grammarAccess.getPropertyContextDeclCSAccess().getAlternatives_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PropertyContextDeclCS__Group_4_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PropertyContextDeclCS__Group_4_0__0__Impl
+	rule__PropertyContextDeclCS__Group_4_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__Group_4_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getDeriveKeyword_4_0_0()); }
+
+	'derive' 
+
+{ after(grammarAccess.getPropertyContextDeclCSAccess().getDeriveKeyword_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PropertyContextDeclCS__Group_4_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PropertyContextDeclCS__Group_4_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__Group_4_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDerivedInvariantsAssignment_4_0_1()); }
+(rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_1)
+{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDerivedInvariantsAssignment_4_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PropertyContextDeclCS__Group_4_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PropertyContextDeclCS__Group_4_1__0__Impl
+	rule__PropertyContextDeclCS__Group_4_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__Group_4_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getInitKeyword_4_1_0()); }
+
+	'init' 
+
+{ after(grammarAccess.getPropertyContextDeclCSAccess().getInitKeyword_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PropertyContextDeclCS__Group_4_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PropertyContextDeclCS__Group_4_1__1__Impl
+	rule__PropertyContextDeclCS__Group_4_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__Group_4_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_4_1_1()); }
+
+	':' 
+
+{ after(grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_4_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PropertyContextDeclCS__Group_4_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PropertyContextDeclCS__Group_4_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__Group_4_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDefaultExpressionsAssignment_4_1_2()); }
+(rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_2)
+{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDefaultExpressionsAssignment_4_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TemplateSignatureCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_0__0__Impl
+	rule__TemplateSignatureCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_0__1__Impl
+	rule__TemplateSignatureCS__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_1()); }
+(rule__TemplateSignatureCS__OwnedParametersAssignment_0_1)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_0__2__Impl
+	rule__TemplateSignatureCS__Group_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_0_2()); }
+(rule__TemplateSignatureCS__Group_0_2__0)*
+{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_0__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_0__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_0__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3()); }
+
+	')' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TemplateSignatureCS__Group_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_0_2__0__Impl
+	rule__TemplateSignatureCS__Group_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_2_1()); }
+(rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TemplateSignatureCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_1__0__Impl
+	rule__TemplateSignatureCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0()); }
+
+	'<' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_1__1__Impl
+	rule__TemplateSignatureCS__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_1()); }
+(rule__TemplateSignatureCS__OwnedParametersAssignment_1_1)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_1__2__Impl
+	rule__TemplateSignatureCS__Group_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_1_2()); }
+(rule__TemplateSignatureCS__Group_1_2__0)*
+{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_1__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3()); }
+
+	'>' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TemplateSignatureCS__Group_1_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_1_2__0__Impl
+	rule__TemplateSignatureCS__Group_1_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_1_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_1_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_1_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_1_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_2_1()); }
+(rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgExpCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgExpCS__Group_0__0__Impl
+	rule__NavigatingArgExpCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgExpCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgExpCSAccess().getOCLMessageArgCSAction_0_0()); }
+(
+
+)
+{ after(grammarAccess.getNavigatingArgExpCSAccess().getOCLMessageArgCSAction_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgExpCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgExpCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgExpCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgExpCSAccess().getQuestionMarkKeyword_0_1()); }
+
+	'?' 
+
+{ after(grammarAccess.getNavigatingArgExpCSAccess().getQuestionMarkKeyword_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__URIPathNameCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIPathNameCS__Group__0__Impl
+	rule__URIPathNameCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIPathNameCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+(rule__URIPathNameCS__OwnedPathElementsAssignment_0)
+{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__URIPathNameCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIPathNameCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIPathNameCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIPathNameCSAccess().getGroup_1()); }
+(rule__URIPathNameCS__Group_1__0)*
+{ after(grammarAccess.getURIPathNameCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__URIPathNameCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIPathNameCS__Group_1__0__Impl
+	rule__URIPathNameCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIPathNameCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0()); }
+
+	'::' 
+
+{ after(grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__URIPathNameCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIPathNameCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIPathNameCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+(rule__URIPathNameCS__OwnedPathElementsAssignment_1_1)
+{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__URIFirstPathElementCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIFirstPathElementCS__Group_1__0__Impl
+	rule__URIFirstPathElementCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }
+(
+
+)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__URIFirstPathElementCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIFirstPathElementCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }
+(rule__URIFirstPathElementCS__ReferredElementAssignment_1_1)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionTypeCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group__0__Impl
+	rule__CollectionTypeCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }
+(rule__CollectionTypeCS__NameAssignment_0)
+{ after(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionTypeCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }
+(rule__CollectionTypeCS__Group_1__0)?
+{ after(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionTypeCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group_1__0__Impl
+	rule__CollectionTypeCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionTypeCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group_1__1__Impl
+	rule__CollectionTypeCS__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }
+(rule__CollectionTypeCS__OwnedTypeAssignment_1_1)
+{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionTypeCS__Group_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TupleTypeCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group__0__Impl
+	rule__TupleTypeCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }
+(rule__TupleTypeCS__NameAssignment_0)
+{ after(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }
+(rule__TupleTypeCS__Group_1__0)?
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TupleTypeCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1__0__Impl
+	rule__TupleTypeCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1__1__Impl
+	rule__TupleTypeCS__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }
+(rule__TupleTypeCS__Group_1_1__0)?
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TupleTypeCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1__0__Impl
+	rule__TupleTypeCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }
+(rule__TupleTypeCS__OwnedPartsAssignment_1_1_0)
+{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }
+(rule__TupleTypeCS__Group_1_1_1__0)*
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TupleTypeCS__Group_1_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1_1__0__Impl
+	rule__TupleTypeCS__Group_1_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }
+(rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1)
+{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TuplePartCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TuplePartCS__Group__0__Impl
+	rule__TuplePartCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }
+(rule__TuplePartCS__NameAssignment_0)
+{ after(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TuplePartCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TuplePartCS__Group__1__Impl
+	rule__TuplePartCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }
+
+	':' 
+
+{ after(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TuplePartCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TuplePartCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }
+(rule__TuplePartCS__OwnedTypeAssignment_2)
+{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__CollectionLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__0__Impl
+	rule__CollectionLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }
+(rule__CollectionLiteralExpCS__OwnedTypeAssignment_0)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__1__Impl
+	rule__CollectionLiteralExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__2__Impl
+	rule__CollectionLiteralExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }
+(rule__CollectionLiteralExpCS__Group_2__0)?
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__CollectionLiteralExpCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2__0__Impl
+	rule__CollectionLiteralExpCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }
+(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }
+(rule__CollectionLiteralExpCS__Group_2_1__0)*
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionLiteralExpCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2_1__0__Impl
+	rule__CollectionLiteralExpCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }
+(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionLiteralPartCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0__0__Impl
+	rule__CollectionLiteralPartCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }
+(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralPartCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }
+(rule__CollectionLiteralPartCS__Group_0_1__0)?
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionLiteralPartCS__Group_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0_1__0__Impl
+	rule__CollectionLiteralPartCS__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }
+
+	'..' 
+
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralPartCS__Group_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }
+(rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionPatternCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__0__Impl
+	rule__CollectionPatternCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }
+(rule__CollectionPatternCS__OwnedTypeAssignment_0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__1__Impl
+	rule__CollectionPatternCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__2__Impl
+	rule__CollectionPatternCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }
+(rule__CollectionPatternCS__Group_2__0)?
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__CollectionPatternCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2__0__Impl
+	rule__CollectionPatternCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }
+(rule__CollectionPatternCS__OwnedPartsAssignment_2_0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2__1__Impl
+	rule__CollectionPatternCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }
+(rule__CollectionPatternCS__Group_2_1__0)*
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }
+(rule__CollectionPatternCS__Group_2_2__0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__CollectionPatternCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_1__0__Impl
+	rule__CollectionPatternCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }
+(rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1)
+{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionPatternCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_2__0__Impl
+	rule__CollectionPatternCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }
+
+	'++' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }
+(rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1)
+{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ConstructorPartCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstructorPartCS__Group__0__Impl
+	rule__ConstructorPartCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }
+(rule__ConstructorPartCS__ReferredPropertyAssignment_0)
+{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstructorPartCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstructorPartCS__Group__1__Impl
+	rule__ConstructorPartCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstructorPartCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstructorPartCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }
+(rule__ConstructorPartCS__OwnedInitExpressionAssignment_2)
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PatternExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PatternExpCS__Group__0__Impl
+	rule__PatternExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }
+(rule__PatternExpCS__PatternVariableNameAssignment_0)?
+{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PatternExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PatternExpCS__Group__1__Impl
+	rule__PatternExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }
+
+	':' 
+
+{ after(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PatternExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PatternExpCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }
+(rule__PatternExpCS__OwnedPatternTypeAssignment_2)
+{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LambdaLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__0__Impl
+	rule__LambdaLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }
+
+	'Lambda' 
+
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__1__Impl
+	rule__LambdaLiteralExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaLiteralExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__2__Impl
+	rule__LambdaLiteralExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }
+(rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2)
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaLiteralExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TupleLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__0__Impl
+	rule__TupleLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }
+
+	'Tuple' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__1__Impl
+	rule__TupleLiteralExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__2__Impl
+	rule__TupleLiteralExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }
+(rule__TupleLiteralExpCS__OwnedPartsAssignment_2)
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__3__Impl
+	rule__TupleLiteralExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }
+(rule__TupleLiteralExpCS__Group_3__0)*
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__TupleLiteralExpCS__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group_3__0__Impl
+	rule__TupleLiteralExpCS__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }
+(rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1)
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TupleLiteralPartCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__0__Impl
+	rule__TupleLiteralPartCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }
+(rule__TupleLiteralPartCS__NameAssignment_0)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__1__Impl
+	rule__TupleLiteralPartCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }
+(rule__TupleLiteralPartCS__Group_1__0)?
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__2__Impl
+	rule__TupleLiteralPartCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }
+
+	'=' 
+
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }
+(rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TupleLiteralPartCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group_1__0__Impl
+	rule__TupleLiteralPartCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }
+
+	':' 
+
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }
+(rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__UnlimitedNaturalLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl
+	rule__UnlimitedNaturalLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__UnlimitedNaturalLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }
+
+	'*' 
+
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__InvalidLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvalidLiteralExpCS__Group__0__Impl
+	rule__InvalidLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvalidLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvalidLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvalidLiteralExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvalidLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }
+
+	'invalid' 
+
+{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NullLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NullLiteralExpCS__Group__0__Impl
+	rule__NullLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NullLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NullLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NullLiteralExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NullLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }
+
+	'null' 
+
+{ after(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeLiteralWithMultiplicityCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeLiteralWithMultiplicityCS__Group__0__Impl
+	rule__TypeLiteralWithMultiplicityCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralWithMultiplicityCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }
+	ruleTypeLiteralCS
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeLiteralWithMultiplicityCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeLiteralWithMultiplicityCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralWithMultiplicityCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }
+(rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1)?
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeNameExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group__0__Impl
+	rule__TypeNameExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+(rule__TypeNameExpCS__OwnedPathNameAssignment_0)
+{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }
+(rule__TypeNameExpCS__Group_1__0)?
+{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeNameExpCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1__0__Impl
+	rule__TypeNameExpCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }
+(rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0)
+{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }
+(rule__TypeNameExpCS__Group_1_1__0)?
+{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeNameExpCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1_1__0__Impl
+	rule__TypeNameExpCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1_1__1__Impl
+	rule__TypeNameExpCS__Group_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }
+(rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1)
+{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TypeExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeExpCS__Group__0__Impl
+	rule__TypeExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }
+(rule__TypeExpCS__Alternatives_0)
+{ after(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }
+(rule__TypeExpCS__OwnedMultiplicityAssignment_1)?
+{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ExpCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0__0__Impl
+	rule__ExpCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }
+	rulePrefixedPrimaryExpCS
+{ after(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExpCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getGroup_0_1()); }
+(rule__ExpCS__Group_0_1__0)?
+{ after(grammarAccess.getExpCSAccess().getGroup_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ExpCS__Group_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0_1__0__Impl
+	rule__ExpCS__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }
+(
+
+)
+{ after(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExpCS__Group_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0_1__1__Impl
+	rule__ExpCS__Group_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }
+(rule__ExpCS__NameAssignment_0_1_1)
+{ after(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExpCS__Group_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }
+(rule__ExpCS__OwnedRightAssignment_0_1_2)
+{ after(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PrefixedLetExpCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedLetExpCS__Group_0__0__Impl
+	rule__PrefixedLetExpCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }
+(
+
+)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedLetExpCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedLetExpCS__Group_0__1__Impl
+	rule__PrefixedLetExpCS__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }
+(rule__PrefixedLetExpCS__NameAssignment_0_1)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedLetExpCS__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedLetExpCS__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }
+(rule__PrefixedLetExpCS__OwnedRightAssignment_0_2)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PrefixedPrimaryExpCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedPrimaryExpCS__Group_0__0__Impl
+	rule__PrefixedPrimaryExpCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }
+(
+
+)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedPrimaryExpCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedPrimaryExpCS__Group_0__1__Impl
+	rule__PrefixedPrimaryExpCS__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }
+(rule__PrefixedPrimaryExpCS__NameAssignment_0_1)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedPrimaryExpCS__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedPrimaryExpCS__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }
+(rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NameExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__0__Impl
+	rule__NameExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+(rule__NameExpCS__OwnedPathNameAssignment_0)
+{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__1__Impl
+	rule__NameExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }
+(rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1)*
+{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__2__Impl
+	rule__NameExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }
+(rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2)?
+{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__3__Impl
+	rule__NameExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }
+(rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3)?
+{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getGroup_4()); }
+(rule__NameExpCS__Group_4__0)?
+{ after(grammarAccess.getNameExpCSAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NameExpCS__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group_4__0__Impl
+	rule__NameExpCS__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }
+(rule__NameExpCS__IsPreAssignment_4_0)
+{ after(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }
+
+	'pre' 
+
+{ after(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CurlyBracketedClauseCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__0__Impl
+	rule__CurlyBracketedClauseCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__1__Impl
+	rule__CurlyBracketedClauseCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__2__Impl
+	rule__CurlyBracketedClauseCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }
+(rule__CurlyBracketedClauseCS__Alternatives_2)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__CurlyBracketedClauseCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0__0__Impl
+	rule__CurlyBracketedClauseCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }
+(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }
+(rule__CurlyBracketedClauseCS__Group_2_0_1__0)*
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl
+	rule__CurlyBracketedClauseCS__Group_2_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }
+(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__0__Impl
+	rule__RoundBracketedClauseCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__1__Impl
+	rule__RoundBracketedClauseCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__2__Impl
+	rule__RoundBracketedClauseCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }
+(rule__RoundBracketedClauseCS__Group_2__0)?
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }
+
+	')' 
+
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__0__Impl
+	rule__RoundBracketedClauseCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__1__Impl
+	rule__RoundBracketedClauseCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__2__Impl
+	rule__RoundBracketedClauseCS__Group_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }
+(rule__RoundBracketedClauseCS__Group_2_2__0)?
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }
+(rule__RoundBracketedClauseCS__Group_2_3__0)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_2__0__Impl
+	rule__RoundBracketedClauseCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group_2_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_3__0__Impl
+	rule__RoundBracketedClauseCS__Group_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__SquareBracketedClauseCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__0__Impl
+	rule__SquareBracketedClauseCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__1__Impl
+	rule__SquareBracketedClauseCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }
+(rule__SquareBracketedClauseCS__OwnedTermsAssignment_1)
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__2__Impl
+	rule__SquareBracketedClauseCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }
+(rule__SquareBracketedClauseCS__Group_2__0)*
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }
+
+	']' 
+
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__SquareBracketedClauseCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group_2__0__Impl
+	rule__SquareBracketedClauseCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }
+(rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1)
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0__0__Impl
+	rule__NavigatingArgCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }
+(rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }
+(rule__NavigatingArgCS__Alternatives_0_1)?
+{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0_1_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0__0__Impl
+	rule__NavigatingArgCS__Group_0_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0__1__Impl
+	rule__NavigatingArgCS__Group_0_1_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }
+(rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }
+(rule__NavigatingArgCS__Group_0_1_0_2__0)?
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0_1_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0_2__0__Impl
+	rule__NavigatingArgCS__Group_0_1_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }
+(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_1__0__Impl
+	rule__NavigatingArgCS__Group_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }
+
+	'in' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }
+(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_1__0__Impl
+	rule__NavigatingArgCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }
+(rule__NavigatingArgCS__OwnedTypeAssignment_1_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingBarArgCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group__0__Impl
+	rule__NavigatingBarArgCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }
+(rule__NavigatingBarArgCS__PrefixAssignment_0)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group__1__Impl
+	rule__NavigatingBarArgCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+(rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }
+(rule__NavigatingBarArgCS__Group_2__0)?
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingBarArgCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2__0__Impl
+	rule__NavigatingBarArgCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2__1__Impl
+	rule__NavigatingBarArgCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }
+(rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }
+(rule__NavigatingBarArgCS__Group_2_2__0)?
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingBarArgCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2_2__0__Impl
+	rule__NavigatingBarArgCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+(rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group__0__Impl
+	rule__NavigatingCommaArgCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }
+(rule__NavigatingCommaArgCS__PrefixAssignment_0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group__1__Impl
+	rule__NavigatingCommaArgCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+(rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }
+(rule__NavigatingCommaArgCS__Alternatives_2)?
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0__0__Impl
+	rule__NavigatingCommaArgCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0__1__Impl
+	rule__NavigatingCommaArgCS__Group_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }
+(rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }
+(rule__NavigatingCommaArgCS__Group_2_0_2__0)?
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group_2_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl
+	rule__NavigatingCommaArgCS__Group_2_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }
+(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_1__0__Impl
+	rule__NavigatingCommaArgCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }
+
+	'in' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }
+(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingSemiArgCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group__0__Impl
+	rule__NavigatingSemiArgCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }
+(rule__NavigatingSemiArgCS__PrefixAssignment_0)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group__1__Impl
+	rule__NavigatingSemiArgCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+(rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }
+(rule__NavigatingSemiArgCS__Group_2__0)?
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingSemiArgCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2__0__Impl
+	rule__NavigatingSemiArgCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2__1__Impl
+	rule__NavigatingSemiArgCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }
+(rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }
+(rule__NavigatingSemiArgCS__Group_2_2__0)?
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingSemiArgCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2_2__0__Impl
+	rule__NavigatingSemiArgCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+(rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__IfExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__0__Impl
+	rule__IfExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }
+
+	'if' 
+
+{ after(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__1__Impl
+	rule__IfExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }
+(rule__IfExpCS__OwnedConditionAssignment_1)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__2__Impl
+	rule__IfExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }
+
+	'then' 
+
+{ after(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__3__Impl
+	rule__IfExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+(rule__IfExpCS__OwnedThenExpressionAssignment_3)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__4__Impl
+	rule__IfExpCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }
+(rule__IfExpCS__OwnedIfThenExpressionsAssignment_4)*
+{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__5__Impl
+	rule__IfExpCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }
+
+	'else' 
+
+{ after(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__6__Impl
+	rule__IfExpCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }
+(rule__IfExpCS__OwnedElseExpressionAssignment_6)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }
+
+	'endif' 
+
+{ after(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ElseIfThenExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__0__Impl
+	rule__ElseIfThenExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }
+
+	'elseif' 
+
+{ after(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ElseIfThenExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__1__Impl
+	rule__ElseIfThenExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }
+(rule__ElseIfThenExpCS__OwnedConditionAssignment_1)
+{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ElseIfThenExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__2__Impl
+	rule__ElseIfThenExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }
+
+	'then' 
+
+{ after(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ElseIfThenExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+(rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3)
+{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__LetExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__0__Impl
+	rule__LetExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }
+
+	'let' 
+
+{ after(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__1__Impl
+	rule__LetExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }
+(rule__LetExpCS__OwnedVariablesAssignment_1)
+{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__2__Impl
+	rule__LetExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getGroup_2()); }
+(rule__LetExpCS__Group_2__0)*
+{ after(grammarAccess.getLetExpCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__3__Impl
+	rule__LetExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }
+
+	'in' 
+
+{ after(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }
+(rule__LetExpCS__OwnedInExpressionAssignment_4)
+{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LetExpCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group_2__0__Impl
+	rule__LetExpCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }
+(rule__LetExpCS__OwnedVariablesAssignment_2_1)
+{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LetVariableCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__0__Impl
+	rule__LetVariableCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }
+(rule__LetVariableCS__NameAssignment_0)
+{ after(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__1__Impl
+	rule__LetVariableCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }
+(rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1)?
+{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__2__Impl
+	rule__LetVariableCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getGroup_2()); }
+(rule__LetVariableCS__Group_2__0)?
+{ after(grammarAccess.getLetVariableCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__3__Impl
+	rule__LetVariableCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }
+
+	'=' 
+
+{ after(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }
+(rule__LetVariableCS__OwnedInitExpressionAssignment_4)
+{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LetVariableCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group_2__0__Impl
+	rule__LetVariableCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }
+(rule__LetVariableCS__OwnedTypeAssignment_2_1)
+{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NestedExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NestedExpCS__Group__0__Impl
+	rule__NestedExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NestedExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NestedExpCS__Group__1__Impl
+	rule__NestedExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }
+(rule__NestedExpCS__OwnedExpressionAssignment_1)
+{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NestedExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NestedExpCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }
+
+	')' 
+
+{ after(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__SelfExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SelfExpCS__Group__0__Impl
+	rule__SelfExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SelfExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SelfExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SelfExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SelfExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }
+
+	'self' 
+
+{ after(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MultiplicityBoundsCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group__0__Impl
+	rule__MultiplicityBoundsCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }
+(rule__MultiplicityBoundsCS__LowerBoundAssignment_0)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityBoundsCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }
+(rule__MultiplicityBoundsCS__Group_1__0)?
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MultiplicityBoundsCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group_1__0__Impl
+	rule__MultiplicityBoundsCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }
+
+	'..' 
+
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityBoundsCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }
+(rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MultiplicityCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityCS__Group__0__Impl
+	rule__MultiplicityCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityCS__Group__1__Impl
+	rule__MultiplicityCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }
+(rule__MultiplicityCS__Alternatives_1)
+{ after(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }
+
+	']' 
+
+{ after(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PathNameCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group__0__Impl
+	rule__PathNameCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+(rule__PathNameCS__OwnedPathElementsAssignment_0)
+{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PathNameCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getGroup_1()); }
+(rule__PathNameCS__Group_1__0)*
+{ after(grammarAccess.getPathNameCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PathNameCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group_1__0__Impl
+	rule__PathNameCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }
+
+	'::' 
+
+{ after(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PathNameCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+(rule__PathNameCS__OwnedPathElementsAssignment_1_1)
+{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TemplateBindingCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__0__Impl
+	rule__TemplateBindingCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__1__Impl
+	rule__TemplateBindingCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }
+(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1)
+{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__2__Impl
+	rule__TemplateBindingCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }
+(rule__TemplateBindingCS__Group_2__0)*
+{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }
+
+	')' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TemplateBindingCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_2__0__Impl
+	rule__TemplateBindingCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }
+(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1)
+{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeParameterCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group__0__Impl
+	rule__TypeParameterCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }
+(rule__TypeParameterCS__NameAssignment_0)
+{ after(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }
+(rule__TypeParameterCS__Alternatives_1)?
+{ after(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__0__Impl
+	rule__TypeParameterCS__Group_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__1__Impl
+	rule__TypeParameterCS__Group_1_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }
+(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }
+(rule__TypeParameterCS__Group_1_0_2__0)*
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0_2__0__Impl
+	rule__TypeParameterCS__Group_1_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }
+
+	'&&' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }
+(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_1__0__Impl
+	rule__TypeParameterCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }
+
+	'super' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }
+(rule__TypeParameterCS__OwnedSuperAssignment_1_1_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypedTypeRefCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedTypeRefCS__Group__0__Impl
+	rule__TypedTypeRefCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }
+(rule__TypedTypeRefCS__OwnedPathNameAssignment_0)
+{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedTypeRefCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedTypeRefCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }
+(rule__TypedTypeRefCS__OwnedBindingAssignment_1)?
+{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__0__Impl
+	rule__WildcardTypeRefCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__1__Impl
+	rule__WildcardTypeRefCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }
+
+	'?' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }
+(rule__WildcardTypeRefCS__Alternatives_2)?
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_0__0__Impl
+	rule__WildcardTypeRefCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }
+(rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_1__0__Impl
+	rule__WildcardTypeRefCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }
+
+	'super' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }
+(rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+rule__CompleteOCLDocumentCS__OwnedImportsAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedImportsImportCSParserRuleCall_0_0_0()); }
+	ruleImportCS{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedImportsImportCSParserRuleCall_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompleteOCLDocumentCS__OwnedIncludesAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedIncludesIncludeCSParserRuleCall_0_1_0()); }
+	ruleIncludeCS{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedIncludesIncludeCSParserRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompleteOCLDocumentCS__OwnedLibrariesAssignment_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedLibrariesLibraryCSParserRuleCall_0_2_0()); }
+	ruleLibraryCS{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedLibrariesLibraryCSParserRuleCall_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompleteOCLDocumentCS__OwnedPackagesAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedPackagesPackageDeclarationCSParserRuleCall_1_0_0()); }
+	rulePackageDeclarationCS{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedPackagesPackageDeclarationCSParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompleteOCLDocumentCS__OwnedContextsAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedContextsContextDeclCSParserRuleCall_1_1_0()); }
+	ruleContextDeclCS{ after(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedContextsContextDeclCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ClassifierContextDeclCS__OwnedSignatureAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); }
+	ruleTemplateSignatureCS{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ClassifierContextDeclCS__SelfNameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getSelfNameUnrestrictedNameParserRuleCall_2_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getClassifierContextDeclCSAccess().getSelfNameUnrestrictedNameParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ClassifierContextDeclCS__OwnedPathNameAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_3_0()); }
+	rulePathNameCS{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ClassifierContextDeclCS__OwnedInvariantsAssignment_4_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedInvariantsConstraintCSParserRuleCall_4_0_1_0()); }
+	ruleConstraintCS{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedInvariantsConstraintCSParserRuleCall_4_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ClassifierContextDeclCS__OwnedDefinitionsAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedDefinitionsDefCSParserRuleCall_4_1_0()); }
+	ruleDefCS{ after(grammarAccess.getClassifierContextDeclCSAccess().getOwnedDefinitionsDefCSParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstraintCS__NameAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstraintCS__OwnedMessageSpecificationAssignment_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_0_1_1_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstraintCS__OwnedSpecificationAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_2_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__IsStaticAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getIsStaticStaticKeyword_0_0()); }
+(
+{ before(grammarAccess.getDefOperationCSAccess().getIsStaticStaticKeyword_0_0()); }
+
+	'static' 
+
+{ after(grammarAccess.getDefOperationCSAccess().getIsStaticStaticKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getDefOperationCSAccess().getIsStaticStaticKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__OwnedSignatureAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_4_0()); }
+	ruleTemplateSignatureCS{ after(grammarAccess.getDefOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__NameAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getNameUnrestrictedNameParserRuleCall_5_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getDefOperationCSAccess().getNameUnrestrictedNameParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__OwnedParametersAssignment_7_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getOwnedParametersDefParameterCSParserRuleCall_7_0_0()); }
+	ruleDefParameterCS{ after(grammarAccess.getDefOperationCSAccess().getOwnedParametersDefParameterCSParserRuleCall_7_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__OwnedParametersAssignment_7_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getOwnedParametersDefParameterCSParserRuleCall_7_1_1_0()); }
+	ruleDefParameterCS{ after(grammarAccess.getDefOperationCSAccess().getOwnedParametersDefParameterCSParserRuleCall_7_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__OwnedTypeAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getOwnedTypeTypeExpCSParserRuleCall_10_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getDefOperationCSAccess().getOwnedTypeTypeExpCSParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefOperationCS__OwnedSpecificationAssignment_12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefOperationCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_12_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getDefOperationCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefParameterCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getDefParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefParameterCS__OwnedTypeAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefParameterCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getDefParameterCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefPropertyCS__IsStaticAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }
+
+	'static' 
+
+{ after(grammarAccess.getDefPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getDefPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefPropertyCS__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getNameUnrestrictedNameParserRuleCall_4_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getDefPropertyCSAccess().getNameUnrestrictedNameParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefPropertyCS__OwnedTypeAssignment_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getOwnedTypeTypeExpCSParserRuleCall_6_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getDefPropertyCSAccess().getOwnedTypeTypeExpCSParserRuleCall_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DefPropertyCS__OwnedSpecificationAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDefPropertyCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_8_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getDefPropertyCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__NameAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getNameIdentifierParserRuleCall_1_0_0()); }
+	ruleIdentifier{ after(grammarAccess.getImportCSAccess().getNameIdentifierParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__OwnedPathNameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getOwnedPathNameURIPathNameCSParserRuleCall_2_0()); }
+	ruleURIPathNameCS{ after(grammarAccess.getImportCSAccess().getOwnedPathNameURIPathNameCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__IsAllAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }
+(
+{ before(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }
+
+	'::*' 
+
+{ after(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }
+)
+
+{ after(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IncludeCS__ReferredNamespaceAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIncludeCSAccess().getReferredNamespaceNamespaceCrossReference_1_0()); }
+(
+{ before(grammarAccess.getIncludeCSAccess().getReferredNamespaceNamespaceURIParserRuleCall_1_0_1()); }
+	ruleURI{ after(grammarAccess.getIncludeCSAccess().getReferredNamespaceNamespaceURIParserRuleCall_1_0_1()); }
+)
+{ after(grammarAccess.getIncludeCSAccess().getReferredNamespaceNamespaceCrossReference_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibraryCS__ReferredPackageAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_1_0()); }
+(
+{ before(grammarAccess.getLibraryCSAccess().getReferredPackagePackageURIParserRuleCall_1_0_1()); }
+	ruleURI{ after(grammarAccess.getLibraryCSAccess().getReferredPackagePackageURIParserRuleCall_1_0_1()); }
+)
+{ after(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__OwnedSignatureAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); }
+	ruleTemplateSignatureCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__OwnedPathNameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_2_0()); }
+	rulePathNameCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__OwnedParametersAssignment_4_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersParameterCSParserRuleCall_4_0_0()); }
+	ruleParameterCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersParameterCSParserRuleCall_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__OwnedParametersAssignment_4_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersParameterCSParserRuleCall_4_1_1_0()); }
+	ruleParameterCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersParameterCSParserRuleCall_4_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__OwnedTypeAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_7_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__OwnedPreconditionsAssignment_8_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPreconditionsConstraintCSParserRuleCall_8_0_1_0()); }
+	ruleConstraintCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedPreconditionsConstraintCSParserRuleCall_8_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__OwnedPostconditionsAssignment_8_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPostconditionsConstraintCSParserRuleCall_8_1_1_0()); }
+	ruleConstraintCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedPostconditionsConstraintCSParserRuleCall_8_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationContextDeclCS__OwnedBodiesAssignment_8_2_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationContextDeclCSAccess().getOwnedBodiesSpecificationCSParserRuleCall_8_2_3_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getOperationContextDeclCSAccess().getOwnedBodiesSpecificationCSParserRuleCall_8_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageDeclarationCS__OwnedPathNameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageDeclarationCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); }
+	rulePathNameCS{ after(grammarAccess.getPackageDeclarationCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageDeclarationCS__OwnedInvariantsAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageDeclarationCSAccess().getOwnedInvariantsConstraintCSParserRuleCall_2_1_0()); }
+	ruleConstraintCS{ after(grammarAccess.getPackageDeclarationCSAccess().getOwnedInvariantsConstraintCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageDeclarationCS__OwnedContextsAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageDeclarationCSAccess().getOwnedContextsContextDeclCSParserRuleCall_3_0()); }
+	ruleContextDeclCS{ after(grammarAccess.getPackageDeclarationCSAccess().getOwnedContextsContextDeclCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__NameAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__OwnedTypeAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getParameterCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__OwnedPathNameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); }
+	rulePathNameCS{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__OwnedTypeAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_3_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDerivedInvariantsConstraintCSParserRuleCall_4_0_1_0()); }
+	ruleConstraintCS{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDerivedInvariantsConstraintCSParserRuleCall_4_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_4_1_2_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_4_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpecificationCS__OwnedExpressionAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0()); }
+	ruleExpCS{ after(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpecificationCS__ExprStringAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); }
+	RULE_UNQUOTED_STRING{ after(grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__OwnedParametersAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_1_0()); }
+	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_2_1_0()); }
+	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__OwnedParametersAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_1_0()); }
+	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_2_1_0()); }
+	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__URIPathNameCS__OwnedPathElementsAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsURIFirstPathElementCSParserRuleCall_0_0()); }
+	ruleURIFirstPathElementCS{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsURIFirstPathElementCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIPathNameCS__OwnedPathElementsAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }
+	ruleNextPathElementCS{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__ReferredElementAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }
+)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__ReferredElementAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }
+	ruleURI{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }
+)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimitiveTypeCS__NameAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }
+	rulePrimitiveTypeIdentifier{ after(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }
+	ruleCollectionTypeIdentifier{ after(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__OwnedTypeAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+
+	'Tuple' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__OwnedPartsAssignment_1_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }
+	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }
+	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__OwnedTypeAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__OwnedTypeAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+	ruleCollectionTypeCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }
+	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }
+	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }
+	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }
+	rulePatternExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__OwnedTypeAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+	ruleCollectionTypeCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__OwnedPartsAssignment_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }
+	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }
+	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }
+	ruleIdentifier{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__ReferredPropertyAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }
+)
+{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__OwnedInitExpressionAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }
+(rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0)
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__PatternVariableNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__OwnedPatternTypeAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }
+	ruleExpCS{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__OwnedPartsAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }
+	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }
+	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }
+	ruleExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NumberLiteralExpCS__SymbolAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }
+	ruleNUMBER_LITERAL{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StringLiteralExpCS__SegmentsAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }
+	ruleStringLiteral{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanLiteralExpCS__SymbolAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+
+	'true' 
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanLiteralExpCS__SymbolAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+
+	'false' 
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+)
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+	ruleMultiplicityCS{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralExpCS__OwnedTypeAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }
+	ruleTypeLiteralWithMultiplicityCS{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__OwnedPathNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+	rulePathNameCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }
+	ruleCurlyBracketedClauseCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__OwnedMultiplicityAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+	ruleMultiplicityCS{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__NameAssignment_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }
+	ruleBinaryOperatorName{ after(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__OwnedRightAssignment_0_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }
+	ruleExpCS{ after(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__NameAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__OwnedRightAssignment_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }
+	rulePrefixedLetExpCS{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__NameAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }
+	rulePrefixedPrimaryExpCS{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedPathNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+	rulePathNameCS{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }
+	ruleSquareBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }
+	ruleRoundBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }
+	ruleCurlyBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__IsPreAssignment_4_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+(
+{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+
+	'@' 
+
+{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+)
+
+{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }
+	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }
+	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__ValueAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }
+	ruleStringLiteral{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }
+	ruleNavigatingArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }
+	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }
+	ruleNavigatingSemiArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }
+	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }
+	ruleNavigatingBarArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }
+	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__OwnedTermsAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }
+	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedTypeAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__PrefixAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+
+	'|' 
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__PrefixAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__PrefixAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+
+	';' 
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedConditionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }
+(rule__IfExpCS__OwnedConditionAlternatives_1_0)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedThenExpressionAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedIfThenExpressionsAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }
+	ruleElseIfThenExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedElseExpressionAssignment_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }
+	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__OwnedConditionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }
+	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__OwnedVariablesAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }
+	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__OwnedVariablesAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }
+	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__OwnedInExpressionAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }
+	ruleExpCS{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }
+	ruleRoundBracketedClauseCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__OwnedTypeAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__OwnedInitExpressionAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }
+	ruleExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__OwnedExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__LowerBoundAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }
+	ruleLOWER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }
+	ruleUPPER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityStringCS__StringBoundsAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }
+(rule__MultiplicityStringCS__StringBoundsAlternatives_0)
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__OwnedPathElementsAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }
+	ruleFirstPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__OwnedPathElementsAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }
+	ruleNextPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FirstPathElementCS__ReferredElementAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }
+)
+{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NextPathElementCS__ReferredElementAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }
+	ruleUnreservedName{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }
+)
+{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }
+	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }
+	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }
+	ruleTypeRefCS{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedSuperAssignment_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__OwnedPathNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+	rulePathNameCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__OwnedBindingAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }
+	ruleTemplateBindingCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+RULE_UNQUOTED_STRING : '\u00A3$%^\u00A3$%^';
+
+fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');
+
+fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');
+
+RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';
+
+RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';
+
+RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';
+
+RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;
+
+RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;
+
+RULE_INT : ('0'..'9')+;
+
+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/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.tokens b/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.tokens
index ae21b9c..bae1c6d 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.tokens
+++ b/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.tokens
@@ -1,179 +1,179 @@
-'&&'=91

-'('=61

-')'=62

-'*'=34

-'+'=36

-'++'=76

-','=64

-'-'=32

-'->'=48

-'.'=47

-'..'=75

-'/'=35

-':'=60

-'::'=72

-'::*'=94

-';'=99

-'<'=38

-'<='=40

-'<>'=42

-'='=41

-'>'=37

-'>='=39

-'?'=57

-'?->'=50

-'?.'=49

-'@'=97

-'Bag'=53

-'Boolean'=22

-'Collection'=55

-'Integer'=23

-'Lambda'=77

-'OclAny'=27

-'OclInvalid'=28

-'OclMessage'=29

-'OclState'=30

-'OclVoid'=31

-'OrderedSet'=56

-'Real'=24

-'Sequence'=54

-'Set'=52

-'String'=25

-'Tuple'=51

-'UnlimitedNatural'=26

-'['=80

-']'=81

-'^'=17

-'^^'=18

-'and'=43

-'body'=67

-'context'=58

-'def'=63

-'derive'=70

-'else'=85

-'elseif'=87

-'endif'=86

-'endpackage'=69

-'extends'=90

-'false'=96

-'if'=83

-'implies'=46

-'import'=19

-'in'=82

-'include'=20

-'init'=71

-'inv'=59

-'invalid'=78

-'let'=88

-'library'=21

-'not'=33

-'null'=79

-'or'=44

-'package'=68

-'post'=66

-'pre'=65

-'self'=89

-'static'=93

-'super'=92

-'then'=84

-'true'=95

-'xor'=45

-'{'=73

-'|'=98

-'}'=74

-RULE_ANY_OTHER=16

-RULE_DOUBLE_QUOTED_STRING=11

-RULE_ESCAPED_CHARACTER=9

-RULE_ESCAPED_ID=7

-RULE_INT=4

-RULE_LETTER_CHARACTER=10

-RULE_ML_COMMENT=13

-RULE_ML_SINGLE_QUOTED_STRING=12

-RULE_SIMPLE_ID=6

-RULE_SINGLE_QUOTED_STRING=5

-RULE_SL_COMMENT=14

-RULE_UNQUOTED_STRING=8

-RULE_WS=15

-T__17=17

-T__18=18

-T__19=19

-T__20=20

-T__21=21

-T__22=22

-T__23=23

-T__24=24

-T__25=25

-T__26=26

-T__27=27

-T__28=28

-T__29=29

-T__30=30

-T__31=31

-T__32=32

-T__33=33

-T__34=34

-T__35=35

-T__36=36

-T__37=37

-T__38=38

-T__39=39

-T__40=40

-T__41=41

-T__42=42

-T__43=43

-T__44=44

-T__45=45

-T__46=46

-T__47=47

-T__48=48

-T__49=49

-T__50=50

-T__51=51

-T__52=52

-T__53=53

-T__54=54

-T__55=55

-T__56=56

-T__57=57

-T__58=58

-T__59=59

-T__60=60

-T__61=61

-T__62=62

-T__63=63

-T__64=64

-T__65=65

-T__66=66

-T__67=67

-T__68=68

-T__69=69

-T__70=70

-T__71=71

-T__72=72

-T__73=73

-T__74=74

-T__75=75

-T__76=76

-T__77=77

-T__78=78

-T__79=79

-T__80=80

-T__81=81

-T__82=82

-T__83=83

-T__84=84

-T__85=85

-T__86=86

-T__87=87

-T__88=88

-T__89=89

-T__90=90

-T__91=91

-T__92=92

-T__93=93

-T__94=94

-T__95=95

-T__96=96

-T__97=97

-T__98=98

-T__99=99

+'&&'=91
+'('=61
+')'=62
+'*'=34
+'+'=36
+'++'=76
+','=64
+'-'=32
+'->'=48
+'.'=47
+'..'=75
+'/'=35
+':'=60
+'::'=72
+'::*'=94
+';'=99
+'<'=38
+'<='=40
+'<>'=42
+'='=41
+'>'=37
+'>='=39
+'?'=57
+'?->'=50
+'?.'=49
+'@'=97
+'Bag'=53
+'Boolean'=22
+'Collection'=55
+'Integer'=23
+'Lambda'=77
+'OclAny'=27
+'OclInvalid'=28
+'OclMessage'=29
+'OclState'=30
+'OclVoid'=31
+'OrderedSet'=56
+'Real'=24
+'Sequence'=54
+'Set'=52
+'String'=25
+'Tuple'=51
+'UnlimitedNatural'=26
+'['=80
+']'=81
+'^'=17
+'^^'=18
+'and'=43
+'body'=67
+'context'=58
+'def'=63
+'derive'=70
+'else'=85
+'elseif'=87
+'endif'=86
+'endpackage'=69
+'extends'=90
+'false'=96
+'if'=83
+'implies'=46
+'import'=19
+'in'=82
+'include'=20
+'init'=71
+'inv'=59
+'invalid'=78
+'let'=88
+'library'=21
+'not'=33
+'null'=79
+'or'=44
+'package'=68
+'post'=66
+'pre'=65
+'self'=89
+'static'=93
+'super'=92
+'then'=84
+'true'=95
+'xor'=45
+'{'=73
+'|'=98
+'}'=74
+RULE_ANY_OTHER=16
+RULE_DOUBLE_QUOTED_STRING=11
+RULE_ESCAPED_CHARACTER=9
+RULE_ESCAPED_ID=7
+RULE_INT=4
+RULE_LETTER_CHARACTER=10
+RULE_ML_COMMENT=13
+RULE_ML_SINGLE_QUOTED_STRING=12
+RULE_SIMPLE_ID=6
+RULE_SINGLE_QUOTED_STRING=5
+RULE_SL_COMMENT=14
+RULE_UNQUOTED_STRING=8
+RULE_WS=15
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCLParser.java b/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCLParser.java
index d4cf191..1085810 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCLParser.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCLParser.java
@@ -11172,12 +11172,12 @@
                 {
                 int LA24_2 = input.LA(2);
 
-                if ( (LA24_2==EOF||(LA24_2>=17 && LA24_2<=18)||LA24_2==32||(LA24_2>=34 && LA24_2<=50)||LA24_2==61||LA24_2==64||(LA24_2>=72 && LA24_2<=75)||LA24_2==80||LA24_2==97) ) {
-                    alt24=1;
-                }
-                else if ( (LA24_2==60) ) {
+                if ( (LA24_2==60) ) {
                     alt24=2;
                 }
+                else if ( (LA24_2==EOF||(LA24_2>=17 && LA24_2<=18)||LA24_2==32||(LA24_2>=34 && LA24_2<=50)||LA24_2==61||LA24_2==64||(LA24_2>=72 && LA24_2<=75)||LA24_2==80||LA24_2==97) ) {
+                    alt24=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -11191,12 +11191,12 @@
                 {
                 int LA24_3 = input.LA(2);
 
-                if ( (LA24_3==EOF||(LA24_3>=17 && LA24_3<=18)||LA24_3==32||(LA24_3>=34 && LA24_3<=50)||LA24_3==61||LA24_3==64||(LA24_3>=72 && LA24_3<=75)||LA24_3==80||LA24_3==97) ) {
-                    alt24=1;
-                }
-                else if ( (LA24_3==60) ) {
+                if ( (LA24_3==60) ) {
                     alt24=2;
                 }
+                else if ( (LA24_3==EOF||(LA24_3>=17 && LA24_3<=18)||LA24_3==32||(LA24_3>=34 && LA24_3<=50)||LA24_3==61||LA24_3==64||(LA24_3>=72 && LA24_3<=75)||LA24_3==80||LA24_3==97) ) {
+                    alt24=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -11210,12 +11210,12 @@
                 {
                 int LA24_4 = input.LA(2);
 
-                if ( (LA24_4==EOF||(LA24_4>=17 && LA24_4<=18)||LA24_4==32||(LA24_4>=34 && LA24_4<=50)||LA24_4==61||LA24_4==64||(LA24_4>=72 && LA24_4<=75)||LA24_4==80||LA24_4==97) ) {
-                    alt24=1;
-                }
-                else if ( (LA24_4==60) ) {
+                if ( (LA24_4==60) ) {
                     alt24=2;
                 }
+                else if ( (LA24_4==EOF||(LA24_4>=17 && LA24_4<=18)||LA24_4==32||(LA24_4>=34 && LA24_4<=50)||LA24_4==61||LA24_4==64||(LA24_4>=72 && LA24_4<=75)||LA24_4==80||LA24_4==97) ) {
+                    alt24=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -11229,12 +11229,12 @@
                 {
                 int LA24_5 = input.LA(2);
 
-                if ( (LA24_5==EOF||(LA24_5>=17 && LA24_5<=18)||LA24_5==32||(LA24_5>=34 && LA24_5<=50)||LA24_5==61||LA24_5==64||(LA24_5>=72 && LA24_5<=75)||LA24_5==80||LA24_5==97) ) {
-                    alt24=1;
-                }
-                else if ( (LA24_5==60) ) {
+                if ( (LA24_5==60) ) {
                     alt24=2;
                 }
+                else if ( (LA24_5==EOF||(LA24_5>=17 && LA24_5<=18)||LA24_5==32||(LA24_5>=34 && LA24_5<=50)||LA24_5==61||LA24_5==64||(LA24_5>=72 && LA24_5<=75)||LA24_5==80||LA24_5==97) ) {
+                    alt24=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -11400,12 +11400,12 @@
                 {
                 int LA25_2 = input.LA(2);
 
-                if ( (LA25_2==EOF||(LA25_2>=17 && LA25_2<=18)||LA25_2==32||(LA25_2>=34 && LA25_2<=50)||LA25_2==61||LA25_2==64||(LA25_2>=72 && LA25_2<=74)||LA25_2==80||LA25_2==97) ) {
-                    alt25=1;
-                }
-                else if ( (LA25_2==60) ) {
+                if ( (LA25_2==60) ) {
                     alt25=2;
                 }
+                else if ( (LA25_2==EOF||(LA25_2>=17 && LA25_2<=18)||LA25_2==32||(LA25_2>=34 && LA25_2<=50)||LA25_2==61||LA25_2==64||(LA25_2>=72 && LA25_2<=74)||LA25_2==80||LA25_2==97) ) {
+                    alt25=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -11476,12 +11476,12 @@
                 {
                 int LA25_6 = input.LA(2);
 
-                if ( (LA25_6==EOF||(LA25_6>=17 && LA25_6<=18)||LA25_6==32||(LA25_6>=34 && LA25_6<=50)||LA25_6==61||LA25_6==64||(LA25_6>=72 && LA25_6<=74)||LA25_6==80||LA25_6==97) ) {
-                    alt25=1;
-                }
-                else if ( (LA25_6==60) ) {
+                if ( (LA25_6==60) ) {
                     alt25=2;
                 }
+                else if ( (LA25_6==EOF||(LA25_6>=17 && LA25_6<=18)||LA25_6==32||(LA25_6>=34 && LA25_6<=50)||LA25_6==61||LA25_6==64||(LA25_6>=72 && LA25_6<=74)||LA25_6==80||LA25_6==97) ) {
+                    alt25=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -13122,12 +13122,12 @@
                 {
                 int LA39_5 = input.LA(2);
 
-                if ( ((LA39_5>=17 && LA39_5<=18)||LA39_5==32||(LA39_5>=34 && LA39_5<=50)||LA39_5==61||(LA39_5>=72 && LA39_5<=73)||LA39_5==80||LA39_5==84||LA39_5==97) ) {
-                    alt39=1;
-                }
-                else if ( (LA39_5==60) ) {
+                if ( (LA39_5==60) ) {
                     alt39=2;
                 }
+                else if ( ((LA39_5>=17 && LA39_5<=18)||LA39_5==32||(LA39_5>=34 && LA39_5<=50)||LA39_5==61||(LA39_5>=72 && LA39_5<=73)||LA39_5==80||LA39_5==84||LA39_5==97) ) {
+                    alt39=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -13141,12 +13141,12 @@
                 {
                 int LA39_6 = input.LA(2);
 
-                if ( (LA39_6==60) ) {
-                    alt39=2;
-                }
-                else if ( ((LA39_6>=17 && LA39_6<=18)||LA39_6==32||(LA39_6>=34 && LA39_6<=50)||LA39_6==61||(LA39_6>=72 && LA39_6<=73)||LA39_6==80||LA39_6==84||LA39_6==97) ) {
+                if ( ((LA39_6>=17 && LA39_6<=18)||LA39_6==32||(LA39_6>=34 && LA39_6<=50)||LA39_6==61||(LA39_6>=72 && LA39_6<=73)||LA39_6==80||LA39_6==84||LA39_6==97) ) {
                     alt39=1;
                 }
+                else if ( (LA39_6==60) ) {
+                    alt39=2;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -21998,40 +21998,29 @@
 
 
     // $ANTLR start "rule__PropertyContextDeclCS__Group__3__Impl"
-    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6978:1: rule__PropertyContextDeclCS__Group__3__Impl : ( ( rule__PropertyContextDeclCS__OwnedTypeAssignment_3 )? ) ;
+    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6978:1: rule__PropertyContextDeclCS__Group__3__Impl : ( ( rule__PropertyContextDeclCS__OwnedTypeAssignment_3 ) ) ;
     public final void rule__PropertyContextDeclCS__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
             
         try {
-            // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6982:1: ( ( ( rule__PropertyContextDeclCS__OwnedTypeAssignment_3 )? ) )
-            // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6983:1: ( ( rule__PropertyContextDeclCS__OwnedTypeAssignment_3 )? )
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6982:1: ( ( ( rule__PropertyContextDeclCS__OwnedTypeAssignment_3 ) ) )
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6983:1: ( ( rule__PropertyContextDeclCS__OwnedTypeAssignment_3 ) )
             {
-            // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6983:1: ( ( rule__PropertyContextDeclCS__OwnedTypeAssignment_3 )? )
-            // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6984:1: ( rule__PropertyContextDeclCS__OwnedTypeAssignment_3 )?
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6983:1: ( ( rule__PropertyContextDeclCS__OwnedTypeAssignment_3 ) )
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6984:1: ( rule__PropertyContextDeclCS__OwnedTypeAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedTypeAssignment_3()); 
             }
-            // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6985:1: ( rule__PropertyContextDeclCS__OwnedTypeAssignment_3 )?
-            int alt73=2;
-            int LA73_0 = input.LA(1);
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6985:1: ( rule__PropertyContextDeclCS__OwnedTypeAssignment_3 )
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6985:2: rule__PropertyContextDeclCS__OwnedTypeAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__OwnedTypeAssignment_3_in_rule__PropertyContextDeclCS__Group__3__Impl14667);
+            rule__PropertyContextDeclCS__OwnedTypeAssignment_3();
 
-            if ( ((LA73_0>=RULE_SIMPLE_ID && LA73_0<=RULE_ESCAPED_ID)||(LA73_0>=19 && LA73_0<=31)||(LA73_0>=51 && LA73_0<=56)) ) {
-                alt73=1;
-            }
-            switch (alt73) {
-                case 1 :
-                    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6985:2: rule__PropertyContextDeclCS__OwnedTypeAssignment_3
-                    {
-                    pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__OwnedTypeAssignment_3_in_rule__PropertyContextDeclCS__Group__3__Impl14667);
-                    rule__PropertyContextDeclCS__OwnedTypeAssignment_3();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
+            state._fsp--;
+            if (state.failed) return ;
 
             }
 
@@ -22069,7 +22058,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:6999:1: ( rule__PropertyContextDeclCS__Group__4__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7000:2: rule__PropertyContextDeclCS__Group__4__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group__4__Impl_in_rule__PropertyContextDeclCS__Group__414698);
+            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group__4__Impl_in_rule__PropertyContextDeclCS__Group__414697);
             rule__PropertyContextDeclCS__Group__4__Impl();
 
             state._fsp--;
@@ -22109,21 +22098,21 @@
                before(grammarAccess.getPropertyContextDeclCSAccess().getAlternatives_4()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7013:1: ( rule__PropertyContextDeclCS__Alternatives_4 )*
-            loop74:
+            loop73:
             do {
-                int alt74=2;
-                int LA74_0 = input.LA(1);
+                int alt73=2;
+                int LA73_0 = input.LA(1);
 
-                if ( ((LA74_0>=70 && LA74_0<=71)) ) {
-                    alt74=1;
+                if ( ((LA73_0>=70 && LA73_0<=71)) ) {
+                    alt73=1;
                 }
 
 
-                switch (alt74) {
+                switch (alt73) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7013:2: rule__PropertyContextDeclCS__Alternatives_4
             	    {
-            	    pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Alternatives_4_in_rule__PropertyContextDeclCS__Group__4__Impl14725);
+            	    pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Alternatives_4_in_rule__PropertyContextDeclCS__Group__4__Impl14724);
             	    rule__PropertyContextDeclCS__Alternatives_4();
 
             	    state._fsp--;
@@ -22133,7 +22122,7 @@
             	    break;
 
             	default :
-            	    break loop74;
+            	    break loop73;
                 }
             } while (true);
 
@@ -22171,12 +22160,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7037:1: ( rule__PropertyContextDeclCS__Group_4_0__0__Impl rule__PropertyContextDeclCS__Group_4_0__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7038:2: rule__PropertyContextDeclCS__Group_4_0__0__Impl rule__PropertyContextDeclCS__Group_4_0__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_0__0__Impl_in_rule__PropertyContextDeclCS__Group_4_0__014766);
+            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_0__0__Impl_in_rule__PropertyContextDeclCS__Group_4_0__014765);
             rule__PropertyContextDeclCS__Group_4_0__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_0__1_in_rule__PropertyContextDeclCS__Group_4_0__014769);
+            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_0__1_in_rule__PropertyContextDeclCS__Group_4_0__014768);
             rule__PropertyContextDeclCS__Group_4_0__1();
 
             state._fsp--;
@@ -22215,7 +22204,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPropertyContextDeclCSAccess().getDeriveKeyword_4_0_0()); 
             }
-            match(input,70,FollowSets000.FOLLOW_70_in_rule__PropertyContextDeclCS__Group_4_0__0__Impl14797); if (state.failed) return ;
+            match(input,70,FollowSets000.FOLLOW_70_in_rule__PropertyContextDeclCS__Group_4_0__0__Impl14796); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPropertyContextDeclCSAccess().getDeriveKeyword_4_0_0()); 
             }
@@ -22250,7 +22239,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7068:1: ( rule__PropertyContextDeclCS__Group_4_0__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7069:2: rule__PropertyContextDeclCS__Group_4_0__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_0__1__Impl_in_rule__PropertyContextDeclCS__Group_4_0__114828);
+            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_0__1__Impl_in_rule__PropertyContextDeclCS__Group_4_0__114827);
             rule__PropertyContextDeclCS__Group_4_0__1__Impl();
 
             state._fsp--;
@@ -22292,7 +22281,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7082:1: ( rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7082:2: rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_1_in_rule__PropertyContextDeclCS__Group_4_0__1__Impl14855);
+            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_1_in_rule__PropertyContextDeclCS__Group_4_0__1__Impl14854);
             rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_1();
 
             state._fsp--;
@@ -22334,12 +22323,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7100:1: ( rule__PropertyContextDeclCS__Group_4_1__0__Impl rule__PropertyContextDeclCS__Group_4_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7101:2: rule__PropertyContextDeclCS__Group_4_1__0__Impl rule__PropertyContextDeclCS__Group_4_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_1__0__Impl_in_rule__PropertyContextDeclCS__Group_4_1__014889);
+            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_1__0__Impl_in_rule__PropertyContextDeclCS__Group_4_1__014888);
             rule__PropertyContextDeclCS__Group_4_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_1__1_in_rule__PropertyContextDeclCS__Group_4_1__014892);
+            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_1__1_in_rule__PropertyContextDeclCS__Group_4_1__014891);
             rule__PropertyContextDeclCS__Group_4_1__1();
 
             state._fsp--;
@@ -22378,7 +22367,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPropertyContextDeclCSAccess().getInitKeyword_4_1_0()); 
             }
-            match(input,71,FollowSets000.FOLLOW_71_in_rule__PropertyContextDeclCS__Group_4_1__0__Impl14920); if (state.failed) return ;
+            match(input,71,FollowSets000.FOLLOW_71_in_rule__PropertyContextDeclCS__Group_4_1__0__Impl14919); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPropertyContextDeclCSAccess().getInitKeyword_4_1_0()); 
             }
@@ -22413,12 +22402,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7131:1: ( rule__PropertyContextDeclCS__Group_4_1__1__Impl rule__PropertyContextDeclCS__Group_4_1__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7132:2: rule__PropertyContextDeclCS__Group_4_1__1__Impl rule__PropertyContextDeclCS__Group_4_1__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_1__1__Impl_in_rule__PropertyContextDeclCS__Group_4_1__114951);
+            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_1__1__Impl_in_rule__PropertyContextDeclCS__Group_4_1__114950);
             rule__PropertyContextDeclCS__Group_4_1__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_1__2_in_rule__PropertyContextDeclCS__Group_4_1__114954);
+            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_1__2_in_rule__PropertyContextDeclCS__Group_4_1__114953);
             rule__PropertyContextDeclCS__Group_4_1__2();
 
             state._fsp--;
@@ -22457,7 +22446,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_4_1_1()); 
             }
-            match(input,60,FollowSets000.FOLLOW_60_in_rule__PropertyContextDeclCS__Group_4_1__1__Impl14982); if (state.failed) return ;
+            match(input,60,FollowSets000.FOLLOW_60_in_rule__PropertyContextDeclCS__Group_4_1__1__Impl14981); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_4_1_1()); 
             }
@@ -22492,7 +22481,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7162:1: ( rule__PropertyContextDeclCS__Group_4_1__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7163:2: rule__PropertyContextDeclCS__Group_4_1__2__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_1__2__Impl_in_rule__PropertyContextDeclCS__Group_4_1__215013);
+            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__Group_4_1__2__Impl_in_rule__PropertyContextDeclCS__Group_4_1__215012);
             rule__PropertyContextDeclCS__Group_4_1__2__Impl();
 
             state._fsp--;
@@ -22534,7 +22523,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7176:1: ( rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7176:2: rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_2_in_rule__PropertyContextDeclCS__Group_4_1__2__Impl15040);
+            pushFollow(FollowSets000.FOLLOW_rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_2_in_rule__PropertyContextDeclCS__Group_4_1__2__Impl15039);
             rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_2();
 
             state._fsp--;
@@ -22576,12 +22565,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7196:1: ( rule__TemplateSignatureCS__Group_0__0__Impl rule__TemplateSignatureCS__Group_0__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7197:2: rule__TemplateSignatureCS__Group_0__0__Impl rule__TemplateSignatureCS__Group_0__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0__0__Impl_in_rule__TemplateSignatureCS__Group_0__015076);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0__0__Impl_in_rule__TemplateSignatureCS__Group_0__015075);
             rule__TemplateSignatureCS__Group_0__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0__1_in_rule__TemplateSignatureCS__Group_0__015079);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0__1_in_rule__TemplateSignatureCS__Group_0__015078);
             rule__TemplateSignatureCS__Group_0__1();
 
             state._fsp--;
@@ -22620,7 +22609,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0()); 
             }
-            match(input,61,FollowSets000.FOLLOW_61_in_rule__TemplateSignatureCS__Group_0__0__Impl15107); if (state.failed) return ;
+            match(input,61,FollowSets000.FOLLOW_61_in_rule__TemplateSignatureCS__Group_0__0__Impl15106); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0()); 
             }
@@ -22655,12 +22644,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7227:1: ( rule__TemplateSignatureCS__Group_0__1__Impl rule__TemplateSignatureCS__Group_0__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7228:2: rule__TemplateSignatureCS__Group_0__1__Impl rule__TemplateSignatureCS__Group_0__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0__1__Impl_in_rule__TemplateSignatureCS__Group_0__115138);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0__1__Impl_in_rule__TemplateSignatureCS__Group_0__115137);
             rule__TemplateSignatureCS__Group_0__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0__2_in_rule__TemplateSignatureCS__Group_0__115141);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0__2_in_rule__TemplateSignatureCS__Group_0__115140);
             rule__TemplateSignatureCS__Group_0__2();
 
             state._fsp--;
@@ -22702,7 +22691,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7242:1: ( rule__TemplateSignatureCS__OwnedParametersAssignment_0_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7242:2: rule__TemplateSignatureCS__OwnedParametersAssignment_0_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_0_1_in_rule__TemplateSignatureCS__Group_0__1__Impl15168);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_0_1_in_rule__TemplateSignatureCS__Group_0__1__Impl15167);
             rule__TemplateSignatureCS__OwnedParametersAssignment_0_1();
 
             state._fsp--;
@@ -22744,12 +22733,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7256:1: ( rule__TemplateSignatureCS__Group_0__2__Impl rule__TemplateSignatureCS__Group_0__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7257:2: rule__TemplateSignatureCS__Group_0__2__Impl rule__TemplateSignatureCS__Group_0__3
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0__2__Impl_in_rule__TemplateSignatureCS__Group_0__215198);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0__2__Impl_in_rule__TemplateSignatureCS__Group_0__215197);
             rule__TemplateSignatureCS__Group_0__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0__3_in_rule__TemplateSignatureCS__Group_0__215201);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0__3_in_rule__TemplateSignatureCS__Group_0__215200);
             rule__TemplateSignatureCS__Group_0__3();
 
             state._fsp--;
@@ -22789,21 +22778,21 @@
                before(grammarAccess.getTemplateSignatureCSAccess().getGroup_0_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7271:1: ( rule__TemplateSignatureCS__Group_0_2__0 )*
-            loop75:
+            loop74:
             do {
-                int alt75=2;
-                int LA75_0 = input.LA(1);
+                int alt74=2;
+                int LA74_0 = input.LA(1);
 
-                if ( (LA75_0==64) ) {
-                    alt75=1;
+                if ( (LA74_0==64) ) {
+                    alt74=1;
                 }
 
 
-                switch (alt75) {
+                switch (alt74) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7271:2: rule__TemplateSignatureCS__Group_0_2__0
             	    {
-            	    pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0_2__0_in_rule__TemplateSignatureCS__Group_0__2__Impl15228);
+            	    pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0_2__0_in_rule__TemplateSignatureCS__Group_0__2__Impl15227);
             	    rule__TemplateSignatureCS__Group_0_2__0();
 
             	    state._fsp--;
@@ -22813,7 +22802,7 @@
             	    break;
 
             	default :
-            	    break loop75;
+            	    break loop74;
                 }
             } while (true);
 
@@ -22851,7 +22840,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7285:1: ( rule__TemplateSignatureCS__Group_0__3__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7286:2: rule__TemplateSignatureCS__Group_0__3__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0__3__Impl_in_rule__TemplateSignatureCS__Group_0__315259);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0__3__Impl_in_rule__TemplateSignatureCS__Group_0__315258);
             rule__TemplateSignatureCS__Group_0__3__Impl();
 
             state._fsp--;
@@ -22890,7 +22879,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3()); 
             }
-            match(input,62,FollowSets000.FOLLOW_62_in_rule__TemplateSignatureCS__Group_0__3__Impl15287); if (state.failed) return ;
+            match(input,62,FollowSets000.FOLLOW_62_in_rule__TemplateSignatureCS__Group_0__3__Impl15286); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3()); 
             }
@@ -22925,12 +22914,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7323:1: ( rule__TemplateSignatureCS__Group_0_2__0__Impl rule__TemplateSignatureCS__Group_0_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7324:2: rule__TemplateSignatureCS__Group_0_2__0__Impl rule__TemplateSignatureCS__Group_0_2__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0_2__0__Impl_in_rule__TemplateSignatureCS__Group_0_2__015326);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0_2__0__Impl_in_rule__TemplateSignatureCS__Group_0_2__015325);
             rule__TemplateSignatureCS__Group_0_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0_2__1_in_rule__TemplateSignatureCS__Group_0_2__015329);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0_2__1_in_rule__TemplateSignatureCS__Group_0_2__015328);
             rule__TemplateSignatureCS__Group_0_2__1();
 
             state._fsp--;
@@ -22969,7 +22958,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0()); 
             }
-            match(input,64,FollowSets000.FOLLOW_64_in_rule__TemplateSignatureCS__Group_0_2__0__Impl15357); if (state.failed) return ;
+            match(input,64,FollowSets000.FOLLOW_64_in_rule__TemplateSignatureCS__Group_0_2__0__Impl15356); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0()); 
             }
@@ -23004,7 +22993,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7354:1: ( rule__TemplateSignatureCS__Group_0_2__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7355:2: rule__TemplateSignatureCS__Group_0_2__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0_2__1__Impl_in_rule__TemplateSignatureCS__Group_0_2__115388);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_0_2__1__Impl_in_rule__TemplateSignatureCS__Group_0_2__115387);
             rule__TemplateSignatureCS__Group_0_2__1__Impl();
 
             state._fsp--;
@@ -23046,7 +23035,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7368:1: ( rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7368:2: rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1_in_rule__TemplateSignatureCS__Group_0_2__1__Impl15415);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1_in_rule__TemplateSignatureCS__Group_0_2__1__Impl15414);
             rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1();
 
             state._fsp--;
@@ -23088,12 +23077,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7386:1: ( rule__TemplateSignatureCS__Group_1__0__Impl rule__TemplateSignatureCS__Group_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7387:2: rule__TemplateSignatureCS__Group_1__0__Impl rule__TemplateSignatureCS__Group_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1__0__Impl_in_rule__TemplateSignatureCS__Group_1__015449);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1__0__Impl_in_rule__TemplateSignatureCS__Group_1__015448);
             rule__TemplateSignatureCS__Group_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1__1_in_rule__TemplateSignatureCS__Group_1__015452);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1__1_in_rule__TemplateSignatureCS__Group_1__015451);
             rule__TemplateSignatureCS__Group_1__1();
 
             state._fsp--;
@@ -23132,7 +23121,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0()); 
             }
-            match(input,38,FollowSets000.FOLLOW_38_in_rule__TemplateSignatureCS__Group_1__0__Impl15480); if (state.failed) return ;
+            match(input,38,FollowSets000.FOLLOW_38_in_rule__TemplateSignatureCS__Group_1__0__Impl15479); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0()); 
             }
@@ -23167,12 +23156,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7417:1: ( rule__TemplateSignatureCS__Group_1__1__Impl rule__TemplateSignatureCS__Group_1__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7418:2: rule__TemplateSignatureCS__Group_1__1__Impl rule__TemplateSignatureCS__Group_1__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1__1__Impl_in_rule__TemplateSignatureCS__Group_1__115511);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1__1__Impl_in_rule__TemplateSignatureCS__Group_1__115510);
             rule__TemplateSignatureCS__Group_1__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1__2_in_rule__TemplateSignatureCS__Group_1__115514);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1__2_in_rule__TemplateSignatureCS__Group_1__115513);
             rule__TemplateSignatureCS__Group_1__2();
 
             state._fsp--;
@@ -23214,7 +23203,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7432:1: ( rule__TemplateSignatureCS__OwnedParametersAssignment_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7432:2: rule__TemplateSignatureCS__OwnedParametersAssignment_1_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_1_1_in_rule__TemplateSignatureCS__Group_1__1__Impl15541);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_1_1_in_rule__TemplateSignatureCS__Group_1__1__Impl15540);
             rule__TemplateSignatureCS__OwnedParametersAssignment_1_1();
 
             state._fsp--;
@@ -23256,12 +23245,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7446:1: ( rule__TemplateSignatureCS__Group_1__2__Impl rule__TemplateSignatureCS__Group_1__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7447:2: rule__TemplateSignatureCS__Group_1__2__Impl rule__TemplateSignatureCS__Group_1__3
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1__2__Impl_in_rule__TemplateSignatureCS__Group_1__215571);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1__2__Impl_in_rule__TemplateSignatureCS__Group_1__215570);
             rule__TemplateSignatureCS__Group_1__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1__3_in_rule__TemplateSignatureCS__Group_1__215574);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1__3_in_rule__TemplateSignatureCS__Group_1__215573);
             rule__TemplateSignatureCS__Group_1__3();
 
             state._fsp--;
@@ -23301,21 +23290,21 @@
                before(grammarAccess.getTemplateSignatureCSAccess().getGroup_1_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7461:1: ( rule__TemplateSignatureCS__Group_1_2__0 )*
-            loop76:
+            loop75:
             do {
-                int alt76=2;
-                int LA76_0 = input.LA(1);
+                int alt75=2;
+                int LA75_0 = input.LA(1);
 
-                if ( (LA76_0==64) ) {
-                    alt76=1;
+                if ( (LA75_0==64) ) {
+                    alt75=1;
                 }
 
 
-                switch (alt76) {
+                switch (alt75) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7461:2: rule__TemplateSignatureCS__Group_1_2__0
             	    {
-            	    pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1_2__0_in_rule__TemplateSignatureCS__Group_1__2__Impl15601);
+            	    pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1_2__0_in_rule__TemplateSignatureCS__Group_1__2__Impl15600);
             	    rule__TemplateSignatureCS__Group_1_2__0();
 
             	    state._fsp--;
@@ -23325,7 +23314,7 @@
             	    break;
 
             	default :
-            	    break loop76;
+            	    break loop75;
                 }
             } while (true);
 
@@ -23363,7 +23352,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7475:1: ( rule__TemplateSignatureCS__Group_1__3__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7476:2: rule__TemplateSignatureCS__Group_1__3__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1__3__Impl_in_rule__TemplateSignatureCS__Group_1__315632);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1__3__Impl_in_rule__TemplateSignatureCS__Group_1__315631);
             rule__TemplateSignatureCS__Group_1__3__Impl();
 
             state._fsp--;
@@ -23402,7 +23391,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3()); 
             }
-            match(input,37,FollowSets000.FOLLOW_37_in_rule__TemplateSignatureCS__Group_1__3__Impl15660); if (state.failed) return ;
+            match(input,37,FollowSets000.FOLLOW_37_in_rule__TemplateSignatureCS__Group_1__3__Impl15659); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3()); 
             }
@@ -23437,12 +23426,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7513:1: ( rule__TemplateSignatureCS__Group_1_2__0__Impl rule__TemplateSignatureCS__Group_1_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7514:2: rule__TemplateSignatureCS__Group_1_2__0__Impl rule__TemplateSignatureCS__Group_1_2__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1_2__0__Impl_in_rule__TemplateSignatureCS__Group_1_2__015699);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1_2__0__Impl_in_rule__TemplateSignatureCS__Group_1_2__015698);
             rule__TemplateSignatureCS__Group_1_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1_2__1_in_rule__TemplateSignatureCS__Group_1_2__015702);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1_2__1_in_rule__TemplateSignatureCS__Group_1_2__015701);
             rule__TemplateSignatureCS__Group_1_2__1();
 
             state._fsp--;
@@ -23481,7 +23470,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0()); 
             }
-            match(input,64,FollowSets000.FOLLOW_64_in_rule__TemplateSignatureCS__Group_1_2__0__Impl15730); if (state.failed) return ;
+            match(input,64,FollowSets000.FOLLOW_64_in_rule__TemplateSignatureCS__Group_1_2__0__Impl15729); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0()); 
             }
@@ -23516,7 +23505,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7544:1: ( rule__TemplateSignatureCS__Group_1_2__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7545:2: rule__TemplateSignatureCS__Group_1_2__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1_2__1__Impl_in_rule__TemplateSignatureCS__Group_1_2__115761);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__Group_1_2__1__Impl_in_rule__TemplateSignatureCS__Group_1_2__115760);
             rule__TemplateSignatureCS__Group_1_2__1__Impl();
 
             state._fsp--;
@@ -23558,7 +23547,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7558:1: ( rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7558:2: rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1_in_rule__TemplateSignatureCS__Group_1_2__1__Impl15788);
+            pushFollow(FollowSets000.FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1_in_rule__TemplateSignatureCS__Group_1_2__1__Impl15787);
             rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1();
 
             state._fsp--;
@@ -23600,12 +23589,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7576:1: ( rule__NavigatingArgExpCS__Group_0__0__Impl rule__NavigatingArgExpCS__Group_0__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7577:2: rule__NavigatingArgExpCS__Group_0__0__Impl rule__NavigatingArgExpCS__Group_0__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__NavigatingArgExpCS__Group_0__0__Impl_in_rule__NavigatingArgExpCS__Group_0__015822);
+            pushFollow(FollowSets000.FOLLOW_rule__NavigatingArgExpCS__Group_0__0__Impl_in_rule__NavigatingArgExpCS__Group_0__015821);
             rule__NavigatingArgExpCS__Group_0__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__NavigatingArgExpCS__Group_0__1_in_rule__NavigatingArgExpCS__Group_0__015825);
+            pushFollow(FollowSets000.FOLLOW_rule__NavigatingArgExpCS__Group_0__1_in_rule__NavigatingArgExpCS__Group_0__015824);
             rule__NavigatingArgExpCS__Group_0__1();
 
             state._fsp--;
@@ -23679,7 +23668,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7607:1: ( rule__NavigatingArgExpCS__Group_0__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7608:2: rule__NavigatingArgExpCS__Group_0__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__NavigatingArgExpCS__Group_0__1__Impl_in_rule__NavigatingArgExpCS__Group_0__115883);
+            pushFollow(FollowSets000.FOLLOW_rule__NavigatingArgExpCS__Group_0__1__Impl_in_rule__NavigatingArgExpCS__Group_0__115882);
             rule__NavigatingArgExpCS__Group_0__1__Impl();
 
             state._fsp--;
@@ -23718,7 +23707,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingArgExpCSAccess().getQuestionMarkKeyword_0_1()); 
             }
-            match(input,57,FollowSets000.FOLLOW_57_in_rule__NavigatingArgExpCS__Group_0__1__Impl15911); if (state.failed) return ;
+            match(input,57,FollowSets000.FOLLOW_57_in_rule__NavigatingArgExpCS__Group_0__1__Impl15910); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingArgExpCSAccess().getQuestionMarkKeyword_0_1()); 
             }
@@ -23753,12 +23742,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7641:1: ( rule__URIPathNameCS__Group__0__Impl rule__URIPathNameCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7642:2: rule__URIPathNameCS__Group__0__Impl rule__URIPathNameCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__Group__0__Impl_in_rule__URIPathNameCS__Group__015946);
+            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__Group__0__Impl_in_rule__URIPathNameCS__Group__015945);
             rule__URIPathNameCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__Group__1_in_rule__URIPathNameCS__Group__015949);
+            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__Group__1_in_rule__URIPathNameCS__Group__015948);
             rule__URIPathNameCS__Group__1();
 
             state._fsp--;
@@ -23800,7 +23789,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7656:1: ( rule__URIPathNameCS__OwnedPathElementsAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7656:2: rule__URIPathNameCS__OwnedPathElementsAssignment_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__OwnedPathElementsAssignment_0_in_rule__URIPathNameCS__Group__0__Impl15976);
+            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__OwnedPathElementsAssignment_0_in_rule__URIPathNameCS__Group__0__Impl15975);
             rule__URIPathNameCS__OwnedPathElementsAssignment_0();
 
             state._fsp--;
@@ -23842,7 +23831,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7670:1: ( rule__URIPathNameCS__Group__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7671:2: rule__URIPathNameCS__Group__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__Group__1__Impl_in_rule__URIPathNameCS__Group__116006);
+            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__Group__1__Impl_in_rule__URIPathNameCS__Group__116005);
             rule__URIPathNameCS__Group__1__Impl();
 
             state._fsp--;
@@ -23882,21 +23871,21 @@
                before(grammarAccess.getURIPathNameCSAccess().getGroup_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7684:1: ( rule__URIPathNameCS__Group_1__0 )*
-            loop77:
+            loop76:
             do {
-                int alt77=2;
-                int LA77_0 = input.LA(1);
+                int alt76=2;
+                int LA76_0 = input.LA(1);
 
-                if ( (LA77_0==72) ) {
-                    alt77=1;
+                if ( (LA76_0==72) ) {
+                    alt76=1;
                 }
 
 
-                switch (alt77) {
+                switch (alt76) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7684:2: rule__URIPathNameCS__Group_1__0
             	    {
-            	    pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__Group_1__0_in_rule__URIPathNameCS__Group__1__Impl16033);
+            	    pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__Group_1__0_in_rule__URIPathNameCS__Group__1__Impl16032);
             	    rule__URIPathNameCS__Group_1__0();
 
             	    state._fsp--;
@@ -23906,7 +23895,7 @@
             	    break;
 
             	default :
-            	    break loop77;
+            	    break loop76;
                 }
             } while (true);
 
@@ -23944,12 +23933,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7702:1: ( rule__URIPathNameCS__Group_1__0__Impl rule__URIPathNameCS__Group_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7703:2: rule__URIPathNameCS__Group_1__0__Impl rule__URIPathNameCS__Group_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__Group_1__0__Impl_in_rule__URIPathNameCS__Group_1__016068);
+            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__Group_1__0__Impl_in_rule__URIPathNameCS__Group_1__016067);
             rule__URIPathNameCS__Group_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__Group_1__1_in_rule__URIPathNameCS__Group_1__016071);
+            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__Group_1__1_in_rule__URIPathNameCS__Group_1__016070);
             rule__URIPathNameCS__Group_1__1();
 
             state._fsp--;
@@ -23988,7 +23977,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0()); 
             }
-            match(input,72,FollowSets000.FOLLOW_72_in_rule__URIPathNameCS__Group_1__0__Impl16099); if (state.failed) return ;
+            match(input,72,FollowSets000.FOLLOW_72_in_rule__URIPathNameCS__Group_1__0__Impl16098); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0()); 
             }
@@ -24023,7 +24012,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7733:1: ( rule__URIPathNameCS__Group_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7734:2: rule__URIPathNameCS__Group_1__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__Group_1__1__Impl_in_rule__URIPathNameCS__Group_1__116130);
+            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__Group_1__1__Impl_in_rule__URIPathNameCS__Group_1__116129);
             rule__URIPathNameCS__Group_1__1__Impl();
 
             state._fsp--;
@@ -24065,7 +24054,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7747:1: ( rule__URIPathNameCS__OwnedPathElementsAssignment_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7747:2: rule__URIPathNameCS__OwnedPathElementsAssignment_1_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__OwnedPathElementsAssignment_1_1_in_rule__URIPathNameCS__Group_1__1__Impl16157);
+            pushFollow(FollowSets000.FOLLOW_rule__URIPathNameCS__OwnedPathElementsAssignment_1_1_in_rule__URIPathNameCS__Group_1__1__Impl16156);
             rule__URIPathNameCS__OwnedPathElementsAssignment_1_1();
 
             state._fsp--;
@@ -24107,12 +24096,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7765:1: ( rule__URIFirstPathElementCS__Group_1__0__Impl rule__URIFirstPathElementCS__Group_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7766:2: rule__URIFirstPathElementCS__Group_1__0__Impl rule__URIFirstPathElementCS__Group_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__URIFirstPathElementCS__Group_1__0__Impl_in_rule__URIFirstPathElementCS__Group_1__016191);
+            pushFollow(FollowSets000.FOLLOW_rule__URIFirstPathElementCS__Group_1__0__Impl_in_rule__URIFirstPathElementCS__Group_1__016190);
             rule__URIFirstPathElementCS__Group_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__URIFirstPathElementCS__Group_1__1_in_rule__URIFirstPathElementCS__Group_1__016194);
+            pushFollow(FollowSets000.FOLLOW_rule__URIFirstPathElementCS__Group_1__1_in_rule__URIFirstPathElementCS__Group_1__016193);
             rule__URIFirstPathElementCS__Group_1__1();
 
             state._fsp--;
@@ -24186,7 +24175,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7796:1: ( rule__URIFirstPathElementCS__Group_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7797:2: rule__URIFirstPathElementCS__Group_1__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__URIFirstPathElementCS__Group_1__1__Impl_in_rule__URIFirstPathElementCS__Group_1__116252);
+            pushFollow(FollowSets000.FOLLOW_rule__URIFirstPathElementCS__Group_1__1__Impl_in_rule__URIFirstPathElementCS__Group_1__116251);
             rule__URIFirstPathElementCS__Group_1__1__Impl();
 
             state._fsp--;
@@ -24228,7 +24217,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7810:1: ( rule__URIFirstPathElementCS__ReferredElementAssignment_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7810:2: rule__URIFirstPathElementCS__ReferredElementAssignment_1_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__URIFirstPathElementCS__ReferredElementAssignment_1_1_in_rule__URIFirstPathElementCS__Group_1__1__Impl16279);
+            pushFollow(FollowSets000.FOLLOW_rule__URIFirstPathElementCS__ReferredElementAssignment_1_1_in_rule__URIFirstPathElementCS__Group_1__1__Impl16278);
             rule__URIFirstPathElementCS__ReferredElementAssignment_1_1();
 
             state._fsp--;
@@ -24270,12 +24259,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7828:1: ( rule__CollectionTypeCS__Group__0__Impl rule__CollectionTypeCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7829:2: rule__CollectionTypeCS__Group__0__Impl rule__CollectionTypeCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group__0__Impl_in_rule__CollectionTypeCS__Group__016313);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group__0__Impl_in_rule__CollectionTypeCS__Group__016312);
             rule__CollectionTypeCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group__1_in_rule__CollectionTypeCS__Group__016316);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group__1_in_rule__CollectionTypeCS__Group__016315);
             rule__CollectionTypeCS__Group__1();
 
             state._fsp--;
@@ -24317,7 +24306,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7843:1: ( rule__CollectionTypeCS__NameAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7843:2: rule__CollectionTypeCS__NameAssignment_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__NameAssignment_0_in_rule__CollectionTypeCS__Group__0__Impl16343);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__NameAssignment_0_in_rule__CollectionTypeCS__Group__0__Impl16342);
             rule__CollectionTypeCS__NameAssignment_0();
 
             state._fsp--;
@@ -24359,7 +24348,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7857:1: ( rule__CollectionTypeCS__Group__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7858:2: rule__CollectionTypeCS__Group__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group__1__Impl_in_rule__CollectionTypeCS__Group__116373);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group__1__Impl_in_rule__CollectionTypeCS__Group__116372);
             rule__CollectionTypeCS__Group__1__Impl();
 
             state._fsp--;
@@ -24399,17 +24388,17 @@
                before(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7871:1: ( rule__CollectionTypeCS__Group_1__0 )?
-            int alt78=2;
-            int LA78_0 = input.LA(1);
+            int alt77=2;
+            int LA77_0 = input.LA(1);
 
-            if ( (LA78_0==61) ) {
-                alt78=1;
+            if ( (LA77_0==61) ) {
+                alt77=1;
             }
-            switch (alt78) {
+            switch (alt77) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7871:2: rule__CollectionTypeCS__Group_1__0
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group_1__0_in_rule__CollectionTypeCS__Group__1__Impl16400);
+                    pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group_1__0_in_rule__CollectionTypeCS__Group__1__Impl16399);
                     rule__CollectionTypeCS__Group_1__0();
 
                     state._fsp--;
@@ -24454,12 +24443,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7889:1: ( rule__CollectionTypeCS__Group_1__0__Impl rule__CollectionTypeCS__Group_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7890:2: rule__CollectionTypeCS__Group_1__0__Impl rule__CollectionTypeCS__Group_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group_1__0__Impl_in_rule__CollectionTypeCS__Group_1__016435);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group_1__0__Impl_in_rule__CollectionTypeCS__Group_1__016434);
             rule__CollectionTypeCS__Group_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group_1__1_in_rule__CollectionTypeCS__Group_1__016438);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group_1__1_in_rule__CollectionTypeCS__Group_1__016437);
             rule__CollectionTypeCS__Group_1__1();
 
             state._fsp--;
@@ -24498,7 +24487,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); 
             }
-            match(input,61,FollowSets000.FOLLOW_61_in_rule__CollectionTypeCS__Group_1__0__Impl16466); if (state.failed) return ;
+            match(input,61,FollowSets000.FOLLOW_61_in_rule__CollectionTypeCS__Group_1__0__Impl16465); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); 
             }
@@ -24533,12 +24522,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7920:1: ( rule__CollectionTypeCS__Group_1__1__Impl rule__CollectionTypeCS__Group_1__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7921:2: rule__CollectionTypeCS__Group_1__1__Impl rule__CollectionTypeCS__Group_1__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group_1__1__Impl_in_rule__CollectionTypeCS__Group_1__116497);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group_1__1__Impl_in_rule__CollectionTypeCS__Group_1__116496);
             rule__CollectionTypeCS__Group_1__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group_1__2_in_rule__CollectionTypeCS__Group_1__116500);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group_1__2_in_rule__CollectionTypeCS__Group_1__116499);
             rule__CollectionTypeCS__Group_1__2();
 
             state._fsp--;
@@ -24580,7 +24569,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7935:1: ( rule__CollectionTypeCS__OwnedTypeAssignment_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7935:2: rule__CollectionTypeCS__OwnedTypeAssignment_1_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__OwnedTypeAssignment_1_1_in_rule__CollectionTypeCS__Group_1__1__Impl16527);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__OwnedTypeAssignment_1_1_in_rule__CollectionTypeCS__Group_1__1__Impl16526);
             rule__CollectionTypeCS__OwnedTypeAssignment_1_1();
 
             state._fsp--;
@@ -24622,7 +24611,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7949:1: ( rule__CollectionTypeCS__Group_1__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7950:2: rule__CollectionTypeCS__Group_1__2__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group_1__2__Impl_in_rule__CollectionTypeCS__Group_1__216557);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionTypeCS__Group_1__2__Impl_in_rule__CollectionTypeCS__Group_1__216556);
             rule__CollectionTypeCS__Group_1__2__Impl();
 
             state._fsp--;
@@ -24661,7 +24650,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); 
             }
-            match(input,62,FollowSets000.FOLLOW_62_in_rule__CollectionTypeCS__Group_1__2__Impl16585); if (state.failed) return ;
+            match(input,62,FollowSets000.FOLLOW_62_in_rule__CollectionTypeCS__Group_1__2__Impl16584); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); 
             }
@@ -24696,12 +24685,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7985:1: ( rule__TupleTypeCS__Group__0__Impl rule__TupleTypeCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:7986:2: rule__TupleTypeCS__Group__0__Impl rule__TupleTypeCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group__0__Impl_in_rule__TupleTypeCS__Group__016622);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group__0__Impl_in_rule__TupleTypeCS__Group__016621);
             rule__TupleTypeCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group__1_in_rule__TupleTypeCS__Group__016625);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group__1_in_rule__TupleTypeCS__Group__016624);
             rule__TupleTypeCS__Group__1();
 
             state._fsp--;
@@ -24743,7 +24732,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8000:1: ( rule__TupleTypeCS__NameAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8000:2: rule__TupleTypeCS__NameAssignment_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__NameAssignment_0_in_rule__TupleTypeCS__Group__0__Impl16652);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__NameAssignment_0_in_rule__TupleTypeCS__Group__0__Impl16651);
             rule__TupleTypeCS__NameAssignment_0();
 
             state._fsp--;
@@ -24785,7 +24774,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8014:1: ( rule__TupleTypeCS__Group__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8015:2: rule__TupleTypeCS__Group__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group__1__Impl_in_rule__TupleTypeCS__Group__116682);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group__1__Impl_in_rule__TupleTypeCS__Group__116681);
             rule__TupleTypeCS__Group__1__Impl();
 
             state._fsp--;
@@ -24825,17 +24814,17 @@
                before(grammarAccess.getTupleTypeCSAccess().getGroup_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8028:1: ( rule__TupleTypeCS__Group_1__0 )?
-            int alt79=2;
-            int LA79_0 = input.LA(1);
+            int alt78=2;
+            int LA78_0 = input.LA(1);
 
-            if ( (LA79_0==61) ) {
-                alt79=1;
+            if ( (LA78_0==61) ) {
+                alt78=1;
             }
-            switch (alt79) {
+            switch (alt78) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8028:2: rule__TupleTypeCS__Group_1__0
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1__0_in_rule__TupleTypeCS__Group__1__Impl16709);
+                    pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1__0_in_rule__TupleTypeCS__Group__1__Impl16708);
                     rule__TupleTypeCS__Group_1__0();
 
                     state._fsp--;
@@ -24880,12 +24869,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8046:1: ( rule__TupleTypeCS__Group_1__0__Impl rule__TupleTypeCS__Group_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8047:2: rule__TupleTypeCS__Group_1__0__Impl rule__TupleTypeCS__Group_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1__0__Impl_in_rule__TupleTypeCS__Group_1__016744);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1__0__Impl_in_rule__TupleTypeCS__Group_1__016743);
             rule__TupleTypeCS__Group_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1__1_in_rule__TupleTypeCS__Group_1__016747);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1__1_in_rule__TupleTypeCS__Group_1__016746);
             rule__TupleTypeCS__Group_1__1();
 
             state._fsp--;
@@ -24924,7 +24913,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); 
             }
-            match(input,61,FollowSets000.FOLLOW_61_in_rule__TupleTypeCS__Group_1__0__Impl16775); if (state.failed) return ;
+            match(input,61,FollowSets000.FOLLOW_61_in_rule__TupleTypeCS__Group_1__0__Impl16774); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); 
             }
@@ -24959,12 +24948,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8077:1: ( rule__TupleTypeCS__Group_1__1__Impl rule__TupleTypeCS__Group_1__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8078:2: rule__TupleTypeCS__Group_1__1__Impl rule__TupleTypeCS__Group_1__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1__1__Impl_in_rule__TupleTypeCS__Group_1__116806);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1__1__Impl_in_rule__TupleTypeCS__Group_1__116805);
             rule__TupleTypeCS__Group_1__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1__2_in_rule__TupleTypeCS__Group_1__116809);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1__2_in_rule__TupleTypeCS__Group_1__116808);
             rule__TupleTypeCS__Group_1__2();
 
             state._fsp--;
@@ -25004,17 +24993,17 @@
                before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8092:1: ( rule__TupleTypeCS__Group_1_1__0 )?
-            int alt80=2;
-            int LA80_0 = input.LA(1);
+            int alt79=2;
+            int LA79_0 = input.LA(1);
 
-            if ( ((LA80_0>=RULE_SIMPLE_ID && LA80_0<=RULE_ESCAPED_ID)||(LA80_0>=19 && LA80_0<=21)) ) {
-                alt80=1;
+            if ( ((LA79_0>=RULE_SIMPLE_ID && LA79_0<=RULE_ESCAPED_ID)||(LA79_0>=19 && LA79_0<=21)) ) {
+                alt79=1;
             }
-            switch (alt80) {
+            switch (alt79) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8092:2: rule__TupleTypeCS__Group_1_1__0
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1__0_in_rule__TupleTypeCS__Group_1__1__Impl16836);
+                    pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1__0_in_rule__TupleTypeCS__Group_1__1__Impl16835);
                     rule__TupleTypeCS__Group_1_1__0();
 
                     state._fsp--;
@@ -25059,7 +25048,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8106:1: ( rule__TupleTypeCS__Group_1__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8107:2: rule__TupleTypeCS__Group_1__2__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1__2__Impl_in_rule__TupleTypeCS__Group_1__216867);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1__2__Impl_in_rule__TupleTypeCS__Group_1__216866);
             rule__TupleTypeCS__Group_1__2__Impl();
 
             state._fsp--;
@@ -25098,7 +25087,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); 
             }
-            match(input,62,FollowSets000.FOLLOW_62_in_rule__TupleTypeCS__Group_1__2__Impl16895); if (state.failed) return ;
+            match(input,62,FollowSets000.FOLLOW_62_in_rule__TupleTypeCS__Group_1__2__Impl16894); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); 
             }
@@ -25133,12 +25122,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8142:1: ( rule__TupleTypeCS__Group_1_1__0__Impl rule__TupleTypeCS__Group_1_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8143:2: rule__TupleTypeCS__Group_1_1__0__Impl rule__TupleTypeCS__Group_1_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1__0__Impl_in_rule__TupleTypeCS__Group_1_1__016932);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1__0__Impl_in_rule__TupleTypeCS__Group_1_1__016931);
             rule__TupleTypeCS__Group_1_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1__1_in_rule__TupleTypeCS__Group_1_1__016935);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1__1_in_rule__TupleTypeCS__Group_1_1__016934);
             rule__TupleTypeCS__Group_1_1__1();
 
             state._fsp--;
@@ -25180,7 +25169,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8157:1: ( rule__TupleTypeCS__OwnedPartsAssignment_1_1_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8157:2: rule__TupleTypeCS__OwnedPartsAssignment_1_1_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__OwnedPartsAssignment_1_1_0_in_rule__TupleTypeCS__Group_1_1__0__Impl16962);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__OwnedPartsAssignment_1_1_0_in_rule__TupleTypeCS__Group_1_1__0__Impl16961);
             rule__TupleTypeCS__OwnedPartsAssignment_1_1_0();
 
             state._fsp--;
@@ -25222,7 +25211,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8171:1: ( rule__TupleTypeCS__Group_1_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8172:2: rule__TupleTypeCS__Group_1_1__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1__1__Impl_in_rule__TupleTypeCS__Group_1_1__116992);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1__1__Impl_in_rule__TupleTypeCS__Group_1_1__116991);
             rule__TupleTypeCS__Group_1_1__1__Impl();
 
             state._fsp--;
@@ -25262,21 +25251,21 @@
                before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8185:1: ( rule__TupleTypeCS__Group_1_1_1__0 )*
-            loop81:
+            loop80:
             do {
-                int alt81=2;
-                int LA81_0 = input.LA(1);
+                int alt80=2;
+                int LA80_0 = input.LA(1);
 
-                if ( (LA81_0==64) ) {
-                    alt81=1;
+                if ( (LA80_0==64) ) {
+                    alt80=1;
                 }
 
 
-                switch (alt81) {
+                switch (alt80) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8185:2: rule__TupleTypeCS__Group_1_1_1__0
             	    {
-            	    pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1_1__0_in_rule__TupleTypeCS__Group_1_1__1__Impl17019);
+            	    pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1_1__0_in_rule__TupleTypeCS__Group_1_1__1__Impl17018);
             	    rule__TupleTypeCS__Group_1_1_1__0();
 
             	    state._fsp--;
@@ -25286,7 +25275,7 @@
             	    break;
 
             	default :
-            	    break loop81;
+            	    break loop80;
                 }
             } while (true);
 
@@ -25324,12 +25313,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8203:1: ( rule__TupleTypeCS__Group_1_1_1__0__Impl rule__TupleTypeCS__Group_1_1_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8204:2: rule__TupleTypeCS__Group_1_1_1__0__Impl rule__TupleTypeCS__Group_1_1_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1_1__0__Impl_in_rule__TupleTypeCS__Group_1_1_1__017054);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1_1__0__Impl_in_rule__TupleTypeCS__Group_1_1_1__017053);
             rule__TupleTypeCS__Group_1_1_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1_1__1_in_rule__TupleTypeCS__Group_1_1_1__017057);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1_1__1_in_rule__TupleTypeCS__Group_1_1_1__017056);
             rule__TupleTypeCS__Group_1_1_1__1();
 
             state._fsp--;
@@ -25368,7 +25357,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); 
             }
-            match(input,64,FollowSets000.FOLLOW_64_in_rule__TupleTypeCS__Group_1_1_1__0__Impl17085); if (state.failed) return ;
+            match(input,64,FollowSets000.FOLLOW_64_in_rule__TupleTypeCS__Group_1_1_1__0__Impl17084); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); 
             }
@@ -25403,7 +25392,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8234:1: ( rule__TupleTypeCS__Group_1_1_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8235:2: rule__TupleTypeCS__Group_1_1_1__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1_1__1__Impl_in_rule__TupleTypeCS__Group_1_1_1__117116);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__Group_1_1_1__1__Impl_in_rule__TupleTypeCS__Group_1_1_1__117115);
             rule__TupleTypeCS__Group_1_1_1__1__Impl();
 
             state._fsp--;
@@ -25445,7 +25434,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8248:1: ( rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8248:2: rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1_in_rule__TupleTypeCS__Group_1_1_1__1__Impl17143);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1_in_rule__TupleTypeCS__Group_1_1_1__1__Impl17142);
             rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1();
 
             state._fsp--;
@@ -25487,12 +25476,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8266:1: ( rule__TuplePartCS__Group__0__Impl rule__TuplePartCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8267:2: rule__TuplePartCS__Group__0__Impl rule__TuplePartCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TuplePartCS__Group__0__Impl_in_rule__TuplePartCS__Group__017177);
+            pushFollow(FollowSets000.FOLLOW_rule__TuplePartCS__Group__0__Impl_in_rule__TuplePartCS__Group__017176);
             rule__TuplePartCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TuplePartCS__Group__1_in_rule__TuplePartCS__Group__017180);
+            pushFollow(FollowSets000.FOLLOW_rule__TuplePartCS__Group__1_in_rule__TuplePartCS__Group__017179);
             rule__TuplePartCS__Group__1();
 
             state._fsp--;
@@ -25534,7 +25523,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8281:1: ( rule__TuplePartCS__NameAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8281:2: rule__TuplePartCS__NameAssignment_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TuplePartCS__NameAssignment_0_in_rule__TuplePartCS__Group__0__Impl17207);
+            pushFollow(FollowSets000.FOLLOW_rule__TuplePartCS__NameAssignment_0_in_rule__TuplePartCS__Group__0__Impl17206);
             rule__TuplePartCS__NameAssignment_0();
 
             state._fsp--;
@@ -25576,12 +25565,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8295:1: ( rule__TuplePartCS__Group__1__Impl rule__TuplePartCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8296:2: rule__TuplePartCS__Group__1__Impl rule__TuplePartCS__Group__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TuplePartCS__Group__1__Impl_in_rule__TuplePartCS__Group__117237);
+            pushFollow(FollowSets000.FOLLOW_rule__TuplePartCS__Group__1__Impl_in_rule__TuplePartCS__Group__117236);
             rule__TuplePartCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TuplePartCS__Group__2_in_rule__TuplePartCS__Group__117240);
+            pushFollow(FollowSets000.FOLLOW_rule__TuplePartCS__Group__2_in_rule__TuplePartCS__Group__117239);
             rule__TuplePartCS__Group__2();
 
             state._fsp--;
@@ -25620,7 +25609,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); 
             }
-            match(input,60,FollowSets000.FOLLOW_60_in_rule__TuplePartCS__Group__1__Impl17268); if (state.failed) return ;
+            match(input,60,FollowSets000.FOLLOW_60_in_rule__TuplePartCS__Group__1__Impl17267); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); 
             }
@@ -25655,7 +25644,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8326:1: ( rule__TuplePartCS__Group__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8327:2: rule__TuplePartCS__Group__2__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TuplePartCS__Group__2__Impl_in_rule__TuplePartCS__Group__217299);
+            pushFollow(FollowSets000.FOLLOW_rule__TuplePartCS__Group__2__Impl_in_rule__TuplePartCS__Group__217298);
             rule__TuplePartCS__Group__2__Impl();
 
             state._fsp--;
@@ -25697,7 +25686,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8340:1: ( rule__TuplePartCS__OwnedTypeAssignment_2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8340:2: rule__TuplePartCS__OwnedTypeAssignment_2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TuplePartCS__OwnedTypeAssignment_2_in_rule__TuplePartCS__Group__2__Impl17326);
+            pushFollow(FollowSets000.FOLLOW_rule__TuplePartCS__OwnedTypeAssignment_2_in_rule__TuplePartCS__Group__2__Impl17325);
             rule__TuplePartCS__OwnedTypeAssignment_2();
 
             state._fsp--;
@@ -25739,12 +25728,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8360:1: ( rule__CollectionLiteralExpCS__Group__0__Impl rule__CollectionLiteralExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8361:2: rule__CollectionLiteralExpCS__Group__0__Impl rule__CollectionLiteralExpCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group__0__Impl_in_rule__CollectionLiteralExpCS__Group__017362);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group__0__Impl_in_rule__CollectionLiteralExpCS__Group__017361);
             rule__CollectionLiteralExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group__1_in_rule__CollectionLiteralExpCS__Group__017365);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group__1_in_rule__CollectionLiteralExpCS__Group__017364);
             rule__CollectionLiteralExpCS__Group__1();
 
             state._fsp--;
@@ -25786,7 +25775,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8375:1: ( rule__CollectionLiteralExpCS__OwnedTypeAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8375:2: rule__CollectionLiteralExpCS__OwnedTypeAssignment_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__OwnedTypeAssignment_0_in_rule__CollectionLiteralExpCS__Group__0__Impl17392);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__OwnedTypeAssignment_0_in_rule__CollectionLiteralExpCS__Group__0__Impl17391);
             rule__CollectionLiteralExpCS__OwnedTypeAssignment_0();
 
             state._fsp--;
@@ -25828,12 +25817,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8389:1: ( rule__CollectionLiteralExpCS__Group__1__Impl rule__CollectionLiteralExpCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8390:2: rule__CollectionLiteralExpCS__Group__1__Impl rule__CollectionLiteralExpCS__Group__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group__1__Impl_in_rule__CollectionLiteralExpCS__Group__117422);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group__1__Impl_in_rule__CollectionLiteralExpCS__Group__117421);
             rule__CollectionLiteralExpCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group__2_in_rule__CollectionLiteralExpCS__Group__117425);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group__2_in_rule__CollectionLiteralExpCS__Group__117424);
             rule__CollectionLiteralExpCS__Group__2();
 
             state._fsp--;
@@ -25872,7 +25861,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); 
             }
-            match(input,73,FollowSets000.FOLLOW_73_in_rule__CollectionLiteralExpCS__Group__1__Impl17453); if (state.failed) return ;
+            match(input,73,FollowSets000.FOLLOW_73_in_rule__CollectionLiteralExpCS__Group__1__Impl17452); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); 
             }
@@ -25907,12 +25896,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8420:1: ( rule__CollectionLiteralExpCS__Group__2__Impl rule__CollectionLiteralExpCS__Group__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8421:2: rule__CollectionLiteralExpCS__Group__2__Impl rule__CollectionLiteralExpCS__Group__3
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group__2__Impl_in_rule__CollectionLiteralExpCS__Group__217484);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group__2__Impl_in_rule__CollectionLiteralExpCS__Group__217483);
             rule__CollectionLiteralExpCS__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group__3_in_rule__CollectionLiteralExpCS__Group__217487);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group__3_in_rule__CollectionLiteralExpCS__Group__217486);
             rule__CollectionLiteralExpCS__Group__3();
 
             state._fsp--;
@@ -25952,17 +25941,17 @@
                before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8435:1: ( rule__CollectionLiteralExpCS__Group_2__0 )?
-            int alt82=2;
-            int LA82_0 = input.LA(1);
+            int alt81=2;
+            int LA81_0 = input.LA(1);
 
-            if ( ((LA82_0>=RULE_INT && LA82_0<=RULE_ESCAPED_ID)||(LA82_0>=19 && LA82_0<=34)||(LA82_0>=51 && LA82_0<=56)||(LA82_0>=60 && LA82_0<=61)||(LA82_0>=77 && LA82_0<=79)||LA82_0==83||(LA82_0>=88 && LA82_0<=89)||(LA82_0>=95 && LA82_0<=96)) ) {
-                alt82=1;
+            if ( ((LA81_0>=RULE_INT && LA81_0<=RULE_ESCAPED_ID)||(LA81_0>=19 && LA81_0<=34)||(LA81_0>=51 && LA81_0<=56)||(LA81_0>=60 && LA81_0<=61)||(LA81_0>=77 && LA81_0<=79)||LA81_0==83||(LA81_0>=88 && LA81_0<=89)||(LA81_0>=95 && LA81_0<=96)) ) {
+                alt81=1;
             }
-            switch (alt82) {
+            switch (alt81) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8435:2: rule__CollectionLiteralExpCS__Group_2__0
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2__0_in_rule__CollectionLiteralExpCS__Group__2__Impl17514);
+                    pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2__0_in_rule__CollectionLiteralExpCS__Group__2__Impl17513);
                     rule__CollectionLiteralExpCS__Group_2__0();
 
                     state._fsp--;
@@ -26007,7 +25996,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8449:1: ( rule__CollectionLiteralExpCS__Group__3__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8450:2: rule__CollectionLiteralExpCS__Group__3__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group__3__Impl_in_rule__CollectionLiteralExpCS__Group__317545);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group__3__Impl_in_rule__CollectionLiteralExpCS__Group__317544);
             rule__CollectionLiteralExpCS__Group__3__Impl();
 
             state._fsp--;
@@ -26046,7 +26035,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); 
             }
-            match(input,74,FollowSets000.FOLLOW_74_in_rule__CollectionLiteralExpCS__Group__3__Impl17573); if (state.failed) return ;
+            match(input,74,FollowSets000.FOLLOW_74_in_rule__CollectionLiteralExpCS__Group__3__Impl17572); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); 
             }
@@ -26081,12 +26070,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8487:1: ( rule__CollectionLiteralExpCS__Group_2__0__Impl rule__CollectionLiteralExpCS__Group_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8488:2: rule__CollectionLiteralExpCS__Group_2__0__Impl rule__CollectionLiteralExpCS__Group_2__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2__0__Impl_in_rule__CollectionLiteralExpCS__Group_2__017612);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2__0__Impl_in_rule__CollectionLiteralExpCS__Group_2__017611);
             rule__CollectionLiteralExpCS__Group_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2__1_in_rule__CollectionLiteralExpCS__Group_2__017615);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2__1_in_rule__CollectionLiteralExpCS__Group_2__017614);
             rule__CollectionLiteralExpCS__Group_2__1();
 
             state._fsp--;
@@ -26128,7 +26117,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8502:1: ( rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8502:2: rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0_in_rule__CollectionLiteralExpCS__Group_2__0__Impl17642);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0_in_rule__CollectionLiteralExpCS__Group_2__0__Impl17641);
             rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0();
 
             state._fsp--;
@@ -26170,7 +26159,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8516:1: ( rule__CollectionLiteralExpCS__Group_2__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8517:2: rule__CollectionLiteralExpCS__Group_2__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2__1__Impl_in_rule__CollectionLiteralExpCS__Group_2__117672);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2__1__Impl_in_rule__CollectionLiteralExpCS__Group_2__117671);
             rule__CollectionLiteralExpCS__Group_2__1__Impl();
 
             state._fsp--;
@@ -26210,21 +26199,21 @@
                before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8530:1: ( rule__CollectionLiteralExpCS__Group_2_1__0 )*
-            loop83:
+            loop82:
             do {
-                int alt83=2;
-                int LA83_0 = input.LA(1);
+                int alt82=2;
+                int LA82_0 = input.LA(1);
 
-                if ( (LA83_0==64) ) {
-                    alt83=1;
+                if ( (LA82_0==64) ) {
+                    alt82=1;
                 }
 
 
-                switch (alt83) {
+                switch (alt82) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8530:2: rule__CollectionLiteralExpCS__Group_2_1__0
             	    {
-            	    pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__0_in_rule__CollectionLiteralExpCS__Group_2__1__Impl17699);
+            	    pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__0_in_rule__CollectionLiteralExpCS__Group_2__1__Impl17698);
             	    rule__CollectionLiteralExpCS__Group_2_1__0();
 
             	    state._fsp--;
@@ -26234,7 +26223,7 @@
             	    break;
 
             	default :
-            	    break loop83;
+            	    break loop82;
                 }
             } while (true);
 
@@ -26272,12 +26261,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8548:1: ( rule__CollectionLiteralExpCS__Group_2_1__0__Impl rule__CollectionLiteralExpCS__Group_2_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8549:2: rule__CollectionLiteralExpCS__Group_2_1__0__Impl rule__CollectionLiteralExpCS__Group_2_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__0__Impl_in_rule__CollectionLiteralExpCS__Group_2_1__017734);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__0__Impl_in_rule__CollectionLiteralExpCS__Group_2_1__017733);
             rule__CollectionLiteralExpCS__Group_2_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__1_in_rule__CollectionLiteralExpCS__Group_2_1__017737);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__1_in_rule__CollectionLiteralExpCS__Group_2_1__017736);
             rule__CollectionLiteralExpCS__Group_2_1__1();
 
             state._fsp--;
@@ -26316,7 +26305,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); 
             }
-            match(input,64,FollowSets000.FOLLOW_64_in_rule__CollectionLiteralExpCS__Group_2_1__0__Impl17765); if (state.failed) return ;
+            match(input,64,FollowSets000.FOLLOW_64_in_rule__CollectionLiteralExpCS__Group_2_1__0__Impl17764); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); 
             }
@@ -26351,7 +26340,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8579:1: ( rule__CollectionLiteralExpCS__Group_2_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8580:2: rule__CollectionLiteralExpCS__Group_2_1__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__1__Impl_in_rule__CollectionLiteralExpCS__Group_2_1__117796);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__1__Impl_in_rule__CollectionLiteralExpCS__Group_2_1__117795);
             rule__CollectionLiteralExpCS__Group_2_1__1__Impl();
 
             state._fsp--;
@@ -26393,7 +26382,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8593:1: ( rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8593:2: rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1_in_rule__CollectionLiteralExpCS__Group_2_1__1__Impl17823);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1_in_rule__CollectionLiteralExpCS__Group_2_1__1__Impl17822);
             rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1();
 
             state._fsp--;
@@ -26435,12 +26424,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8611:1: ( rule__CollectionLiteralPartCS__Group_0__0__Impl rule__CollectionLiteralPartCS__Group_0__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8612:2: rule__CollectionLiteralPartCS__Group_0__0__Impl rule__CollectionLiteralPartCS__Group_0__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__Group_0__0__Impl_in_rule__CollectionLiteralPartCS__Group_0__017857);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__Group_0__0__Impl_in_rule__CollectionLiteralPartCS__Group_0__017856);
             rule__CollectionLiteralPartCS__Group_0__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__Group_0__1_in_rule__CollectionLiteralPartCS__Group_0__017860);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__Group_0__1_in_rule__CollectionLiteralPartCS__Group_0__017859);
             rule__CollectionLiteralPartCS__Group_0__1();
 
             state._fsp--;
@@ -26482,7 +26471,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8626:1: ( rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8626:2: rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0_in_rule__CollectionLiteralPartCS__Group_0__0__Impl17887);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0_in_rule__CollectionLiteralPartCS__Group_0__0__Impl17886);
             rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0();
 
             state._fsp--;
@@ -26524,7 +26513,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8640:1: ( rule__CollectionLiteralPartCS__Group_0__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8641:2: rule__CollectionLiteralPartCS__Group_0__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__Group_0__1__Impl_in_rule__CollectionLiteralPartCS__Group_0__117917);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__Group_0__1__Impl_in_rule__CollectionLiteralPartCS__Group_0__117916);
             rule__CollectionLiteralPartCS__Group_0__1__Impl();
 
             state._fsp--;
@@ -26564,17 +26553,17 @@
                before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8654:1: ( rule__CollectionLiteralPartCS__Group_0_1__0 )?
-            int alt84=2;
-            int LA84_0 = input.LA(1);
+            int alt83=2;
+            int LA83_0 = input.LA(1);
 
-            if ( (LA84_0==75) ) {
-                alt84=1;
+            if ( (LA83_0==75) ) {
+                alt83=1;
             }
-            switch (alt84) {
+            switch (alt83) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8654:2: rule__CollectionLiteralPartCS__Group_0_1__0
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__0_in_rule__CollectionLiteralPartCS__Group_0__1__Impl17944);
+                    pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__0_in_rule__CollectionLiteralPartCS__Group_0__1__Impl17943);
                     rule__CollectionLiteralPartCS__Group_0_1__0();
 
                     state._fsp--;
@@ -26619,12 +26608,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8672:1: ( rule__CollectionLiteralPartCS__Group_0_1__0__Impl rule__CollectionLiteralPartCS__Group_0_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8673:2: rule__CollectionLiteralPartCS__Group_0_1__0__Impl rule__CollectionLiteralPartCS__Group_0_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__0__Impl_in_rule__CollectionLiteralPartCS__Group_0_1__017979);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__0__Impl_in_rule__CollectionLiteralPartCS__Group_0_1__017978);
             rule__CollectionLiteralPartCS__Group_0_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__1_in_rule__CollectionLiteralPartCS__Group_0_1__017982);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__1_in_rule__CollectionLiteralPartCS__Group_0_1__017981);
             rule__CollectionLiteralPartCS__Group_0_1__1();
 
             state._fsp--;
@@ -26663,7 +26652,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); 
             }
-            match(input,75,FollowSets000.FOLLOW_75_in_rule__CollectionLiteralPartCS__Group_0_1__0__Impl18010); if (state.failed) return ;
+            match(input,75,FollowSets000.FOLLOW_75_in_rule__CollectionLiteralPartCS__Group_0_1__0__Impl18009); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); 
             }
@@ -26698,7 +26687,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8703:1: ( rule__CollectionLiteralPartCS__Group_0_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8704:2: rule__CollectionLiteralPartCS__Group_0_1__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__1__Impl_in_rule__CollectionLiteralPartCS__Group_0_1__118041);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__1__Impl_in_rule__CollectionLiteralPartCS__Group_0_1__118040);
             rule__CollectionLiteralPartCS__Group_0_1__1__Impl();
 
             state._fsp--;
@@ -26740,7 +26729,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8717:1: ( rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8717:2: rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1_in_rule__CollectionLiteralPartCS__Group_0_1__1__Impl18068);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1_in_rule__CollectionLiteralPartCS__Group_0_1__1__Impl18067);
             rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1();
 
             state._fsp--;
@@ -26782,12 +26771,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8735:1: ( rule__CollectionPatternCS__Group__0__Impl rule__CollectionPatternCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8736:2: rule__CollectionPatternCS__Group__0__Impl rule__CollectionPatternCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group__0__Impl_in_rule__CollectionPatternCS__Group__018102);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group__0__Impl_in_rule__CollectionPatternCS__Group__018101);
             rule__CollectionPatternCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group__1_in_rule__CollectionPatternCS__Group__018105);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group__1_in_rule__CollectionPatternCS__Group__018104);
             rule__CollectionPatternCS__Group__1();
 
             state._fsp--;
@@ -26829,7 +26818,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8750:1: ( rule__CollectionPatternCS__OwnedTypeAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8750:2: rule__CollectionPatternCS__OwnedTypeAssignment_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__OwnedTypeAssignment_0_in_rule__CollectionPatternCS__Group__0__Impl18132);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__OwnedTypeAssignment_0_in_rule__CollectionPatternCS__Group__0__Impl18131);
             rule__CollectionPatternCS__OwnedTypeAssignment_0();
 
             state._fsp--;
@@ -26871,12 +26860,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8764:1: ( rule__CollectionPatternCS__Group__1__Impl rule__CollectionPatternCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8765:2: rule__CollectionPatternCS__Group__1__Impl rule__CollectionPatternCS__Group__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group__1__Impl_in_rule__CollectionPatternCS__Group__118162);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group__1__Impl_in_rule__CollectionPatternCS__Group__118161);
             rule__CollectionPatternCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group__2_in_rule__CollectionPatternCS__Group__118165);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group__2_in_rule__CollectionPatternCS__Group__118164);
             rule__CollectionPatternCS__Group__2();
 
             state._fsp--;
@@ -26915,7 +26904,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); 
             }
-            match(input,73,FollowSets000.FOLLOW_73_in_rule__CollectionPatternCS__Group__1__Impl18193); if (state.failed) return ;
+            match(input,73,FollowSets000.FOLLOW_73_in_rule__CollectionPatternCS__Group__1__Impl18192); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); 
             }
@@ -26950,12 +26939,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8795:1: ( rule__CollectionPatternCS__Group__2__Impl rule__CollectionPatternCS__Group__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8796:2: rule__CollectionPatternCS__Group__2__Impl rule__CollectionPatternCS__Group__3
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group__2__Impl_in_rule__CollectionPatternCS__Group__218224);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group__2__Impl_in_rule__CollectionPatternCS__Group__218223);
             rule__CollectionPatternCS__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group__3_in_rule__CollectionPatternCS__Group__218227);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group__3_in_rule__CollectionPatternCS__Group__218226);
             rule__CollectionPatternCS__Group__3();
 
             state._fsp--;
@@ -26995,17 +26984,17 @@
                before(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8810:1: ( rule__CollectionPatternCS__Group_2__0 )?
-            int alt85=2;
-            int LA85_0 = input.LA(1);
+            int alt84=2;
+            int LA84_0 = input.LA(1);
 
-            if ( ((LA85_0>=RULE_SIMPLE_ID && LA85_0<=RULE_ESCAPED_ID)||(LA85_0>=19 && LA85_0<=21)||LA85_0==60) ) {
-                alt85=1;
+            if ( ((LA84_0>=RULE_SIMPLE_ID && LA84_0<=RULE_ESCAPED_ID)||(LA84_0>=19 && LA84_0<=21)||LA84_0==60) ) {
+                alt84=1;
             }
-            switch (alt85) {
+            switch (alt84) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8810:2: rule__CollectionPatternCS__Group_2__0
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2__0_in_rule__CollectionPatternCS__Group__2__Impl18254);
+                    pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2__0_in_rule__CollectionPatternCS__Group__2__Impl18253);
                     rule__CollectionPatternCS__Group_2__0();
 
                     state._fsp--;
@@ -27050,7 +27039,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8824:1: ( rule__CollectionPatternCS__Group__3__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8825:2: rule__CollectionPatternCS__Group__3__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group__3__Impl_in_rule__CollectionPatternCS__Group__318285);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group__3__Impl_in_rule__CollectionPatternCS__Group__318284);
             rule__CollectionPatternCS__Group__3__Impl();
 
             state._fsp--;
@@ -27089,7 +27078,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); 
             }
-            match(input,74,FollowSets000.FOLLOW_74_in_rule__CollectionPatternCS__Group__3__Impl18313); if (state.failed) return ;
+            match(input,74,FollowSets000.FOLLOW_74_in_rule__CollectionPatternCS__Group__3__Impl18312); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); 
             }
@@ -27124,12 +27113,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8862:1: ( rule__CollectionPatternCS__Group_2__0__Impl rule__CollectionPatternCS__Group_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8863:2: rule__CollectionPatternCS__Group_2__0__Impl rule__CollectionPatternCS__Group_2__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2__0__Impl_in_rule__CollectionPatternCS__Group_2__018352);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2__0__Impl_in_rule__CollectionPatternCS__Group_2__018351);
             rule__CollectionPatternCS__Group_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2__1_in_rule__CollectionPatternCS__Group_2__018355);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2__1_in_rule__CollectionPatternCS__Group_2__018354);
             rule__CollectionPatternCS__Group_2__1();
 
             state._fsp--;
@@ -27171,7 +27160,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8877:1: ( rule__CollectionPatternCS__OwnedPartsAssignment_2_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8877:2: rule__CollectionPatternCS__OwnedPartsAssignment_2_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__OwnedPartsAssignment_2_0_in_rule__CollectionPatternCS__Group_2__0__Impl18382);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__OwnedPartsAssignment_2_0_in_rule__CollectionPatternCS__Group_2__0__Impl18381);
             rule__CollectionPatternCS__OwnedPartsAssignment_2_0();
 
             state._fsp--;
@@ -27213,12 +27202,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8891:1: ( rule__CollectionPatternCS__Group_2__1__Impl rule__CollectionPatternCS__Group_2__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8892:2: rule__CollectionPatternCS__Group_2__1__Impl rule__CollectionPatternCS__Group_2__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2__1__Impl_in_rule__CollectionPatternCS__Group_2__118412);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2__1__Impl_in_rule__CollectionPatternCS__Group_2__118411);
             rule__CollectionPatternCS__Group_2__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2__2_in_rule__CollectionPatternCS__Group_2__118415);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2__2_in_rule__CollectionPatternCS__Group_2__118414);
             rule__CollectionPatternCS__Group_2__2();
 
             state._fsp--;
@@ -27258,21 +27247,21 @@
                before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8906:1: ( rule__CollectionPatternCS__Group_2_1__0 )*
-            loop86:
+            loop85:
             do {
-                int alt86=2;
-                int LA86_0 = input.LA(1);
+                int alt85=2;
+                int LA85_0 = input.LA(1);
 
-                if ( (LA86_0==64) ) {
-                    alt86=1;
+                if ( (LA85_0==64) ) {
+                    alt85=1;
                 }
 
 
-                switch (alt86) {
+                switch (alt85) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8906:2: rule__CollectionPatternCS__Group_2_1__0
             	    {
-            	    pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_1__0_in_rule__CollectionPatternCS__Group_2__1__Impl18442);
+            	    pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_1__0_in_rule__CollectionPatternCS__Group_2__1__Impl18441);
             	    rule__CollectionPatternCS__Group_2_1__0();
 
             	    state._fsp--;
@@ -27282,7 +27271,7 @@
             	    break;
 
             	default :
-            	    break loop86;
+            	    break loop85;
                 }
             } while (true);
 
@@ -27320,7 +27309,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8920:1: ( rule__CollectionPatternCS__Group_2__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8921:2: rule__CollectionPatternCS__Group_2__2__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2__2__Impl_in_rule__CollectionPatternCS__Group_2__218473);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2__2__Impl_in_rule__CollectionPatternCS__Group_2__218472);
             rule__CollectionPatternCS__Group_2__2__Impl();
 
             state._fsp--;
@@ -27362,7 +27351,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8934:1: ( rule__CollectionPatternCS__Group_2_2__0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8934:2: rule__CollectionPatternCS__Group_2_2__0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_2__0_in_rule__CollectionPatternCS__Group_2__2__Impl18500);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_2__0_in_rule__CollectionPatternCS__Group_2__2__Impl18499);
             rule__CollectionPatternCS__Group_2_2__0();
 
             state._fsp--;
@@ -27404,12 +27393,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8954:1: ( rule__CollectionPatternCS__Group_2_1__0__Impl rule__CollectionPatternCS__Group_2_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8955:2: rule__CollectionPatternCS__Group_2_1__0__Impl rule__CollectionPatternCS__Group_2_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_1__0__Impl_in_rule__CollectionPatternCS__Group_2_1__018536);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_1__0__Impl_in_rule__CollectionPatternCS__Group_2_1__018535);
             rule__CollectionPatternCS__Group_2_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_1__1_in_rule__CollectionPatternCS__Group_2_1__018539);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_1__1_in_rule__CollectionPatternCS__Group_2_1__018538);
             rule__CollectionPatternCS__Group_2_1__1();
 
             state._fsp--;
@@ -27448,7 +27437,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); 
             }
-            match(input,64,FollowSets000.FOLLOW_64_in_rule__CollectionPatternCS__Group_2_1__0__Impl18567); if (state.failed) return ;
+            match(input,64,FollowSets000.FOLLOW_64_in_rule__CollectionPatternCS__Group_2_1__0__Impl18566); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); 
             }
@@ -27483,7 +27472,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8985:1: ( rule__CollectionPatternCS__Group_2_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8986:2: rule__CollectionPatternCS__Group_2_1__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_1__1__Impl_in_rule__CollectionPatternCS__Group_2_1__118598);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_1__1__Impl_in_rule__CollectionPatternCS__Group_2_1__118597);
             rule__CollectionPatternCS__Group_2_1__1__Impl();
 
             state._fsp--;
@@ -27525,7 +27514,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8999:1: ( rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:8999:2: rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1_in_rule__CollectionPatternCS__Group_2_1__1__Impl18625);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1_in_rule__CollectionPatternCS__Group_2_1__1__Impl18624);
             rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1();
 
             state._fsp--;
@@ -27567,12 +27556,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9017:1: ( rule__CollectionPatternCS__Group_2_2__0__Impl rule__CollectionPatternCS__Group_2_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9018:2: rule__CollectionPatternCS__Group_2_2__0__Impl rule__CollectionPatternCS__Group_2_2__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_2__0__Impl_in_rule__CollectionPatternCS__Group_2_2__018659);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_2__0__Impl_in_rule__CollectionPatternCS__Group_2_2__018658);
             rule__CollectionPatternCS__Group_2_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_2__1_in_rule__CollectionPatternCS__Group_2_2__018662);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_2__1_in_rule__CollectionPatternCS__Group_2_2__018661);
             rule__CollectionPatternCS__Group_2_2__1();
 
             state._fsp--;
@@ -27611,7 +27600,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); 
             }
-            match(input,76,FollowSets000.FOLLOW_76_in_rule__CollectionPatternCS__Group_2_2__0__Impl18690); if (state.failed) return ;
+            match(input,76,FollowSets000.FOLLOW_76_in_rule__CollectionPatternCS__Group_2_2__0__Impl18689); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); 
             }
@@ -27646,7 +27635,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9048:1: ( rule__CollectionPatternCS__Group_2_2__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9049:2: rule__CollectionPatternCS__Group_2_2__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_2__1__Impl_in_rule__CollectionPatternCS__Group_2_2__118721);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__Group_2_2__1__Impl_in_rule__CollectionPatternCS__Group_2_2__118720);
             rule__CollectionPatternCS__Group_2_2__1__Impl();
 
             state._fsp--;
@@ -27688,7 +27677,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9062:1: ( rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9062:2: rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1_in_rule__CollectionPatternCS__Group_2_2__1__Impl18748);
+            pushFollow(FollowSets000.FOLLOW_rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1_in_rule__CollectionPatternCS__Group_2_2__1__Impl18747);
             rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1();
 
             state._fsp--;
@@ -27730,12 +27719,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9080:1: ( rule__ConstructorPartCS__Group__0__Impl rule__ConstructorPartCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9081:2: rule__ConstructorPartCS__Group__0__Impl rule__ConstructorPartCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__ConstructorPartCS__Group__0__Impl_in_rule__ConstructorPartCS__Group__018782);
+            pushFollow(FollowSets000.FOLLOW_rule__ConstructorPartCS__Group__0__Impl_in_rule__ConstructorPartCS__Group__018781);
             rule__ConstructorPartCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__ConstructorPartCS__Group__1_in_rule__ConstructorPartCS__Group__018785);
+            pushFollow(FollowSets000.FOLLOW_rule__ConstructorPartCS__Group__1_in_rule__ConstructorPartCS__Group__018784);
             rule__ConstructorPartCS__Group__1();
 
             state._fsp--;
@@ -27777,7 +27766,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9095:1: ( rule__ConstructorPartCS__ReferredPropertyAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9095:2: rule__ConstructorPartCS__ReferredPropertyAssignment_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__ConstructorPartCS__ReferredPropertyAssignment_0_in_rule__ConstructorPartCS__Group__0__Impl18812);
+            pushFollow(FollowSets000.FOLLOW_rule__ConstructorPartCS__ReferredPropertyAssignment_0_in_rule__ConstructorPartCS__Group__0__Impl18811);
             rule__ConstructorPartCS__ReferredPropertyAssignment_0();
 
             state._fsp--;
@@ -27819,12 +27808,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9109:1: ( rule__ConstructorPartCS__Group__1__Impl rule__ConstructorPartCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9110:2: rule__ConstructorPartCS__Group__1__Impl rule__ConstructorPartCS__Group__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__ConstructorPartCS__Group__1__Impl_in_rule__ConstructorPartCS__Group__118842);
+            pushFollow(FollowSets000.FOLLOW_rule__ConstructorPartCS__Group__1__Impl_in_rule__ConstructorPartCS__Group__118841);
             rule__ConstructorPartCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__ConstructorPartCS__Group__2_in_rule__ConstructorPartCS__Group__118845);
+            pushFollow(FollowSets000.FOLLOW_rule__ConstructorPartCS__Group__2_in_rule__ConstructorPartCS__Group__118844);
             rule__ConstructorPartCS__Group__2();
 
             state._fsp--;
@@ -27863,7 +27852,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); 
             }
-            match(input,41,FollowSets000.FOLLOW_41_in_rule__ConstructorPartCS__Group__1__Impl18873); if (state.failed) return ;
+            match(input,41,FollowSets000.FOLLOW_41_in_rule__ConstructorPartCS__Group__1__Impl18872); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); 
             }
@@ -27898,7 +27887,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9140:1: ( rule__ConstructorPartCS__Group__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9141:2: rule__ConstructorPartCS__Group__2__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__ConstructorPartCS__Group__2__Impl_in_rule__ConstructorPartCS__Group__218904);
+            pushFollow(FollowSets000.FOLLOW_rule__ConstructorPartCS__Group__2__Impl_in_rule__ConstructorPartCS__Group__218903);
             rule__ConstructorPartCS__Group__2__Impl();
 
             state._fsp--;
@@ -27940,7 +27929,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9154:1: ( rule__ConstructorPartCS__OwnedInitExpressionAssignment_2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9154:2: rule__ConstructorPartCS__OwnedInitExpressionAssignment_2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__ConstructorPartCS__OwnedInitExpressionAssignment_2_in_rule__ConstructorPartCS__Group__2__Impl18931);
+            pushFollow(FollowSets000.FOLLOW_rule__ConstructorPartCS__OwnedInitExpressionAssignment_2_in_rule__ConstructorPartCS__Group__2__Impl18930);
             rule__ConstructorPartCS__OwnedInitExpressionAssignment_2();
 
             state._fsp--;
@@ -27982,12 +27971,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9174:1: ( rule__PatternExpCS__Group__0__Impl rule__PatternExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9175:2: rule__PatternExpCS__Group__0__Impl rule__PatternExpCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PatternExpCS__Group__0__Impl_in_rule__PatternExpCS__Group__018967);
+            pushFollow(FollowSets000.FOLLOW_rule__PatternExpCS__Group__0__Impl_in_rule__PatternExpCS__Group__018966);
             rule__PatternExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__PatternExpCS__Group__1_in_rule__PatternExpCS__Group__018970);
+            pushFollow(FollowSets000.FOLLOW_rule__PatternExpCS__Group__1_in_rule__PatternExpCS__Group__018969);
             rule__PatternExpCS__Group__1();
 
             state._fsp--;
@@ -28027,17 +28016,17 @@
                before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9189:1: ( rule__PatternExpCS__PatternVariableNameAssignment_0 )?
-            int alt87=2;
-            int LA87_0 = input.LA(1);
+            int alt86=2;
+            int LA86_0 = input.LA(1);
 
-            if ( ((LA87_0>=RULE_SIMPLE_ID && LA87_0<=RULE_ESCAPED_ID)||(LA87_0>=19 && LA87_0<=21)) ) {
-                alt87=1;
+            if ( ((LA86_0>=RULE_SIMPLE_ID && LA86_0<=RULE_ESCAPED_ID)||(LA86_0>=19 && LA86_0<=21)) ) {
+                alt86=1;
             }
-            switch (alt87) {
+            switch (alt86) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9189:2: rule__PatternExpCS__PatternVariableNameAssignment_0
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__PatternExpCS__PatternVariableNameAssignment_0_in_rule__PatternExpCS__Group__0__Impl18997);
+                    pushFollow(FollowSets000.FOLLOW_rule__PatternExpCS__PatternVariableNameAssignment_0_in_rule__PatternExpCS__Group__0__Impl18996);
                     rule__PatternExpCS__PatternVariableNameAssignment_0();
 
                     state._fsp--;
@@ -28082,12 +28071,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9203:1: ( rule__PatternExpCS__Group__1__Impl rule__PatternExpCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9204:2: rule__PatternExpCS__Group__1__Impl rule__PatternExpCS__Group__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PatternExpCS__Group__1__Impl_in_rule__PatternExpCS__Group__119028);
+            pushFollow(FollowSets000.FOLLOW_rule__PatternExpCS__Group__1__Impl_in_rule__PatternExpCS__Group__119027);
             rule__PatternExpCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__PatternExpCS__Group__2_in_rule__PatternExpCS__Group__119031);
+            pushFollow(FollowSets000.FOLLOW_rule__PatternExpCS__Group__2_in_rule__PatternExpCS__Group__119030);
             rule__PatternExpCS__Group__2();
 
             state._fsp--;
@@ -28126,7 +28115,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); 
             }
-            match(input,60,FollowSets000.FOLLOW_60_in_rule__PatternExpCS__Group__1__Impl19059); if (state.failed) return ;
+            match(input,60,FollowSets000.FOLLOW_60_in_rule__PatternExpCS__Group__1__Impl19058); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); 
             }
@@ -28161,7 +28150,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9234:1: ( rule__PatternExpCS__Group__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9235:2: rule__PatternExpCS__Group__2__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PatternExpCS__Group__2__Impl_in_rule__PatternExpCS__Group__219090);
+            pushFollow(FollowSets000.FOLLOW_rule__PatternExpCS__Group__2__Impl_in_rule__PatternExpCS__Group__219089);
             rule__PatternExpCS__Group__2__Impl();
 
             state._fsp--;
@@ -28203,7 +28192,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9248:1: ( rule__PatternExpCS__OwnedPatternTypeAssignment_2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9248:2: rule__PatternExpCS__OwnedPatternTypeAssignment_2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PatternExpCS__OwnedPatternTypeAssignment_2_in_rule__PatternExpCS__Group__2__Impl19117);
+            pushFollow(FollowSets000.FOLLOW_rule__PatternExpCS__OwnedPatternTypeAssignment_2_in_rule__PatternExpCS__Group__2__Impl19116);
             rule__PatternExpCS__OwnedPatternTypeAssignment_2();
 
             state._fsp--;
@@ -28245,12 +28234,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9268:1: ( rule__LambdaLiteralExpCS__Group__0__Impl rule__LambdaLiteralExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9269:2: rule__LambdaLiteralExpCS__Group__0__Impl rule__LambdaLiteralExpCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__Group__0__Impl_in_rule__LambdaLiteralExpCS__Group__019153);
+            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__Group__0__Impl_in_rule__LambdaLiteralExpCS__Group__019152);
             rule__LambdaLiteralExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__Group__1_in_rule__LambdaLiteralExpCS__Group__019156);
+            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__Group__1_in_rule__LambdaLiteralExpCS__Group__019155);
             rule__LambdaLiteralExpCS__Group__1();
 
             state._fsp--;
@@ -28289,7 +28278,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); 
             }
-            match(input,77,FollowSets000.FOLLOW_77_in_rule__LambdaLiteralExpCS__Group__0__Impl19184); if (state.failed) return ;
+            match(input,77,FollowSets000.FOLLOW_77_in_rule__LambdaLiteralExpCS__Group__0__Impl19183); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); 
             }
@@ -28324,12 +28313,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9299:1: ( rule__LambdaLiteralExpCS__Group__1__Impl rule__LambdaLiteralExpCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9300:2: rule__LambdaLiteralExpCS__Group__1__Impl rule__LambdaLiteralExpCS__Group__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__Group__1__Impl_in_rule__LambdaLiteralExpCS__Group__119215);
+            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__Group__1__Impl_in_rule__LambdaLiteralExpCS__Group__119214);
             rule__LambdaLiteralExpCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__Group__2_in_rule__LambdaLiteralExpCS__Group__119218);
+            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__Group__2_in_rule__LambdaLiteralExpCS__Group__119217);
             rule__LambdaLiteralExpCS__Group__2();
 
             state._fsp--;
@@ -28368,7 +28357,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); 
             }
-            match(input,73,FollowSets000.FOLLOW_73_in_rule__LambdaLiteralExpCS__Group__1__Impl19246); if (state.failed) return ;
+            match(input,73,FollowSets000.FOLLOW_73_in_rule__LambdaLiteralExpCS__Group__1__Impl19245); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); 
             }
@@ -28403,12 +28392,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9330:1: ( rule__LambdaLiteralExpCS__Group__2__Impl rule__LambdaLiteralExpCS__Group__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9331:2: rule__LambdaLiteralExpCS__Group__2__Impl rule__LambdaLiteralExpCS__Group__3
             {
-            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__Group__2__Impl_in_rule__LambdaLiteralExpCS__Group__219277);
+            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__Group__2__Impl_in_rule__LambdaLiteralExpCS__Group__219276);
             rule__LambdaLiteralExpCS__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__Group__3_in_rule__LambdaLiteralExpCS__Group__219280);
+            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__Group__3_in_rule__LambdaLiteralExpCS__Group__219279);
             rule__LambdaLiteralExpCS__Group__3();
 
             state._fsp--;
@@ -28450,7 +28439,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9345:1: ( rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9345:2: rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2_in_rule__LambdaLiteralExpCS__Group__2__Impl19307);
+            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2_in_rule__LambdaLiteralExpCS__Group__2__Impl19306);
             rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2();
 
             state._fsp--;
@@ -28492,7 +28481,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9359:1: ( rule__LambdaLiteralExpCS__Group__3__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9360:2: rule__LambdaLiteralExpCS__Group__3__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__Group__3__Impl_in_rule__LambdaLiteralExpCS__Group__319337);
+            pushFollow(FollowSets000.FOLLOW_rule__LambdaLiteralExpCS__Group__3__Impl_in_rule__LambdaLiteralExpCS__Group__319336);
             rule__LambdaLiteralExpCS__Group__3__Impl();
 
             state._fsp--;
@@ -28531,7 +28520,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); 
             }
-            match(input,74,FollowSets000.FOLLOW_74_in_rule__LambdaLiteralExpCS__Group__3__Impl19365); if (state.failed) return ;
+            match(input,74,FollowSets000.FOLLOW_74_in_rule__LambdaLiteralExpCS__Group__3__Impl19364); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); 
             }
@@ -28566,12 +28555,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9397:1: ( rule__TupleLiteralExpCS__Group__0__Impl rule__TupleLiteralExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9398:2: rule__TupleLiteralExpCS__Group__0__Impl rule__TupleLiteralExpCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__0__Impl_in_rule__TupleLiteralExpCS__Group__019404);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__0__Impl_in_rule__TupleLiteralExpCS__Group__019403);
             rule__TupleLiteralExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__1_in_rule__TupleLiteralExpCS__Group__019407);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__1_in_rule__TupleLiteralExpCS__Group__019406);
             rule__TupleLiteralExpCS__Group__1();
 
             state._fsp--;
@@ -28610,7 +28599,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); 
             }
-            match(input,51,FollowSets000.FOLLOW_51_in_rule__TupleLiteralExpCS__Group__0__Impl19435); if (state.failed) return ;
+            match(input,51,FollowSets000.FOLLOW_51_in_rule__TupleLiteralExpCS__Group__0__Impl19434); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); 
             }
@@ -28645,12 +28634,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9428:1: ( rule__TupleLiteralExpCS__Group__1__Impl rule__TupleLiteralExpCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9429:2: rule__TupleLiteralExpCS__Group__1__Impl rule__TupleLiteralExpCS__Group__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__1__Impl_in_rule__TupleLiteralExpCS__Group__119466);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__1__Impl_in_rule__TupleLiteralExpCS__Group__119465);
             rule__TupleLiteralExpCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__2_in_rule__TupleLiteralExpCS__Group__119469);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__2_in_rule__TupleLiteralExpCS__Group__119468);
             rule__TupleLiteralExpCS__Group__2();
 
             state._fsp--;
@@ -28689,7 +28678,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); 
             }
-            match(input,73,FollowSets000.FOLLOW_73_in_rule__TupleLiteralExpCS__Group__1__Impl19497); if (state.failed) return ;
+            match(input,73,FollowSets000.FOLLOW_73_in_rule__TupleLiteralExpCS__Group__1__Impl19496); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); 
             }
@@ -28724,12 +28713,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9459:1: ( rule__TupleLiteralExpCS__Group__2__Impl rule__TupleLiteralExpCS__Group__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9460:2: rule__TupleLiteralExpCS__Group__2__Impl rule__TupleLiteralExpCS__Group__3
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__2__Impl_in_rule__TupleLiteralExpCS__Group__219528);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__2__Impl_in_rule__TupleLiteralExpCS__Group__219527);
             rule__TupleLiteralExpCS__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__3_in_rule__TupleLiteralExpCS__Group__219531);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__3_in_rule__TupleLiteralExpCS__Group__219530);
             rule__TupleLiteralExpCS__Group__3();
 
             state._fsp--;
@@ -28771,7 +28760,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9474:1: ( rule__TupleLiteralExpCS__OwnedPartsAssignment_2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9474:2: rule__TupleLiteralExpCS__OwnedPartsAssignment_2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__OwnedPartsAssignment_2_in_rule__TupleLiteralExpCS__Group__2__Impl19558);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__OwnedPartsAssignment_2_in_rule__TupleLiteralExpCS__Group__2__Impl19557);
             rule__TupleLiteralExpCS__OwnedPartsAssignment_2();
 
             state._fsp--;
@@ -28813,12 +28802,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9488:1: ( rule__TupleLiteralExpCS__Group__3__Impl rule__TupleLiteralExpCS__Group__4 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9489:2: rule__TupleLiteralExpCS__Group__3__Impl rule__TupleLiteralExpCS__Group__4
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__3__Impl_in_rule__TupleLiteralExpCS__Group__319588);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__3__Impl_in_rule__TupleLiteralExpCS__Group__319587);
             rule__TupleLiteralExpCS__Group__3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__4_in_rule__TupleLiteralExpCS__Group__319591);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__4_in_rule__TupleLiteralExpCS__Group__319590);
             rule__TupleLiteralExpCS__Group__4();
 
             state._fsp--;
@@ -28858,21 +28847,21 @@
                before(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9503:1: ( rule__TupleLiteralExpCS__Group_3__0 )*
-            loop88:
+            loop87:
             do {
-                int alt88=2;
-                int LA88_0 = input.LA(1);
+                int alt87=2;
+                int LA87_0 = input.LA(1);
 
-                if ( (LA88_0==64) ) {
-                    alt88=1;
+                if ( (LA87_0==64) ) {
+                    alt87=1;
                 }
 
 
-                switch (alt88) {
+                switch (alt87) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9503:2: rule__TupleLiteralExpCS__Group_3__0
             	    {
-            	    pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group_3__0_in_rule__TupleLiteralExpCS__Group__3__Impl19618);
+            	    pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group_3__0_in_rule__TupleLiteralExpCS__Group__3__Impl19617);
             	    rule__TupleLiteralExpCS__Group_3__0();
 
             	    state._fsp--;
@@ -28882,7 +28871,7 @@
             	    break;
 
             	default :
-            	    break loop88;
+            	    break loop87;
                 }
             } while (true);
 
@@ -28920,7 +28909,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9517:1: ( rule__TupleLiteralExpCS__Group__4__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9518:2: rule__TupleLiteralExpCS__Group__4__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__4__Impl_in_rule__TupleLiteralExpCS__Group__419649);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group__4__Impl_in_rule__TupleLiteralExpCS__Group__419648);
             rule__TupleLiteralExpCS__Group__4__Impl();
 
             state._fsp--;
@@ -28959,7 +28948,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); 
             }
-            match(input,74,FollowSets000.FOLLOW_74_in_rule__TupleLiteralExpCS__Group__4__Impl19677); if (state.failed) return ;
+            match(input,74,FollowSets000.FOLLOW_74_in_rule__TupleLiteralExpCS__Group__4__Impl19676); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); 
             }
@@ -28994,12 +28983,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9557:1: ( rule__TupleLiteralExpCS__Group_3__0__Impl rule__TupleLiteralExpCS__Group_3__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9558:2: rule__TupleLiteralExpCS__Group_3__0__Impl rule__TupleLiteralExpCS__Group_3__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group_3__0__Impl_in_rule__TupleLiteralExpCS__Group_3__019718);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group_3__0__Impl_in_rule__TupleLiteralExpCS__Group_3__019717);
             rule__TupleLiteralExpCS__Group_3__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group_3__1_in_rule__TupleLiteralExpCS__Group_3__019721);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group_3__1_in_rule__TupleLiteralExpCS__Group_3__019720);
             rule__TupleLiteralExpCS__Group_3__1();
 
             state._fsp--;
@@ -29038,7 +29027,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); 
             }
-            match(input,64,FollowSets000.FOLLOW_64_in_rule__TupleLiteralExpCS__Group_3__0__Impl19749); if (state.failed) return ;
+            match(input,64,FollowSets000.FOLLOW_64_in_rule__TupleLiteralExpCS__Group_3__0__Impl19748); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); 
             }
@@ -29073,7 +29062,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9588:1: ( rule__TupleLiteralExpCS__Group_3__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9589:2: rule__TupleLiteralExpCS__Group_3__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group_3__1__Impl_in_rule__TupleLiteralExpCS__Group_3__119780);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__Group_3__1__Impl_in_rule__TupleLiteralExpCS__Group_3__119779);
             rule__TupleLiteralExpCS__Group_3__1__Impl();
 
             state._fsp--;
@@ -29115,7 +29104,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9602:1: ( rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9602:2: rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1_in_rule__TupleLiteralExpCS__Group_3__1__Impl19807);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1_in_rule__TupleLiteralExpCS__Group_3__1__Impl19806);
             rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1();
 
             state._fsp--;
@@ -29157,12 +29146,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9620:1: ( rule__TupleLiteralPartCS__Group__0__Impl rule__TupleLiteralPartCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9621:2: rule__TupleLiteralPartCS__Group__0__Impl rule__TupleLiteralPartCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group__0__Impl_in_rule__TupleLiteralPartCS__Group__019841);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group__0__Impl_in_rule__TupleLiteralPartCS__Group__019840);
             rule__TupleLiteralPartCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group__1_in_rule__TupleLiteralPartCS__Group__019844);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group__1_in_rule__TupleLiteralPartCS__Group__019843);
             rule__TupleLiteralPartCS__Group__1();
 
             state._fsp--;
@@ -29204,7 +29193,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9635:1: ( rule__TupleLiteralPartCS__NameAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9635:2: rule__TupleLiteralPartCS__NameAssignment_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__NameAssignment_0_in_rule__TupleLiteralPartCS__Group__0__Impl19871);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__NameAssignment_0_in_rule__TupleLiteralPartCS__Group__0__Impl19870);
             rule__TupleLiteralPartCS__NameAssignment_0();
 
             state._fsp--;
@@ -29246,12 +29235,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9649:1: ( rule__TupleLiteralPartCS__Group__1__Impl rule__TupleLiteralPartCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9650:2: rule__TupleLiteralPartCS__Group__1__Impl rule__TupleLiteralPartCS__Group__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group__1__Impl_in_rule__TupleLiteralPartCS__Group__119901);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group__1__Impl_in_rule__TupleLiteralPartCS__Group__119900);
             rule__TupleLiteralPartCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group__2_in_rule__TupleLiteralPartCS__Group__119904);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group__2_in_rule__TupleLiteralPartCS__Group__119903);
             rule__TupleLiteralPartCS__Group__2();
 
             state._fsp--;
@@ -29291,17 +29280,17 @@
                before(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9664:1: ( rule__TupleLiteralPartCS__Group_1__0 )?
-            int alt89=2;
-            int LA89_0 = input.LA(1);
+            int alt88=2;
+            int LA88_0 = input.LA(1);
 
-            if ( (LA89_0==60) ) {
-                alt89=1;
+            if ( (LA88_0==60) ) {
+                alt88=1;
             }
-            switch (alt89) {
+            switch (alt88) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9664:2: rule__TupleLiteralPartCS__Group_1__0
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group_1__0_in_rule__TupleLiteralPartCS__Group__1__Impl19931);
+                    pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group_1__0_in_rule__TupleLiteralPartCS__Group__1__Impl19930);
                     rule__TupleLiteralPartCS__Group_1__0();
 
                     state._fsp--;
@@ -29346,12 +29335,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9678:1: ( rule__TupleLiteralPartCS__Group__2__Impl rule__TupleLiteralPartCS__Group__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9679:2: rule__TupleLiteralPartCS__Group__2__Impl rule__TupleLiteralPartCS__Group__3
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group__2__Impl_in_rule__TupleLiteralPartCS__Group__219962);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group__2__Impl_in_rule__TupleLiteralPartCS__Group__219961);
             rule__TupleLiteralPartCS__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group__3_in_rule__TupleLiteralPartCS__Group__219965);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group__3_in_rule__TupleLiteralPartCS__Group__219964);
             rule__TupleLiteralPartCS__Group__3();
 
             state._fsp--;
@@ -29390,7 +29379,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); 
             }
-            match(input,41,FollowSets000.FOLLOW_41_in_rule__TupleLiteralPartCS__Group__2__Impl19993); if (state.failed) return ;
+            match(input,41,FollowSets000.FOLLOW_41_in_rule__TupleLiteralPartCS__Group__2__Impl19992); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); 
             }
@@ -29425,7 +29414,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9709:1: ( rule__TupleLiteralPartCS__Group__3__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9710:2: rule__TupleLiteralPartCS__Group__3__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group__3__Impl_in_rule__TupleLiteralPartCS__Group__320024);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group__3__Impl_in_rule__TupleLiteralPartCS__Group__320023);
             rule__TupleLiteralPartCS__Group__3__Impl();
 
             state._fsp--;
@@ -29467,7 +29456,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9723:1: ( rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9723:2: rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3_in_rule__TupleLiteralPartCS__Group__3__Impl20051);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3_in_rule__TupleLiteralPartCS__Group__3__Impl20050);
             rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3();
 
             state._fsp--;
@@ -29509,12 +29498,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9745:1: ( rule__TupleLiteralPartCS__Group_1__0__Impl rule__TupleLiteralPartCS__Group_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9746:2: rule__TupleLiteralPartCS__Group_1__0__Impl rule__TupleLiteralPartCS__Group_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group_1__0__Impl_in_rule__TupleLiteralPartCS__Group_1__020089);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group_1__0__Impl_in_rule__TupleLiteralPartCS__Group_1__020088);
             rule__TupleLiteralPartCS__Group_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group_1__1_in_rule__TupleLiteralPartCS__Group_1__020092);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group_1__1_in_rule__TupleLiteralPartCS__Group_1__020091);
             rule__TupleLiteralPartCS__Group_1__1();
 
             state._fsp--;
@@ -29553,7 +29542,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); 
             }
-            match(input,60,FollowSets000.FOLLOW_60_in_rule__TupleLiteralPartCS__Group_1__0__Impl20120); if (state.failed) return ;
+            match(input,60,FollowSets000.FOLLOW_60_in_rule__TupleLiteralPartCS__Group_1__0__Impl20119); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); 
             }
@@ -29588,7 +29577,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9776:1: ( rule__TupleLiteralPartCS__Group_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9777:2: rule__TupleLiteralPartCS__Group_1__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group_1__1__Impl_in_rule__TupleLiteralPartCS__Group_1__120151);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__Group_1__1__Impl_in_rule__TupleLiteralPartCS__Group_1__120150);
             rule__TupleLiteralPartCS__Group_1__1__Impl();
 
             state._fsp--;
@@ -29630,7 +29619,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9790:1: ( rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9790:2: rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1_in_rule__TupleLiteralPartCS__Group_1__1__Impl20178);
+            pushFollow(FollowSets000.FOLLOW_rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1_in_rule__TupleLiteralPartCS__Group_1__1__Impl20177);
             rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1();
 
             state._fsp--;
@@ -29672,12 +29661,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9808:1: ( rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl rule__UnlimitedNaturalLiteralExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9809:2: rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl rule__UnlimitedNaturalLiteralExpCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl_in_rule__UnlimitedNaturalLiteralExpCS__Group__020212);
+            pushFollow(FollowSets000.FOLLOW_rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl_in_rule__UnlimitedNaturalLiteralExpCS__Group__020211);
             rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__UnlimitedNaturalLiteralExpCS__Group__1_in_rule__UnlimitedNaturalLiteralExpCS__Group__020215);
+            pushFollow(FollowSets000.FOLLOW_rule__UnlimitedNaturalLiteralExpCS__Group__1_in_rule__UnlimitedNaturalLiteralExpCS__Group__020214);
             rule__UnlimitedNaturalLiteralExpCS__Group__1();
 
             state._fsp--;
@@ -29751,7 +29740,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9839:1: ( rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9840:2: rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl_in_rule__UnlimitedNaturalLiteralExpCS__Group__120273);
+            pushFollow(FollowSets000.FOLLOW_rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl_in_rule__UnlimitedNaturalLiteralExpCS__Group__120272);
             rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl();
 
             state._fsp--;
@@ -29790,7 +29779,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); 
             }
-            match(input,34,FollowSets000.FOLLOW_34_in_rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl20301); if (state.failed) return ;
+            match(input,34,FollowSets000.FOLLOW_34_in_rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl20300); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); 
             }
@@ -29825,12 +29814,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9873:1: ( rule__InvalidLiteralExpCS__Group__0__Impl rule__InvalidLiteralExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9874:2: rule__InvalidLiteralExpCS__Group__0__Impl rule__InvalidLiteralExpCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__InvalidLiteralExpCS__Group__0__Impl_in_rule__InvalidLiteralExpCS__Group__020336);
+            pushFollow(FollowSets000.FOLLOW_rule__InvalidLiteralExpCS__Group__0__Impl_in_rule__InvalidLiteralExpCS__Group__020335);
             rule__InvalidLiteralExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__InvalidLiteralExpCS__Group__1_in_rule__InvalidLiteralExpCS__Group__020339);
+            pushFollow(FollowSets000.FOLLOW_rule__InvalidLiteralExpCS__Group__1_in_rule__InvalidLiteralExpCS__Group__020338);
             rule__InvalidLiteralExpCS__Group__1();
 
             state._fsp--;
@@ -29904,7 +29893,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9904:1: ( rule__InvalidLiteralExpCS__Group__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9905:2: rule__InvalidLiteralExpCS__Group__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__InvalidLiteralExpCS__Group__1__Impl_in_rule__InvalidLiteralExpCS__Group__120397);
+            pushFollow(FollowSets000.FOLLOW_rule__InvalidLiteralExpCS__Group__1__Impl_in_rule__InvalidLiteralExpCS__Group__120396);
             rule__InvalidLiteralExpCS__Group__1__Impl();
 
             state._fsp--;
@@ -29943,7 +29932,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); 
             }
-            match(input,78,FollowSets000.FOLLOW_78_in_rule__InvalidLiteralExpCS__Group__1__Impl20425); if (state.failed) return ;
+            match(input,78,FollowSets000.FOLLOW_78_in_rule__InvalidLiteralExpCS__Group__1__Impl20424); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); 
             }
@@ -29978,12 +29967,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9938:1: ( rule__NullLiteralExpCS__Group__0__Impl rule__NullLiteralExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9939:2: rule__NullLiteralExpCS__Group__0__Impl rule__NullLiteralExpCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__NullLiteralExpCS__Group__0__Impl_in_rule__NullLiteralExpCS__Group__020460);
+            pushFollow(FollowSets000.FOLLOW_rule__NullLiteralExpCS__Group__0__Impl_in_rule__NullLiteralExpCS__Group__020459);
             rule__NullLiteralExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__NullLiteralExpCS__Group__1_in_rule__NullLiteralExpCS__Group__020463);
+            pushFollow(FollowSets000.FOLLOW_rule__NullLiteralExpCS__Group__1_in_rule__NullLiteralExpCS__Group__020462);
             rule__NullLiteralExpCS__Group__1();
 
             state._fsp--;
@@ -30057,7 +30046,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9969:1: ( rule__NullLiteralExpCS__Group__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:9970:2: rule__NullLiteralExpCS__Group__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__NullLiteralExpCS__Group__1__Impl_in_rule__NullLiteralExpCS__Group__120521);
+            pushFollow(FollowSets000.FOLLOW_rule__NullLiteralExpCS__Group__1__Impl_in_rule__NullLiteralExpCS__Group__120520);
             rule__NullLiteralExpCS__Group__1__Impl();
 
             state._fsp--;
@@ -30096,7 +30085,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); 
             }
-            match(input,79,FollowSets000.FOLLOW_79_in_rule__NullLiteralExpCS__Group__1__Impl20549); if (state.failed) return ;
+            match(input,79,FollowSets000.FOLLOW_79_in_rule__NullLiteralExpCS__Group__1__Impl20548); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); 
             }
@@ -30131,12 +30120,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10003:1: ( rule__TypeLiteralWithMultiplicityCS__Group__0__Impl rule__TypeLiteralWithMultiplicityCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10004:2: rule__TypeLiteralWithMultiplicityCS__Group__0__Impl rule__TypeLiteralWithMultiplicityCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeLiteralWithMultiplicityCS__Group__0__Impl_in_rule__TypeLiteralWithMultiplicityCS__Group__020584);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeLiteralWithMultiplicityCS__Group__0__Impl_in_rule__TypeLiteralWithMultiplicityCS__Group__020583);
             rule__TypeLiteralWithMultiplicityCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TypeLiteralWithMultiplicityCS__Group__1_in_rule__TypeLiteralWithMultiplicityCS__Group__020587);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeLiteralWithMultiplicityCS__Group__1_in_rule__TypeLiteralWithMultiplicityCS__Group__020586);
             rule__TypeLiteralWithMultiplicityCS__Group__1();
 
             state._fsp--;
@@ -30175,7 +30164,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralCS_in_rule__TypeLiteralWithMultiplicityCS__Group__0__Impl20614);
+            pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralCS_in_rule__TypeLiteralWithMultiplicityCS__Group__0__Impl20613);
             ruleTypeLiteralCS();
 
             state._fsp--;
@@ -30214,7 +30203,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10032:1: ( rule__TypeLiteralWithMultiplicityCS__Group__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10033:2: rule__TypeLiteralWithMultiplicityCS__Group__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeLiteralWithMultiplicityCS__Group__1__Impl_in_rule__TypeLiteralWithMultiplicityCS__Group__120643);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeLiteralWithMultiplicityCS__Group__1__Impl_in_rule__TypeLiteralWithMultiplicityCS__Group__120642);
             rule__TypeLiteralWithMultiplicityCS__Group__1__Impl();
 
             state._fsp--;
@@ -30254,17 +30243,17 @@
                before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10046:1: ( rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1 )?
-            int alt90=2;
-            int LA90_0 = input.LA(1);
+            int alt89=2;
+            int LA89_0 = input.LA(1);
 
-            if ( (LA90_0==80) ) {
-                alt90=1;
+            if ( (LA89_0==80) ) {
+                alt89=1;
             }
-            switch (alt90) {
+            switch (alt89) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10046:2: rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1_in_rule__TypeLiteralWithMultiplicityCS__Group__1__Impl20670);
+                    pushFollow(FollowSets000.FOLLOW_rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1_in_rule__TypeLiteralWithMultiplicityCS__Group__1__Impl20669);
                     rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1();
 
                     state._fsp--;
@@ -30309,12 +30298,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10064:1: ( rule__TypeNameExpCS__Group__0__Impl rule__TypeNameExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10065:2: rule__TypeNameExpCS__Group__0__Impl rule__TypeNameExpCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group__0__Impl_in_rule__TypeNameExpCS__Group__020705);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group__0__Impl_in_rule__TypeNameExpCS__Group__020704);
             rule__TypeNameExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group__1_in_rule__TypeNameExpCS__Group__020708);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group__1_in_rule__TypeNameExpCS__Group__020707);
             rule__TypeNameExpCS__Group__1();
 
             state._fsp--;
@@ -30356,7 +30345,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10079:1: ( rule__TypeNameExpCS__OwnedPathNameAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10079:2: rule__TypeNameExpCS__OwnedPathNameAssignment_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__OwnedPathNameAssignment_0_in_rule__TypeNameExpCS__Group__0__Impl20735);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__OwnedPathNameAssignment_0_in_rule__TypeNameExpCS__Group__0__Impl20734);
             rule__TypeNameExpCS__OwnedPathNameAssignment_0();
 
             state._fsp--;
@@ -30398,7 +30387,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10093:1: ( rule__TypeNameExpCS__Group__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10094:2: rule__TypeNameExpCS__Group__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group__1__Impl_in_rule__TypeNameExpCS__Group__120765);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group__1__Impl_in_rule__TypeNameExpCS__Group__120764);
             rule__TypeNameExpCS__Group__1__Impl();
 
             state._fsp--;
@@ -30438,17 +30427,17 @@
                before(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10107:1: ( rule__TypeNameExpCS__Group_1__0 )?
-            int alt91=2;
-            int LA91_0 = input.LA(1);
+            int alt90=2;
+            int LA90_0 = input.LA(1);
 
-            if ( (LA91_0==73) ) {
-                alt91=1;
+            if ( (LA90_0==73) ) {
+                alt90=1;
             }
-            switch (alt91) {
+            switch (alt90) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10107:2: rule__TypeNameExpCS__Group_1__0
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1__0_in_rule__TypeNameExpCS__Group__1__Impl20792);
+                    pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1__0_in_rule__TypeNameExpCS__Group__1__Impl20791);
                     rule__TypeNameExpCS__Group_1__0();
 
                     state._fsp--;
@@ -30493,12 +30482,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10125:1: ( rule__TypeNameExpCS__Group_1__0__Impl rule__TypeNameExpCS__Group_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10126:2: rule__TypeNameExpCS__Group_1__0__Impl rule__TypeNameExpCS__Group_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1__0__Impl_in_rule__TypeNameExpCS__Group_1__020827);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1__0__Impl_in_rule__TypeNameExpCS__Group_1__020826);
             rule__TypeNameExpCS__Group_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1__1_in_rule__TypeNameExpCS__Group_1__020830);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1__1_in_rule__TypeNameExpCS__Group_1__020829);
             rule__TypeNameExpCS__Group_1__1();
 
             state._fsp--;
@@ -30540,7 +30529,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10140:1: ( rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10140:2: rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0_in_rule__TypeNameExpCS__Group_1__0__Impl20857);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0_in_rule__TypeNameExpCS__Group_1__0__Impl20856);
             rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0();
 
             state._fsp--;
@@ -30582,7 +30571,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10154:1: ( rule__TypeNameExpCS__Group_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10155:2: rule__TypeNameExpCS__Group_1__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1__1__Impl_in_rule__TypeNameExpCS__Group_1__120887);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1__1__Impl_in_rule__TypeNameExpCS__Group_1__120886);
             rule__TypeNameExpCS__Group_1__1__Impl();
 
             state._fsp--;
@@ -30622,17 +30611,17 @@
                before(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10168:1: ( rule__TypeNameExpCS__Group_1_1__0 )?
-            int alt92=2;
-            int LA92_0 = input.LA(1);
+            int alt91=2;
+            int LA91_0 = input.LA(1);
 
-            if ( (LA92_0==73) ) {
-                alt92=1;
+            if ( (LA91_0==73) ) {
+                alt91=1;
             }
-            switch (alt92) {
+            switch (alt91) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10168:2: rule__TypeNameExpCS__Group_1_1__0
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1_1__0_in_rule__TypeNameExpCS__Group_1__1__Impl20914);
+                    pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1_1__0_in_rule__TypeNameExpCS__Group_1__1__Impl20913);
                     rule__TypeNameExpCS__Group_1_1__0();
 
                     state._fsp--;
@@ -30677,12 +30666,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10186:1: ( rule__TypeNameExpCS__Group_1_1__0__Impl rule__TypeNameExpCS__Group_1_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10187:2: rule__TypeNameExpCS__Group_1_1__0__Impl rule__TypeNameExpCS__Group_1_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1_1__0__Impl_in_rule__TypeNameExpCS__Group_1_1__020949);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1_1__0__Impl_in_rule__TypeNameExpCS__Group_1_1__020948);
             rule__TypeNameExpCS__Group_1_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1_1__1_in_rule__TypeNameExpCS__Group_1_1__020952);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1_1__1_in_rule__TypeNameExpCS__Group_1_1__020951);
             rule__TypeNameExpCS__Group_1_1__1();
 
             state._fsp--;
@@ -30721,7 +30710,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); 
             }
-            match(input,73,FollowSets000.FOLLOW_73_in_rule__TypeNameExpCS__Group_1_1__0__Impl20980); if (state.failed) return ;
+            match(input,73,FollowSets000.FOLLOW_73_in_rule__TypeNameExpCS__Group_1_1__0__Impl20979); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); 
             }
@@ -30756,12 +30745,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10217:1: ( rule__TypeNameExpCS__Group_1_1__1__Impl rule__TypeNameExpCS__Group_1_1__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10218:2: rule__TypeNameExpCS__Group_1_1__1__Impl rule__TypeNameExpCS__Group_1_1__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1_1__1__Impl_in_rule__TypeNameExpCS__Group_1_1__121011);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1_1__1__Impl_in_rule__TypeNameExpCS__Group_1_1__121010);
             rule__TypeNameExpCS__Group_1_1__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1_1__2_in_rule__TypeNameExpCS__Group_1_1__121014);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1_1__2_in_rule__TypeNameExpCS__Group_1_1__121013);
             rule__TypeNameExpCS__Group_1_1__2();
 
             state._fsp--;
@@ -30803,7 +30792,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10232:1: ( rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10232:2: rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1_in_rule__TypeNameExpCS__Group_1_1__1__Impl21041);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1_in_rule__TypeNameExpCS__Group_1_1__1__Impl21040);
             rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1();
 
             state._fsp--;
@@ -30845,7 +30834,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10246:1: ( rule__TypeNameExpCS__Group_1_1__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10247:2: rule__TypeNameExpCS__Group_1_1__2__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1_1__2__Impl_in_rule__TypeNameExpCS__Group_1_1__221071);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeNameExpCS__Group_1_1__2__Impl_in_rule__TypeNameExpCS__Group_1_1__221070);
             rule__TypeNameExpCS__Group_1_1__2__Impl();
 
             state._fsp--;
@@ -30884,7 +30873,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); 
             }
-            match(input,74,FollowSets000.FOLLOW_74_in_rule__TypeNameExpCS__Group_1_1__2__Impl21099); if (state.failed) return ;
+            match(input,74,FollowSets000.FOLLOW_74_in_rule__TypeNameExpCS__Group_1_1__2__Impl21098); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); 
             }
@@ -30919,12 +30908,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10282:1: ( rule__TypeExpCS__Group__0__Impl rule__TypeExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10283:2: rule__TypeExpCS__Group__0__Impl rule__TypeExpCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeExpCS__Group__0__Impl_in_rule__TypeExpCS__Group__021136);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeExpCS__Group__0__Impl_in_rule__TypeExpCS__Group__021135);
             rule__TypeExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__TypeExpCS__Group__1_in_rule__TypeExpCS__Group__021139);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeExpCS__Group__1_in_rule__TypeExpCS__Group__021138);
             rule__TypeExpCS__Group__1();
 
             state._fsp--;
@@ -30966,7 +30955,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10297:1: ( rule__TypeExpCS__Alternatives_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10297:2: rule__TypeExpCS__Alternatives_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeExpCS__Alternatives_0_in_rule__TypeExpCS__Group__0__Impl21166);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeExpCS__Alternatives_0_in_rule__TypeExpCS__Group__0__Impl21165);
             rule__TypeExpCS__Alternatives_0();
 
             state._fsp--;
@@ -31008,7 +30997,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10311:1: ( rule__TypeExpCS__Group__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10312:2: rule__TypeExpCS__Group__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__TypeExpCS__Group__1__Impl_in_rule__TypeExpCS__Group__121196);
+            pushFollow(FollowSets000.FOLLOW_rule__TypeExpCS__Group__1__Impl_in_rule__TypeExpCS__Group__121195);
             rule__TypeExpCS__Group__1__Impl();
 
             state._fsp--;
@@ -31048,17 +31037,17 @@
                before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10325:1: ( rule__TypeExpCS__OwnedMultiplicityAssignment_1 )?
-            int alt93=2;
-            int LA93_0 = input.LA(1);
+            int alt92=2;
+            int LA92_0 = input.LA(1);
 
-            if ( (LA93_0==80) ) {
-                alt93=1;
+            if ( (LA92_0==80) ) {
+                alt92=1;
             }
-            switch (alt93) {
+            switch (alt92) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10325:2: rule__TypeExpCS__OwnedMultiplicityAssignment_1
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__TypeExpCS__OwnedMultiplicityAssignment_1_in_rule__TypeExpCS__Group__1__Impl21223);
+                    pushFollow(FollowSets000.FOLLOW_rule__TypeExpCS__OwnedMultiplicityAssignment_1_in_rule__TypeExpCS__Group__1__Impl21222);
                     rule__TypeExpCS__OwnedMultiplicityAssignment_1();
 
                     state._fsp--;
@@ -31103,12 +31092,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10343:1: ( rule__ExpCS__Group_0__0__Impl rule__ExpCS__Group_0__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10344:2: rule__ExpCS__Group_0__0__Impl rule__ExpCS__Group_0__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0__0__Impl_in_rule__ExpCS__Group_0__021258);
+            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0__0__Impl_in_rule__ExpCS__Group_0__021257);
             rule__ExpCS__Group_0__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0__1_in_rule__ExpCS__Group_0__021261);
+            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0__1_in_rule__ExpCS__Group_0__021260);
             rule__ExpCS__Group_0__1();
 
             state._fsp--;
@@ -31147,7 +31136,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets000.FOLLOW_rulePrefixedPrimaryExpCS_in_rule__ExpCS__Group_0__0__Impl21288);
+            pushFollow(FollowSets000.FOLLOW_rulePrefixedPrimaryExpCS_in_rule__ExpCS__Group_0__0__Impl21287);
             rulePrefixedPrimaryExpCS();
 
             state._fsp--;
@@ -31186,7 +31175,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10372:1: ( rule__ExpCS__Group_0__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10373:2: rule__ExpCS__Group_0__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0__1__Impl_in_rule__ExpCS__Group_0__121317);
+            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0__1__Impl_in_rule__ExpCS__Group_0__121316);
             rule__ExpCS__Group_0__1__Impl();
 
             state._fsp--;
@@ -31226,17 +31215,17 @@
                before(grammarAccess.getExpCSAccess().getGroup_0_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10386:1: ( rule__ExpCS__Group_0_1__0 )?
-            int alt94=2;
-            int LA94_0 = input.LA(1);
+            int alt93=2;
+            int LA93_0 = input.LA(1);
 
-            if ( ((LA94_0>=17 && LA94_0<=18)||LA94_0==32||(LA94_0>=34 && LA94_0<=50)) ) {
-                alt94=1;
+            if ( ((LA93_0>=17 && LA93_0<=18)||LA93_0==32||(LA93_0>=34 && LA93_0<=50)) ) {
+                alt93=1;
             }
-            switch (alt94) {
+            switch (alt93) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10386:2: rule__ExpCS__Group_0_1__0
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0_1__0_in_rule__ExpCS__Group_0__1__Impl21344);
+                    pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0_1__0_in_rule__ExpCS__Group_0__1__Impl21343);
                     rule__ExpCS__Group_0_1__0();
 
                     state._fsp--;
@@ -31281,12 +31270,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10404:1: ( rule__ExpCS__Group_0_1__0__Impl rule__ExpCS__Group_0_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10405:2: rule__ExpCS__Group_0_1__0__Impl rule__ExpCS__Group_0_1__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0_1__0__Impl_in_rule__ExpCS__Group_0_1__021379);
+            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0_1__0__Impl_in_rule__ExpCS__Group_0_1__021378);
             rule__ExpCS__Group_0_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0_1__1_in_rule__ExpCS__Group_0_1__021382);
+            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0_1__1_in_rule__ExpCS__Group_0_1__021381);
             rule__ExpCS__Group_0_1__1();
 
             state._fsp--;
@@ -31360,12 +31349,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10435:1: ( rule__ExpCS__Group_0_1__1__Impl rule__ExpCS__Group_0_1__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10436:2: rule__ExpCS__Group_0_1__1__Impl rule__ExpCS__Group_0_1__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0_1__1__Impl_in_rule__ExpCS__Group_0_1__121440);
+            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0_1__1__Impl_in_rule__ExpCS__Group_0_1__121439);
             rule__ExpCS__Group_0_1__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0_1__2_in_rule__ExpCS__Group_0_1__121443);
+            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0_1__2_in_rule__ExpCS__Group_0_1__121442);
             rule__ExpCS__Group_0_1__2();
 
             state._fsp--;
@@ -31407,7 +31396,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10450:1: ( rule__ExpCS__NameAssignment_0_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10450:2: rule__ExpCS__NameAssignment_0_1_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__NameAssignment_0_1_1_in_rule__ExpCS__Group_0_1__1__Impl21470);
+            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__NameAssignment_0_1_1_in_rule__ExpCS__Group_0_1__1__Impl21469);
             rule__ExpCS__NameAssignment_0_1_1();
 
             state._fsp--;
@@ -31449,7 +31438,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10464:1: ( rule__ExpCS__Group_0_1__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10465:2: rule__ExpCS__Group_0_1__2__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0_1__2__Impl_in_rule__ExpCS__Group_0_1__221500);
+            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__Group_0_1__2__Impl_in_rule__ExpCS__Group_0_1__221499);
             rule__ExpCS__Group_0_1__2__Impl();
 
             state._fsp--;
@@ -31491,7 +31480,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10478:1: ( rule__ExpCS__OwnedRightAssignment_0_1_2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10478:2: rule__ExpCS__OwnedRightAssignment_0_1_2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__OwnedRightAssignment_0_1_2_in_rule__ExpCS__Group_0_1__2__Impl21527);
+            pushFollow(FollowSets000.FOLLOW_rule__ExpCS__OwnedRightAssignment_0_1_2_in_rule__ExpCS__Group_0_1__2__Impl21526);
             rule__ExpCS__OwnedRightAssignment_0_1_2();
 
             state._fsp--;
@@ -31533,12 +31522,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10498:1: ( rule__PrefixedLetExpCS__Group_0__0__Impl rule__PrefixedLetExpCS__Group_0__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10499:2: rule__PrefixedLetExpCS__Group_0__0__Impl rule__PrefixedLetExpCS__Group_0__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PrefixedLetExpCS__Group_0__0__Impl_in_rule__PrefixedLetExpCS__Group_0__021563);
+            pushFollow(FollowSets000.FOLLOW_rule__PrefixedLetExpCS__Group_0__0__Impl_in_rule__PrefixedLetExpCS__Group_0__021562);
             rule__PrefixedLetExpCS__Group_0__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__PrefixedLetExpCS__Group_0__1_in_rule__PrefixedLetExpCS__Group_0__021566);
+            pushFollow(FollowSets000.FOLLOW_rule__PrefixedLetExpCS__Group_0__1_in_rule__PrefixedLetExpCS__Group_0__021565);
             rule__PrefixedLetExpCS__Group_0__1();
 
             state._fsp--;
@@ -31612,12 +31601,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10529:1: ( rule__PrefixedLetExpCS__Group_0__1__Impl rule__PrefixedLetExpCS__Group_0__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10530:2: rule__PrefixedLetExpCS__Group_0__1__Impl rule__PrefixedLetExpCS__Group_0__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PrefixedLetExpCS__Group_0__1__Impl_in_rule__PrefixedLetExpCS__Group_0__121624);
+            pushFollow(FollowSets000.FOLLOW_rule__PrefixedLetExpCS__Group_0__1__Impl_in_rule__PrefixedLetExpCS__Group_0__121623);
             rule__PrefixedLetExpCS__Group_0__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__PrefixedLetExpCS__Group_0__2_in_rule__PrefixedLetExpCS__Group_0__121627);
+            pushFollow(FollowSets000.FOLLOW_rule__PrefixedLetExpCS__Group_0__2_in_rule__PrefixedLetExpCS__Group_0__121626);
             rule__PrefixedLetExpCS__Group_0__2();
 
             state._fsp--;
@@ -31659,7 +31648,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10544:1: ( rule__PrefixedLetExpCS__NameAssignment_0_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10544:2: rule__PrefixedLetExpCS__NameAssignment_0_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PrefixedLetExpCS__NameAssignment_0_1_in_rule__PrefixedLetExpCS__Group_0__1__Impl21654);
+            pushFollow(FollowSets000.FOLLOW_rule__PrefixedLetExpCS__NameAssignment_0_1_in_rule__PrefixedLetExpCS__Group_0__1__Impl21653);
             rule__PrefixedLetExpCS__NameAssignment_0_1();
 
             state._fsp--;
@@ -31701,7 +31690,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10558:1: ( rule__PrefixedLetExpCS__Group_0__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10559:2: rule__PrefixedLetExpCS__Group_0__2__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PrefixedLetExpCS__Group_0__2__Impl_in_rule__PrefixedLetExpCS__Group_0__221684);
+            pushFollow(FollowSets000.FOLLOW_rule__PrefixedLetExpCS__Group_0__2__Impl_in_rule__PrefixedLetExpCS__Group_0__221683);
             rule__PrefixedLetExpCS__Group_0__2__Impl();
 
             state._fsp--;
@@ -31743,7 +31732,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10572:1: ( rule__PrefixedLetExpCS__OwnedRightAssignment_0_2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10572:2: rule__PrefixedLetExpCS__OwnedRightAssignment_0_2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PrefixedLetExpCS__OwnedRightAssignment_0_2_in_rule__PrefixedLetExpCS__Group_0__2__Impl21711);
+            pushFollow(FollowSets000.FOLLOW_rule__PrefixedLetExpCS__OwnedRightAssignment_0_2_in_rule__PrefixedLetExpCS__Group_0__2__Impl21710);
             rule__PrefixedLetExpCS__OwnedRightAssignment_0_2();
 
             state._fsp--;
@@ -31785,12 +31774,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10592:1: ( rule__PrefixedPrimaryExpCS__Group_0__0__Impl rule__PrefixedPrimaryExpCS__Group_0__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10593:2: rule__PrefixedPrimaryExpCS__Group_0__0__Impl rule__PrefixedPrimaryExpCS__Group_0__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__0__Impl_in_rule__PrefixedPrimaryExpCS__Group_0__021747);
+            pushFollow(FollowSets000.FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__0__Impl_in_rule__PrefixedPrimaryExpCS__Group_0__021746);
             rule__PrefixedPrimaryExpCS__Group_0__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__1_in_rule__PrefixedPrimaryExpCS__Group_0__021750);
+            pushFollow(FollowSets000.FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__1_in_rule__PrefixedPrimaryExpCS__Group_0__021749);
             rule__PrefixedPrimaryExpCS__Group_0__1();
 
             state._fsp--;
@@ -31864,12 +31853,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10623:1: ( rule__PrefixedPrimaryExpCS__Group_0__1__Impl rule__PrefixedPrimaryExpCS__Group_0__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10624:2: rule__PrefixedPrimaryExpCS__Group_0__1__Impl rule__PrefixedPrimaryExpCS__Group_0__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__1__Impl_in_rule__PrefixedPrimaryExpCS__Group_0__121808);
+            pushFollow(FollowSets000.FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__1__Impl_in_rule__PrefixedPrimaryExpCS__Group_0__121807);
             rule__PrefixedPrimaryExpCS__Group_0__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__2_in_rule__PrefixedPrimaryExpCS__Group_0__121811);
+            pushFollow(FollowSets000.FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__2_in_rule__PrefixedPrimaryExpCS__Group_0__121810);
             rule__PrefixedPrimaryExpCS__Group_0__2();
 
             state._fsp--;
@@ -31911,7 +31900,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10638:1: ( rule__PrefixedPrimaryExpCS__NameAssignment_0_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10638:2: rule__PrefixedPrimaryExpCS__NameAssignment_0_1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PrefixedPrimaryExpCS__NameAssignment_0_1_in_rule__PrefixedPrimaryExpCS__Group_0__1__Impl21838);
+            pushFollow(FollowSets000.FOLLOW_rule__PrefixedPrimaryExpCS__NameAssignment_0_1_in_rule__PrefixedPrimaryExpCS__Group_0__1__Impl21837);
             rule__PrefixedPrimaryExpCS__NameAssignment_0_1();
 
             state._fsp--;
@@ -31953,7 +31942,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10652:1: ( rule__PrefixedPrimaryExpCS__Group_0__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10653:2: rule__PrefixedPrimaryExpCS__Group_0__2__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__2__Impl_in_rule__PrefixedPrimaryExpCS__Group_0__221868);
+            pushFollow(FollowSets000.FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__2__Impl_in_rule__PrefixedPrimaryExpCS__Group_0__221867);
             rule__PrefixedPrimaryExpCS__Group_0__2__Impl();
 
             state._fsp--;
@@ -31995,7 +31984,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10666:1: ( rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10666:2: rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2_in_rule__PrefixedPrimaryExpCS__Group_0__2__Impl21895);
+            pushFollow(FollowSets000.FOLLOW_rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2_in_rule__PrefixedPrimaryExpCS__Group_0__2__Impl21894);
             rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2();
 
             state._fsp--;
@@ -32037,12 +32026,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10686:1: ( rule__NameExpCS__Group__0__Impl rule__NameExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10687:2: rule__NameExpCS__Group__0__Impl rule__NameExpCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__0__Impl_in_rule__NameExpCS__Group__021931);
+            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__0__Impl_in_rule__NameExpCS__Group__021930);
             rule__NameExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__1_in_rule__NameExpCS__Group__021934);
+            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__1_in_rule__NameExpCS__Group__021933);
             rule__NameExpCS__Group__1();
 
             state._fsp--;
@@ -32084,7 +32073,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10701:1: ( rule__NameExpCS__OwnedPathNameAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10701:2: rule__NameExpCS__OwnedPathNameAssignment_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__OwnedPathNameAssignment_0_in_rule__NameExpCS__Group__0__Impl21961);
+            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__OwnedPathNameAssignment_0_in_rule__NameExpCS__Group__0__Impl21960);
             rule__NameExpCS__OwnedPathNameAssignment_0();
 
             state._fsp--;
@@ -32126,12 +32115,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10715:1: ( rule__NameExpCS__Group__1__Impl rule__NameExpCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10716:2: rule__NameExpCS__Group__1__Impl rule__NameExpCS__Group__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__1__Impl_in_rule__NameExpCS__Group__121991);
+            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__1__Impl_in_rule__NameExpCS__Group__121990);
             rule__NameExpCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__2_in_rule__NameExpCS__Group__121994);
+            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__2_in_rule__NameExpCS__Group__121993);
             rule__NameExpCS__Group__2();
 
             state._fsp--;
@@ -32171,21 +32160,21 @@
                before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10730:1: ( rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1 )*
-            loop95:
+            loop94:
             do {
-                int alt95=2;
-                int LA95_0 = input.LA(1);
+                int alt94=2;
+                int LA94_0 = input.LA(1);
 
-                if ( (LA95_0==80) ) {
-                    alt95=1;
+                if ( (LA94_0==80) ) {
+                    alt94=1;
                 }
 
 
-                switch (alt95) {
+                switch (alt94) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10730:2: rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1
             	    {
-            	    pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1_in_rule__NameExpCS__Group__1__Impl22021);
+            	    pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1_in_rule__NameExpCS__Group__1__Impl22020);
             	    rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1();
 
             	    state._fsp--;
@@ -32195,7 +32184,7 @@
             	    break;
 
             	default :
-            	    break loop95;
+            	    break loop94;
                 }
             } while (true);
 
@@ -32233,12 +32222,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10744:1: ( rule__NameExpCS__Group__2__Impl rule__NameExpCS__Group__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10745:2: rule__NameExpCS__Group__2__Impl rule__NameExpCS__Group__3
             {
-            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__2__Impl_in_rule__NameExpCS__Group__222052);
+            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__2__Impl_in_rule__NameExpCS__Group__222051);
             rule__NameExpCS__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__3_in_rule__NameExpCS__Group__222055);
+            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__3_in_rule__NameExpCS__Group__222054);
             rule__NameExpCS__Group__3();
 
             state._fsp--;
@@ -32278,17 +32267,17 @@
                before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10759:1: ( rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2 )?
-            int alt96=2;
-            int LA96_0 = input.LA(1);
+            int alt95=2;
+            int LA95_0 = input.LA(1);
 
-            if ( (LA96_0==61) ) {
-                alt96=1;
+            if ( (LA95_0==61) ) {
+                alt95=1;
             }
-            switch (alt96) {
+            switch (alt95) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10759:2: rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2_in_rule__NameExpCS__Group__2__Impl22082);
+                    pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2_in_rule__NameExpCS__Group__2__Impl22081);
                     rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2();
 
                     state._fsp--;
@@ -32333,12 +32322,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10773:1: ( rule__NameExpCS__Group__3__Impl rule__NameExpCS__Group__4 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10774:2: rule__NameExpCS__Group__3__Impl rule__NameExpCS__Group__4
             {
-            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__3__Impl_in_rule__NameExpCS__Group__322113);
+            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__3__Impl_in_rule__NameExpCS__Group__322112);
             rule__NameExpCS__Group__3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__4_in_rule__NameExpCS__Group__322116);
+            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__4_in_rule__NameExpCS__Group__322115);
             rule__NameExpCS__Group__4();
 
             state._fsp--;
@@ -32378,17 +32367,17 @@
                before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10788:1: ( rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3 )?
-            int alt97=2;
-            int LA97_0 = input.LA(1);
+            int alt96=2;
+            int LA96_0 = input.LA(1);
 
-            if ( (LA97_0==73) ) {
-                alt97=1;
+            if ( (LA96_0==73) ) {
+                alt96=1;
             }
-            switch (alt97) {
+            switch (alt96) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10788:2: rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3_in_rule__NameExpCS__Group__3__Impl22143);
+                    pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3_in_rule__NameExpCS__Group__3__Impl22142);
                     rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3();
 
                     state._fsp--;
@@ -32433,7 +32422,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10802:1: ( rule__NameExpCS__Group__4__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10803:2: rule__NameExpCS__Group__4__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__4__Impl_in_rule__NameExpCS__Group__422174);
+            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group__4__Impl_in_rule__NameExpCS__Group__422173);
             rule__NameExpCS__Group__4__Impl();
 
             state._fsp--;
@@ -32473,17 +32462,17 @@
                before(grammarAccess.getNameExpCSAccess().getGroup_4()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10816:1: ( rule__NameExpCS__Group_4__0 )?
-            int alt98=2;
-            int LA98_0 = input.LA(1);
+            int alt97=2;
+            int LA97_0 = input.LA(1);
 
-            if ( (LA98_0==97) ) {
-                alt98=1;
+            if ( (LA97_0==97) ) {
+                alt97=1;
             }
-            switch (alt98) {
+            switch (alt97) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10816:2: rule__NameExpCS__Group_4__0
                     {
-                    pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group_4__0_in_rule__NameExpCS__Group__4__Impl22201);
+                    pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group_4__0_in_rule__NameExpCS__Group__4__Impl22200);
                     rule__NameExpCS__Group_4__0();
 
                     state._fsp--;
@@ -32528,12 +32517,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10840:1: ( rule__NameExpCS__Group_4__0__Impl rule__NameExpCS__Group_4__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10841:2: rule__NameExpCS__Group_4__0__Impl rule__NameExpCS__Group_4__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group_4__0__Impl_in_rule__NameExpCS__Group_4__022242);
+            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group_4__0__Impl_in_rule__NameExpCS__Group_4__022241);
             rule__NameExpCS__Group_4__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group_4__1_in_rule__NameExpCS__Group_4__022245);
+            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group_4__1_in_rule__NameExpCS__Group_4__022244);
             rule__NameExpCS__Group_4__1();
 
             state._fsp--;
@@ -32575,7 +32564,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10855:1: ( rule__NameExpCS__IsPreAssignment_4_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10855:2: rule__NameExpCS__IsPreAssignment_4_0
             {
-            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__IsPreAssignment_4_0_in_rule__NameExpCS__Group_4__0__Impl22272);
+            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__IsPreAssignment_4_0_in_rule__NameExpCS__Group_4__0__Impl22271);
             rule__NameExpCS__IsPreAssignment_4_0();
 
             state._fsp--;
@@ -32617,7 +32606,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10869:1: ( rule__NameExpCS__Group_4__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10870:2: rule__NameExpCS__Group_4__1__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group_4__1__Impl_in_rule__NameExpCS__Group_4__122302);
+            pushFollow(FollowSets000.FOLLOW_rule__NameExpCS__Group_4__1__Impl_in_rule__NameExpCS__Group_4__122301);
             rule__NameExpCS__Group_4__1__Impl();
 
             state._fsp--;
@@ -32656,7 +32645,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); 
             }
-            match(input,65,FollowSets000.FOLLOW_65_in_rule__NameExpCS__Group_4__1__Impl22330); if (state.failed) return ;
+            match(input,65,FollowSets000.FOLLOW_65_in_rule__NameExpCS__Group_4__1__Impl22329); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); 
             }
@@ -32691,12 +32680,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10903:1: ( rule__CurlyBracketedClauseCS__Group__0__Impl rule__CurlyBracketedClauseCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10904:2: rule__CurlyBracketedClauseCS__Group__0__Impl rule__CurlyBracketedClauseCS__Group__1
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Group__0__Impl_in_rule__CurlyBracketedClauseCS__Group__022365);
+            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Group__0__Impl_in_rule__CurlyBracketedClauseCS__Group__022364);
             rule__CurlyBracketedClauseCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Group__1_in_rule__CurlyBracketedClauseCS__Group__022368);
+            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Group__1_in_rule__CurlyBracketedClauseCS__Group__022367);
             rule__CurlyBracketedClauseCS__Group__1();
 
             state._fsp--;
@@ -32770,12 +32759,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10934:1: ( rule__CurlyBracketedClauseCS__Group__1__Impl rule__CurlyBracketedClauseCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10935:2: rule__CurlyBracketedClauseCS__Group__1__Impl rule__CurlyBracketedClauseCS__Group__2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Group__1__Impl_in_rule__CurlyBracketedClauseCS__Group__122426);
+            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Group__1__Impl_in_rule__CurlyBracketedClauseCS__Group__122425);
             rule__CurlyBracketedClauseCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Group__2_in_rule__CurlyBracketedClauseCS__Group__122429);
+            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Group__2_in_rule__CurlyBracketedClauseCS__Group__122428);
             rule__CurlyBracketedClauseCS__Group__2();
 
             state._fsp--;
@@ -32814,7 +32803,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); 
             }
-            match(input,73,FollowSets000.FOLLOW_73_in_rule__CurlyBracketedClauseCS__Group__1__Impl22457); if (state.failed) return ;
+            match(input,73,FollowSets000.FOLLOW_73_in_rule__CurlyBracketedClauseCS__Group__1__Impl22456); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); 
             }
@@ -32849,12 +32838,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10965:1: ( rule__CurlyBracketedClauseCS__Group__2__Impl rule__CurlyBracketedClauseCS__Group__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10966:2: rule__CurlyBracketedClauseCS__Group__2__Impl rule__CurlyBracketedClauseCS__Group__3
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Group__2__Impl_in_rule__CurlyBracketedClauseCS__Group__222488);
+            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Group__2__Impl_in_rule__CurlyBracketedClauseCS__Group__222487);
             rule__CurlyBracketedClauseCS__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Group__3_in_rule__CurlyBracketedClauseCS__Group__222491);
+            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Group__3_in_rule__CurlyBracketedClauseCS__Group__222490);
             rule__CurlyBracketedClauseCS__Group__3();
 
             state._fsp--;
@@ -32896,7 +32885,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10980:1: ( rule__CurlyBracketedClauseCS__Alternatives_2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10980:2: rule__CurlyBracketedClauseCS__Alternatives_2
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Alternatives_2_in_rule__CurlyBracketedClauseCS__Group__2__Impl22518);
+            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Alternatives_2_in_rule__CurlyBracketedClauseCS__Group__2__Impl22517);
             rule__CurlyBracketedClauseCS__Alternatives_2();
 
             state._fsp--;
@@ -32938,7 +32927,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10994:1: ( rule__CurlyBracketedClauseCS__Group__3__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:10995:2: rule__CurlyBracketedClauseCS__Group__3__Impl
             {
-            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Group__3__Impl_in_rule__CurlyBracketedClauseCS__Group__322548);
+            pushFollow(FollowSets000.FOLLOW_rule__CurlyBracketedClauseCS__Group__3__Impl_in_rule__CurlyBracketedClauseCS__Group__322547);
             rule__CurlyBracketedClauseCS__Group__3__Impl();
 
             state._fsp--;
@@ -32977,7 +32966,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); 
             }
-            match(input,74,FollowSets001.FOLLOW_74_in_rule__CurlyBracketedClauseCS__Group__3__Impl22576); if (state.failed) return ;
+            match(input,74,FollowSets001.FOLLOW_74_in_rule__CurlyBracketedClauseCS__Group__3__Impl22575); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); 
             }
@@ -33012,12 +33001,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11032:1: ( rule__CurlyBracketedClauseCS__Group_2_0__0__Impl rule__CurlyBracketedClauseCS__Group_2_0__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11033:2: rule__CurlyBracketedClauseCS__Group_2_0__0__Impl rule__CurlyBracketedClauseCS__Group_2_0__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0__0__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0__022615);
+            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0__0__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0__022614);
             rule__CurlyBracketedClauseCS__Group_2_0__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0__1_in_rule__CurlyBracketedClauseCS__Group_2_0__022618);
+            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0__1_in_rule__CurlyBracketedClauseCS__Group_2_0__022617);
             rule__CurlyBracketedClauseCS__Group_2_0__1();
 
             state._fsp--;
@@ -33059,7 +33048,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11047:1: ( rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11047:2: rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0_in_rule__CurlyBracketedClauseCS__Group_2_0__0__Impl22645);
+            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0_in_rule__CurlyBracketedClauseCS__Group_2_0__0__Impl22644);
             rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0();
 
             state._fsp--;
@@ -33101,7 +33090,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11061:1: ( rule__CurlyBracketedClauseCS__Group_2_0__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11062:2: rule__CurlyBracketedClauseCS__Group_2_0__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0__1__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0__122675);
+            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0__1__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0__122674);
             rule__CurlyBracketedClauseCS__Group_2_0__1__Impl();
 
             state._fsp--;
@@ -33141,21 +33130,21 @@
                before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11075:1: ( rule__CurlyBracketedClauseCS__Group_2_0_1__0 )*
-            loop99:
+            loop98:
             do {
-                int alt99=2;
-                int LA99_0 = input.LA(1);
+                int alt98=2;
+                int LA98_0 = input.LA(1);
 
-                if ( (LA99_0==64) ) {
-                    alt99=1;
+                if ( (LA98_0==64) ) {
+                    alt98=1;
                 }
 
 
-                switch (alt99) {
+                switch (alt98) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11075:2: rule__CurlyBracketedClauseCS__Group_2_0_1__0
             	    {
-            	    pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__0_in_rule__CurlyBracketedClauseCS__Group_2_0__1__Impl22702);
+            	    pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__0_in_rule__CurlyBracketedClauseCS__Group_2_0__1__Impl22701);
             	    rule__CurlyBracketedClauseCS__Group_2_0_1__0();
 
             	    state._fsp--;
@@ -33165,7 +33154,7 @@
             	    break;
 
             	default :
-            	    break loop99;
+            	    break loop98;
                 }
             } while (true);
 
@@ -33203,12 +33192,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11093:1: ( rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl rule__CurlyBracketedClauseCS__Group_2_0_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11094:2: rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl rule__CurlyBracketedClauseCS__Group_2_0_1__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0_1__022737);
+            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0_1__022736);
             rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__1_in_rule__CurlyBracketedClauseCS__Group_2_0_1__022740);
+            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__1_in_rule__CurlyBracketedClauseCS__Group_2_0_1__022739);
             rule__CurlyBracketedClauseCS__Group_2_0_1__1();
 
             state._fsp--;
@@ -33247,7 +33236,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); 
             }
-            match(input,64,FollowSets001.FOLLOW_64_in_rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl22768); if (state.failed) return ;
+            match(input,64,FollowSets001.FOLLOW_64_in_rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl22767); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); 
             }
@@ -33282,7 +33271,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11124:1: ( rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11125:2: rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0_1__122799);
+            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0_1__122798);
             rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl();
 
             state._fsp--;
@@ -33324,7 +33313,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11138:1: ( rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11138:2: rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1_in_rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl22826);
+            pushFollow(FollowSets001.FOLLOW_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1_in_rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl22825);
             rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1();
 
             state._fsp--;
@@ -33366,12 +33355,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11156:1: ( rule__RoundBracketedClauseCS__Group__0__Impl rule__RoundBracketedClauseCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11157:2: rule__RoundBracketedClauseCS__Group__0__Impl rule__RoundBracketedClauseCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group__0__Impl_in_rule__RoundBracketedClauseCS__Group__022860);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group__0__Impl_in_rule__RoundBracketedClauseCS__Group__022859);
             rule__RoundBracketedClauseCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group__1_in_rule__RoundBracketedClauseCS__Group__022863);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group__1_in_rule__RoundBracketedClauseCS__Group__022862);
             rule__RoundBracketedClauseCS__Group__1();
 
             state._fsp--;
@@ -33445,12 +33434,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11187:1: ( rule__RoundBracketedClauseCS__Group__1__Impl rule__RoundBracketedClauseCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11188:2: rule__RoundBracketedClauseCS__Group__1__Impl rule__RoundBracketedClauseCS__Group__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group__1__Impl_in_rule__RoundBracketedClauseCS__Group__122921);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group__1__Impl_in_rule__RoundBracketedClauseCS__Group__122920);
             rule__RoundBracketedClauseCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group__2_in_rule__RoundBracketedClauseCS__Group__122924);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group__2_in_rule__RoundBracketedClauseCS__Group__122923);
             rule__RoundBracketedClauseCS__Group__2();
 
             state._fsp--;
@@ -33489,7 +33478,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); 
             }
-            match(input,61,FollowSets001.FOLLOW_61_in_rule__RoundBracketedClauseCS__Group__1__Impl22952); if (state.failed) return ;
+            match(input,61,FollowSets001.FOLLOW_61_in_rule__RoundBracketedClauseCS__Group__1__Impl22951); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); 
             }
@@ -33524,12 +33513,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11218:1: ( rule__RoundBracketedClauseCS__Group__2__Impl rule__RoundBracketedClauseCS__Group__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11219:2: rule__RoundBracketedClauseCS__Group__2__Impl rule__RoundBracketedClauseCS__Group__3
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group__2__Impl_in_rule__RoundBracketedClauseCS__Group__222983);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group__2__Impl_in_rule__RoundBracketedClauseCS__Group__222982);
             rule__RoundBracketedClauseCS__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group__3_in_rule__RoundBracketedClauseCS__Group__222986);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group__3_in_rule__RoundBracketedClauseCS__Group__222985);
             rule__RoundBracketedClauseCS__Group__3();
 
             state._fsp--;
@@ -33569,17 +33558,17 @@
                before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11233:1: ( rule__RoundBracketedClauseCS__Group_2__0 )?
-            int alt100=2;
-            int LA100_0 = input.LA(1);
+            int alt99=2;
+            int LA99_0 = input.LA(1);
 
-            if ( ((LA100_0>=RULE_INT && LA100_0<=RULE_ESCAPED_ID)||(LA100_0>=19 && LA100_0<=34)||(LA100_0>=51 && LA100_0<=57)||(LA100_0>=60 && LA100_0<=61)||(LA100_0>=77 && LA100_0<=79)||LA100_0==83||(LA100_0>=88 && LA100_0<=89)||(LA100_0>=95 && LA100_0<=96)) ) {
-                alt100=1;
+            if ( ((LA99_0>=RULE_INT && LA99_0<=RULE_ESCAPED_ID)||(LA99_0>=19 && LA99_0<=34)||(LA99_0>=51 && LA99_0<=57)||(LA99_0>=60 && LA99_0<=61)||(LA99_0>=77 && LA99_0<=79)||LA99_0==83||(LA99_0>=88 && LA99_0<=89)||(LA99_0>=95 && LA99_0<=96)) ) {
+                alt99=1;
             }
-            switch (alt100) {
+            switch (alt99) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11233:2: rule__RoundBracketedClauseCS__Group_2__0
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__0_in_rule__RoundBracketedClauseCS__Group__2__Impl23013);
+                    pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__0_in_rule__RoundBracketedClauseCS__Group__2__Impl23012);
                     rule__RoundBracketedClauseCS__Group_2__0();
 
                     state._fsp--;
@@ -33624,7 +33613,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11247:1: ( rule__RoundBracketedClauseCS__Group__3__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11248:2: rule__RoundBracketedClauseCS__Group__3__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group__3__Impl_in_rule__RoundBracketedClauseCS__Group__323044);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group__3__Impl_in_rule__RoundBracketedClauseCS__Group__323043);
             rule__RoundBracketedClauseCS__Group__3__Impl();
 
             state._fsp--;
@@ -33663,7 +33652,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); 
             }
-            match(input,62,FollowSets001.FOLLOW_62_in_rule__RoundBracketedClauseCS__Group__3__Impl23072); if (state.failed) return ;
+            match(input,62,FollowSets001.FOLLOW_62_in_rule__RoundBracketedClauseCS__Group__3__Impl23071); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); 
             }
@@ -33698,12 +33687,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11285:1: ( rule__RoundBracketedClauseCS__Group_2__0__Impl rule__RoundBracketedClauseCS__Group_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11286:2: rule__RoundBracketedClauseCS__Group_2__0__Impl rule__RoundBracketedClauseCS__Group_2__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__0__Impl_in_rule__RoundBracketedClauseCS__Group_2__023111);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__0__Impl_in_rule__RoundBracketedClauseCS__Group_2__023110);
             rule__RoundBracketedClauseCS__Group_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__1_in_rule__RoundBracketedClauseCS__Group_2__023114);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__1_in_rule__RoundBracketedClauseCS__Group_2__023113);
             rule__RoundBracketedClauseCS__Group_2__1();
 
             state._fsp--;
@@ -33745,7 +33734,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11300:1: ( rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11300:2: rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0_in_rule__RoundBracketedClauseCS__Group_2__0__Impl23141);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0_in_rule__RoundBracketedClauseCS__Group_2__0__Impl23140);
             rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0();
 
             state._fsp--;
@@ -33787,12 +33776,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11314:1: ( rule__RoundBracketedClauseCS__Group_2__1__Impl rule__RoundBracketedClauseCS__Group_2__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11315:2: rule__RoundBracketedClauseCS__Group_2__1__Impl rule__RoundBracketedClauseCS__Group_2__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__1__Impl_in_rule__RoundBracketedClauseCS__Group_2__123171);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__1__Impl_in_rule__RoundBracketedClauseCS__Group_2__123170);
             rule__RoundBracketedClauseCS__Group_2__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__2_in_rule__RoundBracketedClauseCS__Group_2__123174);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__2_in_rule__RoundBracketedClauseCS__Group_2__123173);
             rule__RoundBracketedClauseCS__Group_2__2();
 
             state._fsp--;
@@ -33832,21 +33821,21 @@
                before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11329:1: ( rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1 )*
-            loop101:
+            loop100:
             do {
-                int alt101=2;
-                int LA101_0 = input.LA(1);
+                int alt100=2;
+                int LA100_0 = input.LA(1);
 
-                if ( (LA101_0==64) ) {
-                    alt101=1;
+                if ( (LA100_0==64) ) {
+                    alt100=1;
                 }
 
 
-                switch (alt101) {
+                switch (alt100) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11329:2: rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1
             	    {
-            	    pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1_in_rule__RoundBracketedClauseCS__Group_2__1__Impl23201);
+            	    pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1_in_rule__RoundBracketedClauseCS__Group_2__1__Impl23200);
             	    rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1();
 
             	    state._fsp--;
@@ -33856,7 +33845,7 @@
             	    break;
 
             	default :
-            	    break loop101;
+            	    break loop100;
                 }
             } while (true);
 
@@ -33894,12 +33883,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11343:1: ( rule__RoundBracketedClauseCS__Group_2__2__Impl rule__RoundBracketedClauseCS__Group_2__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11344:2: rule__RoundBracketedClauseCS__Group_2__2__Impl rule__RoundBracketedClauseCS__Group_2__3
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__2__Impl_in_rule__RoundBracketedClauseCS__Group_2__223232);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__2__Impl_in_rule__RoundBracketedClauseCS__Group_2__223231);
             rule__RoundBracketedClauseCS__Group_2__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__3_in_rule__RoundBracketedClauseCS__Group_2__223235);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__3_in_rule__RoundBracketedClauseCS__Group_2__223234);
             rule__RoundBracketedClauseCS__Group_2__3();
 
             state._fsp--;
@@ -33939,17 +33928,17 @@
                before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11358:1: ( rule__RoundBracketedClauseCS__Group_2_2__0 )?
-            int alt102=2;
-            int LA102_0 = input.LA(1);
+            int alt101=2;
+            int LA101_0 = input.LA(1);
 
-            if ( (LA102_0==99) ) {
-                alt102=1;
+            if ( (LA101_0==99) ) {
+                alt101=1;
             }
-            switch (alt102) {
+            switch (alt101) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11358:2: rule__RoundBracketedClauseCS__Group_2_2__0
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__0_in_rule__RoundBracketedClauseCS__Group_2__2__Impl23262);
+                    pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__0_in_rule__RoundBracketedClauseCS__Group_2__2__Impl23261);
                     rule__RoundBracketedClauseCS__Group_2_2__0();
 
                     state._fsp--;
@@ -33994,7 +33983,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11372:1: ( rule__RoundBracketedClauseCS__Group_2__3__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11373:2: rule__RoundBracketedClauseCS__Group_2__3__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__3__Impl_in_rule__RoundBracketedClauseCS__Group_2__323293);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2__3__Impl_in_rule__RoundBracketedClauseCS__Group_2__323292);
             rule__RoundBracketedClauseCS__Group_2__3__Impl();
 
             state._fsp--;
@@ -34034,21 +34023,21 @@
                before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11386:1: ( rule__RoundBracketedClauseCS__Group_2_3__0 )*
-            loop103:
+            loop102:
             do {
-                int alt103=2;
-                int LA103_0 = input.LA(1);
+                int alt102=2;
+                int LA102_0 = input.LA(1);
 
-                if ( (LA103_0==98) ) {
-                    alt103=1;
+                if ( (LA102_0==98) ) {
+                    alt102=1;
                 }
 
 
-                switch (alt103) {
+                switch (alt102) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11386:2: rule__RoundBracketedClauseCS__Group_2_3__0
             	    {
-            	    pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__0_in_rule__RoundBracketedClauseCS__Group_2__3__Impl23320);
+            	    pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__0_in_rule__RoundBracketedClauseCS__Group_2__3__Impl23319);
             	    rule__RoundBracketedClauseCS__Group_2_3__0();
 
             	    state._fsp--;
@@ -34058,7 +34047,7 @@
             	    break;
 
             	default :
-            	    break loop103;
+            	    break loop102;
                 }
             } while (true);
 
@@ -34096,12 +34085,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11408:1: ( rule__RoundBracketedClauseCS__Group_2_2__0__Impl rule__RoundBracketedClauseCS__Group_2_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11409:2: rule__RoundBracketedClauseCS__Group_2_2__0__Impl rule__RoundBracketedClauseCS__Group_2_2__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__0__Impl_in_rule__RoundBracketedClauseCS__Group_2_2__023359);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__0__Impl_in_rule__RoundBracketedClauseCS__Group_2_2__023358);
             rule__RoundBracketedClauseCS__Group_2_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__1_in_rule__RoundBracketedClauseCS__Group_2_2__023362);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__1_in_rule__RoundBracketedClauseCS__Group_2_2__023361);
             rule__RoundBracketedClauseCS__Group_2_2__1();
 
             state._fsp--;
@@ -34143,7 +34132,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11423:1: ( rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11423:2: rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0_in_rule__RoundBracketedClauseCS__Group_2_2__0__Impl23389);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0_in_rule__RoundBracketedClauseCS__Group_2_2__0__Impl23388);
             rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0();
 
             state._fsp--;
@@ -34185,7 +34174,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11437:1: ( rule__RoundBracketedClauseCS__Group_2_2__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11438:2: rule__RoundBracketedClauseCS__Group_2_2__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__1__Impl_in_rule__RoundBracketedClauseCS__Group_2_2__123419);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__1__Impl_in_rule__RoundBracketedClauseCS__Group_2_2__123418);
             rule__RoundBracketedClauseCS__Group_2_2__1__Impl();
 
             state._fsp--;
@@ -34225,21 +34214,21 @@
                before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11451:1: ( rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1 )*
-            loop104:
+            loop103:
             do {
-                int alt104=2;
-                int LA104_0 = input.LA(1);
+                int alt103=2;
+                int LA103_0 = input.LA(1);
 
-                if ( (LA104_0==64) ) {
-                    alt104=1;
+                if ( (LA103_0==64) ) {
+                    alt103=1;
                 }
 
 
-                switch (alt104) {
+                switch (alt103) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11451:2: rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1
             	    {
-            	    pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1_in_rule__RoundBracketedClauseCS__Group_2_2__1__Impl23446);
+            	    pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1_in_rule__RoundBracketedClauseCS__Group_2_2__1__Impl23445);
             	    rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1();
 
             	    state._fsp--;
@@ -34249,7 +34238,7 @@
             	    break;
 
             	default :
-            	    break loop104;
+            	    break loop103;
                 }
             } while (true);
 
@@ -34287,12 +34276,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11469:1: ( rule__RoundBracketedClauseCS__Group_2_3__0__Impl rule__RoundBracketedClauseCS__Group_2_3__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11470:2: rule__RoundBracketedClauseCS__Group_2_3__0__Impl rule__RoundBracketedClauseCS__Group_2_3__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__0__Impl_in_rule__RoundBracketedClauseCS__Group_2_3__023481);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__0__Impl_in_rule__RoundBracketedClauseCS__Group_2_3__023480);
             rule__RoundBracketedClauseCS__Group_2_3__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__1_in_rule__RoundBracketedClauseCS__Group_2_3__023484);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__1_in_rule__RoundBracketedClauseCS__Group_2_3__023483);
             rule__RoundBracketedClauseCS__Group_2_3__1();
 
             state._fsp--;
@@ -34334,7 +34323,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11484:1: ( rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11484:2: rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0_in_rule__RoundBracketedClauseCS__Group_2_3__0__Impl23511);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0_in_rule__RoundBracketedClauseCS__Group_2_3__0__Impl23510);
             rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0();
 
             state._fsp--;
@@ -34376,7 +34365,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11498:1: ( rule__RoundBracketedClauseCS__Group_2_3__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11499:2: rule__RoundBracketedClauseCS__Group_2_3__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__1__Impl_in_rule__RoundBracketedClauseCS__Group_2_3__123541);
+            pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__1__Impl_in_rule__RoundBracketedClauseCS__Group_2_3__123540);
             rule__RoundBracketedClauseCS__Group_2_3__1__Impl();
 
             state._fsp--;
@@ -34416,21 +34405,21 @@
                before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11512:1: ( rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1 )*
-            loop105:
+            loop104:
             do {
-                int alt105=2;
-                int LA105_0 = input.LA(1);
+                int alt104=2;
+                int LA104_0 = input.LA(1);
 
-                if ( (LA105_0==64) ) {
-                    alt105=1;
+                if ( (LA104_0==64) ) {
+                    alt104=1;
                 }
 
 
-                switch (alt105) {
+                switch (alt104) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11512:2: rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1
             	    {
-            	    pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1_in_rule__RoundBracketedClauseCS__Group_2_3__1__Impl23568);
+            	    pushFollow(FollowSets001.FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1_in_rule__RoundBracketedClauseCS__Group_2_3__1__Impl23567);
             	    rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1();
 
             	    state._fsp--;
@@ -34440,7 +34429,7 @@
             	    break;
 
             	default :
-            	    break loop105;
+            	    break loop104;
                 }
             } while (true);
 
@@ -34478,12 +34467,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11530:1: ( rule__SquareBracketedClauseCS__Group__0__Impl rule__SquareBracketedClauseCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11531:2: rule__SquareBracketedClauseCS__Group__0__Impl rule__SquareBracketedClauseCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group__0__Impl_in_rule__SquareBracketedClauseCS__Group__023603);
+            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group__0__Impl_in_rule__SquareBracketedClauseCS__Group__023602);
             rule__SquareBracketedClauseCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group__1_in_rule__SquareBracketedClauseCS__Group__023606);
+            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group__1_in_rule__SquareBracketedClauseCS__Group__023605);
             rule__SquareBracketedClauseCS__Group__1();
 
             state._fsp--;
@@ -34522,7 +34511,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); 
             }
-            match(input,80,FollowSets001.FOLLOW_80_in_rule__SquareBracketedClauseCS__Group__0__Impl23634); if (state.failed) return ;
+            match(input,80,FollowSets001.FOLLOW_80_in_rule__SquareBracketedClauseCS__Group__0__Impl23633); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); 
             }
@@ -34557,12 +34546,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11561:1: ( rule__SquareBracketedClauseCS__Group__1__Impl rule__SquareBracketedClauseCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11562:2: rule__SquareBracketedClauseCS__Group__1__Impl rule__SquareBracketedClauseCS__Group__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group__1__Impl_in_rule__SquareBracketedClauseCS__Group__123665);
+            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group__1__Impl_in_rule__SquareBracketedClauseCS__Group__123664);
             rule__SquareBracketedClauseCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group__2_in_rule__SquareBracketedClauseCS__Group__123668);
+            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group__2_in_rule__SquareBracketedClauseCS__Group__123667);
             rule__SquareBracketedClauseCS__Group__2();
 
             state._fsp--;
@@ -34604,7 +34593,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11576:1: ( rule__SquareBracketedClauseCS__OwnedTermsAssignment_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11576:2: rule__SquareBracketedClauseCS__OwnedTermsAssignment_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__OwnedTermsAssignment_1_in_rule__SquareBracketedClauseCS__Group__1__Impl23695);
+            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__OwnedTermsAssignment_1_in_rule__SquareBracketedClauseCS__Group__1__Impl23694);
             rule__SquareBracketedClauseCS__OwnedTermsAssignment_1();
 
             state._fsp--;
@@ -34646,12 +34635,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11590:1: ( rule__SquareBracketedClauseCS__Group__2__Impl rule__SquareBracketedClauseCS__Group__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11591:2: rule__SquareBracketedClauseCS__Group__2__Impl rule__SquareBracketedClauseCS__Group__3
             {
-            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group__2__Impl_in_rule__SquareBracketedClauseCS__Group__223725);
+            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group__2__Impl_in_rule__SquareBracketedClauseCS__Group__223724);
             rule__SquareBracketedClauseCS__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group__3_in_rule__SquareBracketedClauseCS__Group__223728);
+            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group__3_in_rule__SquareBracketedClauseCS__Group__223727);
             rule__SquareBracketedClauseCS__Group__3();
 
             state._fsp--;
@@ -34691,21 +34680,21 @@
                before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11605:1: ( rule__SquareBracketedClauseCS__Group_2__0 )*
-            loop106:
+            loop105:
             do {
-                int alt106=2;
-                int LA106_0 = input.LA(1);
+                int alt105=2;
+                int LA105_0 = input.LA(1);
 
-                if ( (LA106_0==64) ) {
-                    alt106=1;
+                if ( (LA105_0==64) ) {
+                    alt105=1;
                 }
 
 
-                switch (alt106) {
+                switch (alt105) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11605:2: rule__SquareBracketedClauseCS__Group_2__0
             	    {
-            	    pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group_2__0_in_rule__SquareBracketedClauseCS__Group__2__Impl23755);
+            	    pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group_2__0_in_rule__SquareBracketedClauseCS__Group__2__Impl23754);
             	    rule__SquareBracketedClauseCS__Group_2__0();
 
             	    state._fsp--;
@@ -34715,7 +34704,7 @@
             	    break;
 
             	default :
-            	    break loop106;
+            	    break loop105;
                 }
             } while (true);
 
@@ -34753,7 +34742,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11619:1: ( rule__SquareBracketedClauseCS__Group__3__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11620:2: rule__SquareBracketedClauseCS__Group__3__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group__3__Impl_in_rule__SquareBracketedClauseCS__Group__323786);
+            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group__3__Impl_in_rule__SquareBracketedClauseCS__Group__323785);
             rule__SquareBracketedClauseCS__Group__3__Impl();
 
             state._fsp--;
@@ -34792,7 +34781,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); 
             }
-            match(input,81,FollowSets001.FOLLOW_81_in_rule__SquareBracketedClauseCS__Group__3__Impl23814); if (state.failed) return ;
+            match(input,81,FollowSets001.FOLLOW_81_in_rule__SquareBracketedClauseCS__Group__3__Impl23813); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); 
             }
@@ -34827,12 +34816,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11657:1: ( rule__SquareBracketedClauseCS__Group_2__0__Impl rule__SquareBracketedClauseCS__Group_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11658:2: rule__SquareBracketedClauseCS__Group_2__0__Impl rule__SquareBracketedClauseCS__Group_2__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group_2__0__Impl_in_rule__SquareBracketedClauseCS__Group_2__023853);
+            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group_2__0__Impl_in_rule__SquareBracketedClauseCS__Group_2__023852);
             rule__SquareBracketedClauseCS__Group_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group_2__1_in_rule__SquareBracketedClauseCS__Group_2__023856);
+            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group_2__1_in_rule__SquareBracketedClauseCS__Group_2__023855);
             rule__SquareBracketedClauseCS__Group_2__1();
 
             state._fsp--;
@@ -34871,7 +34860,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); 
             }
-            match(input,64,FollowSets001.FOLLOW_64_in_rule__SquareBracketedClauseCS__Group_2__0__Impl23884); if (state.failed) return ;
+            match(input,64,FollowSets001.FOLLOW_64_in_rule__SquareBracketedClauseCS__Group_2__0__Impl23883); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); 
             }
@@ -34906,7 +34895,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11688:1: ( rule__SquareBracketedClauseCS__Group_2__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11689:2: rule__SquareBracketedClauseCS__Group_2__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group_2__1__Impl_in_rule__SquareBracketedClauseCS__Group_2__123915);
+            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__Group_2__1__Impl_in_rule__SquareBracketedClauseCS__Group_2__123914);
             rule__SquareBracketedClauseCS__Group_2__1__Impl();
 
             state._fsp--;
@@ -34948,7 +34937,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11702:1: ( rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11702:2: rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1_in_rule__SquareBracketedClauseCS__Group_2__1__Impl23942);
+            pushFollow(FollowSets001.FOLLOW_rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1_in_rule__SquareBracketedClauseCS__Group_2__1__Impl23941);
             rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1();
 
             state._fsp--;
@@ -34990,12 +34979,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11720:1: ( rule__NavigatingArgCS__Group_0__0__Impl rule__NavigatingArgCS__Group_0__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11721:2: rule__NavigatingArgCS__Group_0__0__Impl rule__NavigatingArgCS__Group_0__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0__0__Impl_in_rule__NavigatingArgCS__Group_0__023976);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0__0__Impl_in_rule__NavigatingArgCS__Group_0__023975);
             rule__NavigatingArgCS__Group_0__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0__1_in_rule__NavigatingArgCS__Group_0__023979);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0__1_in_rule__NavigatingArgCS__Group_0__023978);
             rule__NavigatingArgCS__Group_0__1();
 
             state._fsp--;
@@ -35037,7 +35026,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11735:1: ( rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11735:2: rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0_in_rule__NavigatingArgCS__Group_0__0__Impl24006);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0_in_rule__NavigatingArgCS__Group_0__0__Impl24005);
             rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0();
 
             state._fsp--;
@@ -35079,7 +35068,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11749:1: ( rule__NavigatingArgCS__Group_0__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11750:2: rule__NavigatingArgCS__Group_0__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0__1__Impl_in_rule__NavigatingArgCS__Group_0__124036);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0__1__Impl_in_rule__NavigatingArgCS__Group_0__124035);
             rule__NavigatingArgCS__Group_0__1__Impl();
 
             state._fsp--;
@@ -35119,17 +35108,17 @@
                before(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11763:1: ( rule__NavigatingArgCS__Alternatives_0_1 )?
-            int alt107=2;
-            int LA107_0 = input.LA(1);
+            int alt106=2;
+            int LA106_0 = input.LA(1);
 
-            if ( (LA107_0==60||LA107_0==82) ) {
-                alt107=1;
+            if ( (LA106_0==60||LA106_0==82) ) {
+                alt106=1;
             }
-            switch (alt107) {
+            switch (alt106) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11763:2: rule__NavigatingArgCS__Alternatives_0_1
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Alternatives_0_1_in_rule__NavigatingArgCS__Group_0__1__Impl24063);
+                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Alternatives_0_1_in_rule__NavigatingArgCS__Group_0__1__Impl24062);
                     rule__NavigatingArgCS__Alternatives_0_1();
 
                     state._fsp--;
@@ -35174,12 +35163,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11781:1: ( rule__NavigatingArgCS__Group_0_1_0__0__Impl rule__NavigatingArgCS__Group_0_1_0__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11782:2: rule__NavigatingArgCS__Group_0_1_0__0__Impl rule__NavigatingArgCS__Group_0_1_0__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0__0__Impl_in_rule__NavigatingArgCS__Group_0_1_0__024098);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0__0__Impl_in_rule__NavigatingArgCS__Group_0_1_0__024097);
             rule__NavigatingArgCS__Group_0_1_0__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0__1_in_rule__NavigatingArgCS__Group_0_1_0__024101);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0__1_in_rule__NavigatingArgCS__Group_0_1_0__024100);
             rule__NavigatingArgCS__Group_0_1_0__1();
 
             state._fsp--;
@@ -35218,7 +35207,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); 
             }
-            match(input,60,FollowSets001.FOLLOW_60_in_rule__NavigatingArgCS__Group_0_1_0__0__Impl24129); if (state.failed) return ;
+            match(input,60,FollowSets001.FOLLOW_60_in_rule__NavigatingArgCS__Group_0_1_0__0__Impl24128); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); 
             }
@@ -35253,12 +35242,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11812:1: ( rule__NavigatingArgCS__Group_0_1_0__1__Impl rule__NavigatingArgCS__Group_0_1_0__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11813:2: rule__NavigatingArgCS__Group_0_1_0__1__Impl rule__NavigatingArgCS__Group_0_1_0__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0__1__Impl_in_rule__NavigatingArgCS__Group_0_1_0__124160);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0__1__Impl_in_rule__NavigatingArgCS__Group_0_1_0__124159);
             rule__NavigatingArgCS__Group_0_1_0__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0__2_in_rule__NavigatingArgCS__Group_0_1_0__124163);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0__2_in_rule__NavigatingArgCS__Group_0_1_0__124162);
             rule__NavigatingArgCS__Group_0_1_0__2();
 
             state._fsp--;
@@ -35300,7 +35289,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11827:1: ( rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11827:2: rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1_in_rule__NavigatingArgCS__Group_0_1_0__1__Impl24190);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1_in_rule__NavigatingArgCS__Group_0_1_0__1__Impl24189);
             rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1();
 
             state._fsp--;
@@ -35342,7 +35331,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11841:1: ( rule__NavigatingArgCS__Group_0_1_0__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11842:2: rule__NavigatingArgCS__Group_0_1_0__2__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0__2__Impl_in_rule__NavigatingArgCS__Group_0_1_0__224220);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0__2__Impl_in_rule__NavigatingArgCS__Group_0_1_0__224219);
             rule__NavigatingArgCS__Group_0_1_0__2__Impl();
 
             state._fsp--;
@@ -35382,17 +35371,17 @@
                before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11855:1: ( rule__NavigatingArgCS__Group_0_1_0_2__0 )?
-            int alt108=2;
-            int LA108_0 = input.LA(1);
+            int alt107=2;
+            int LA107_0 = input.LA(1);
 
-            if ( (LA108_0==41) ) {
-                alt108=1;
+            if ( (LA107_0==41) ) {
+                alt107=1;
             }
-            switch (alt108) {
+            switch (alt107) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11855:2: rule__NavigatingArgCS__Group_0_1_0_2__0
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__0_in_rule__NavigatingArgCS__Group_0_1_0__2__Impl24247);
+                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__0_in_rule__NavigatingArgCS__Group_0_1_0__2__Impl24246);
                     rule__NavigatingArgCS__Group_0_1_0_2__0();
 
                     state._fsp--;
@@ -35437,12 +35426,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11875:1: ( rule__NavigatingArgCS__Group_0_1_0_2__0__Impl rule__NavigatingArgCS__Group_0_1_0_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11876:2: rule__NavigatingArgCS__Group_0_1_0_2__0__Impl rule__NavigatingArgCS__Group_0_1_0_2__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__0__Impl_in_rule__NavigatingArgCS__Group_0_1_0_2__024284);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__0__Impl_in_rule__NavigatingArgCS__Group_0_1_0_2__024283);
             rule__NavigatingArgCS__Group_0_1_0_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__1_in_rule__NavigatingArgCS__Group_0_1_0_2__024287);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__1_in_rule__NavigatingArgCS__Group_0_1_0_2__024286);
             rule__NavigatingArgCS__Group_0_1_0_2__1();
 
             state._fsp--;
@@ -35481,7 +35470,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); 
             }
-            match(input,41,FollowSets001.FOLLOW_41_in_rule__NavigatingArgCS__Group_0_1_0_2__0__Impl24315); if (state.failed) return ;
+            match(input,41,FollowSets001.FOLLOW_41_in_rule__NavigatingArgCS__Group_0_1_0_2__0__Impl24314); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); 
             }
@@ -35516,7 +35505,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11906:1: ( rule__NavigatingArgCS__Group_0_1_0_2__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11907:2: rule__NavigatingArgCS__Group_0_1_0_2__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__1__Impl_in_rule__NavigatingArgCS__Group_0_1_0_2__124346);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__1__Impl_in_rule__NavigatingArgCS__Group_0_1_0_2__124345);
             rule__NavigatingArgCS__Group_0_1_0_2__1__Impl();
 
             state._fsp--;
@@ -35558,7 +35547,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11920:1: ( rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11920:2: rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1_in_rule__NavigatingArgCS__Group_0_1_0_2__1__Impl24373);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1_in_rule__NavigatingArgCS__Group_0_1_0_2__1__Impl24372);
             rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1();
 
             state._fsp--;
@@ -35600,12 +35589,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11938:1: ( rule__NavigatingArgCS__Group_0_1_1__0__Impl rule__NavigatingArgCS__Group_0_1_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11939:2: rule__NavigatingArgCS__Group_0_1_1__0__Impl rule__NavigatingArgCS__Group_0_1_1__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_1__0__Impl_in_rule__NavigatingArgCS__Group_0_1_1__024407);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_1__0__Impl_in_rule__NavigatingArgCS__Group_0_1_1__024406);
             rule__NavigatingArgCS__Group_0_1_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_1__1_in_rule__NavigatingArgCS__Group_0_1_1__024410);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_1__1_in_rule__NavigatingArgCS__Group_0_1_1__024409);
             rule__NavigatingArgCS__Group_0_1_1__1();
 
             state._fsp--;
@@ -35644,7 +35633,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); 
             }
-            match(input,82,FollowSets001.FOLLOW_82_in_rule__NavigatingArgCS__Group_0_1_1__0__Impl24438); if (state.failed) return ;
+            match(input,82,FollowSets001.FOLLOW_82_in_rule__NavigatingArgCS__Group_0_1_1__0__Impl24437); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); 
             }
@@ -35679,7 +35668,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11969:1: ( rule__NavigatingArgCS__Group_0_1_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11970:2: rule__NavigatingArgCS__Group_0_1_1__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_1__1__Impl_in_rule__NavigatingArgCS__Group_0_1_1__124469);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_0_1_1__1__Impl_in_rule__NavigatingArgCS__Group_0_1_1__124468);
             rule__NavigatingArgCS__Group_0_1_1__1__Impl();
 
             state._fsp--;
@@ -35721,7 +35710,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11983:1: ( rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:11983:2: rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1_in_rule__NavigatingArgCS__Group_0_1_1__1__Impl24496);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1_in_rule__NavigatingArgCS__Group_0_1_1__1__Impl24495);
             rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1();
 
             state._fsp--;
@@ -35763,12 +35752,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12001:1: ( rule__NavigatingArgCS__Group_1__0__Impl rule__NavigatingArgCS__Group_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12002:2: rule__NavigatingArgCS__Group_1__0__Impl rule__NavigatingArgCS__Group_1__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_1__0__Impl_in_rule__NavigatingArgCS__Group_1__024530);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_1__0__Impl_in_rule__NavigatingArgCS__Group_1__024529);
             rule__NavigatingArgCS__Group_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_1__1_in_rule__NavigatingArgCS__Group_1__024533);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_1__1_in_rule__NavigatingArgCS__Group_1__024532);
             rule__NavigatingArgCS__Group_1__1();
 
             state._fsp--;
@@ -35807,7 +35796,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); 
             }
-            match(input,60,FollowSets001.FOLLOW_60_in_rule__NavigatingArgCS__Group_1__0__Impl24561); if (state.failed) return ;
+            match(input,60,FollowSets001.FOLLOW_60_in_rule__NavigatingArgCS__Group_1__0__Impl24560); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); 
             }
@@ -35842,7 +35831,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12032:1: ( rule__NavigatingArgCS__Group_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12033:2: rule__NavigatingArgCS__Group_1__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_1__1__Impl_in_rule__NavigatingArgCS__Group_1__124592);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__Group_1__1__Impl_in_rule__NavigatingArgCS__Group_1__124591);
             rule__NavigatingArgCS__Group_1__1__Impl();
 
             state._fsp--;
@@ -35884,7 +35873,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12046:1: ( rule__NavigatingArgCS__OwnedTypeAssignment_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12046:2: rule__NavigatingArgCS__OwnedTypeAssignment_1_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__OwnedTypeAssignment_1_1_in_rule__NavigatingArgCS__Group_1__1__Impl24619);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingArgCS__OwnedTypeAssignment_1_1_in_rule__NavigatingArgCS__Group_1__1__Impl24618);
             rule__NavigatingArgCS__OwnedTypeAssignment_1_1();
 
             state._fsp--;
@@ -35926,12 +35915,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12064:1: ( rule__NavigatingBarArgCS__Group__0__Impl rule__NavigatingBarArgCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12065:2: rule__NavigatingBarArgCS__Group__0__Impl rule__NavigatingBarArgCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group__0__Impl_in_rule__NavigatingBarArgCS__Group__024653);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group__0__Impl_in_rule__NavigatingBarArgCS__Group__024652);
             rule__NavigatingBarArgCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group__1_in_rule__NavigatingBarArgCS__Group__024656);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group__1_in_rule__NavigatingBarArgCS__Group__024655);
             rule__NavigatingBarArgCS__Group__1();
 
             state._fsp--;
@@ -35973,7 +35962,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12079:1: ( rule__NavigatingBarArgCS__PrefixAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12079:2: rule__NavigatingBarArgCS__PrefixAssignment_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__PrefixAssignment_0_in_rule__NavigatingBarArgCS__Group__0__Impl24683);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__PrefixAssignment_0_in_rule__NavigatingBarArgCS__Group__0__Impl24682);
             rule__NavigatingBarArgCS__PrefixAssignment_0();
 
             state._fsp--;
@@ -36015,12 +36004,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12093:1: ( rule__NavigatingBarArgCS__Group__1__Impl rule__NavigatingBarArgCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12094:2: rule__NavigatingBarArgCS__Group__1__Impl rule__NavigatingBarArgCS__Group__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group__1__Impl_in_rule__NavigatingBarArgCS__Group__124713);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group__1__Impl_in_rule__NavigatingBarArgCS__Group__124712);
             rule__NavigatingBarArgCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group__2_in_rule__NavigatingBarArgCS__Group__124716);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group__2_in_rule__NavigatingBarArgCS__Group__124715);
             rule__NavigatingBarArgCS__Group__2();
 
             state._fsp--;
@@ -36062,7 +36051,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12108:1: ( rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12108:2: rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1_in_rule__NavigatingBarArgCS__Group__1__Impl24743);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1_in_rule__NavigatingBarArgCS__Group__1__Impl24742);
             rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1();
 
             state._fsp--;
@@ -36104,7 +36093,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12122:1: ( rule__NavigatingBarArgCS__Group__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12123:2: rule__NavigatingBarArgCS__Group__2__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group__2__Impl_in_rule__NavigatingBarArgCS__Group__224773);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group__2__Impl_in_rule__NavigatingBarArgCS__Group__224772);
             rule__NavigatingBarArgCS__Group__2__Impl();
 
             state._fsp--;
@@ -36144,17 +36133,17 @@
                before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12136:1: ( rule__NavigatingBarArgCS__Group_2__0 )?
-            int alt109=2;
-            int LA109_0 = input.LA(1);
+            int alt108=2;
+            int LA108_0 = input.LA(1);
 
-            if ( (LA109_0==60) ) {
-                alt109=1;
+            if ( (LA108_0==60) ) {
+                alt108=1;
             }
-            switch (alt109) {
+            switch (alt108) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12136:2: rule__NavigatingBarArgCS__Group_2__0
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2__0_in_rule__NavigatingBarArgCS__Group__2__Impl24800);
+                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2__0_in_rule__NavigatingBarArgCS__Group__2__Impl24799);
                     rule__NavigatingBarArgCS__Group_2__0();
 
                     state._fsp--;
@@ -36199,12 +36188,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12156:1: ( rule__NavigatingBarArgCS__Group_2__0__Impl rule__NavigatingBarArgCS__Group_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12157:2: rule__NavigatingBarArgCS__Group_2__0__Impl rule__NavigatingBarArgCS__Group_2__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2__0__Impl_in_rule__NavigatingBarArgCS__Group_2__024837);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2__0__Impl_in_rule__NavigatingBarArgCS__Group_2__024836);
             rule__NavigatingBarArgCS__Group_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2__1_in_rule__NavigatingBarArgCS__Group_2__024840);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2__1_in_rule__NavigatingBarArgCS__Group_2__024839);
             rule__NavigatingBarArgCS__Group_2__1();
 
             state._fsp--;
@@ -36243,7 +36232,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); 
             }
-            match(input,60,FollowSets001.FOLLOW_60_in_rule__NavigatingBarArgCS__Group_2__0__Impl24868); if (state.failed) return ;
+            match(input,60,FollowSets001.FOLLOW_60_in_rule__NavigatingBarArgCS__Group_2__0__Impl24867); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); 
             }
@@ -36278,12 +36267,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12187:1: ( rule__NavigatingBarArgCS__Group_2__1__Impl rule__NavigatingBarArgCS__Group_2__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12188:2: rule__NavigatingBarArgCS__Group_2__1__Impl rule__NavigatingBarArgCS__Group_2__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2__1__Impl_in_rule__NavigatingBarArgCS__Group_2__124899);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2__1__Impl_in_rule__NavigatingBarArgCS__Group_2__124898);
             rule__NavigatingBarArgCS__Group_2__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2__2_in_rule__NavigatingBarArgCS__Group_2__124902);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2__2_in_rule__NavigatingBarArgCS__Group_2__124901);
             rule__NavigatingBarArgCS__Group_2__2();
 
             state._fsp--;
@@ -36325,7 +36314,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12202:1: ( rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12202:2: rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1_in_rule__NavigatingBarArgCS__Group_2__1__Impl24929);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1_in_rule__NavigatingBarArgCS__Group_2__1__Impl24928);
             rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1();
 
             state._fsp--;
@@ -36367,7 +36356,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12216:1: ( rule__NavigatingBarArgCS__Group_2__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12217:2: rule__NavigatingBarArgCS__Group_2__2__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2__2__Impl_in_rule__NavigatingBarArgCS__Group_2__224959);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2__2__Impl_in_rule__NavigatingBarArgCS__Group_2__224958);
             rule__NavigatingBarArgCS__Group_2__2__Impl();
 
             state._fsp--;
@@ -36407,17 +36396,17 @@
                before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12230:1: ( rule__NavigatingBarArgCS__Group_2_2__0 )?
-            int alt110=2;
-            int LA110_0 = input.LA(1);
+            int alt109=2;
+            int LA109_0 = input.LA(1);
 
-            if ( (LA110_0==41) ) {
-                alt110=1;
+            if ( (LA109_0==41) ) {
+                alt109=1;
             }
-            switch (alt110) {
+            switch (alt109) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12230:2: rule__NavigatingBarArgCS__Group_2_2__0
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2_2__0_in_rule__NavigatingBarArgCS__Group_2__2__Impl24986);
+                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2_2__0_in_rule__NavigatingBarArgCS__Group_2__2__Impl24985);
                     rule__NavigatingBarArgCS__Group_2_2__0();
 
                     state._fsp--;
@@ -36462,12 +36451,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12250:1: ( rule__NavigatingBarArgCS__Group_2_2__0__Impl rule__NavigatingBarArgCS__Group_2_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12251:2: rule__NavigatingBarArgCS__Group_2_2__0__Impl rule__NavigatingBarArgCS__Group_2_2__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2_2__0__Impl_in_rule__NavigatingBarArgCS__Group_2_2__025023);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2_2__0__Impl_in_rule__NavigatingBarArgCS__Group_2_2__025022);
             rule__NavigatingBarArgCS__Group_2_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2_2__1_in_rule__NavigatingBarArgCS__Group_2_2__025026);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2_2__1_in_rule__NavigatingBarArgCS__Group_2_2__025025);
             rule__NavigatingBarArgCS__Group_2_2__1();
 
             state._fsp--;
@@ -36506,7 +36495,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); 
             }
-            match(input,41,FollowSets001.FOLLOW_41_in_rule__NavigatingBarArgCS__Group_2_2__0__Impl25054); if (state.failed) return ;
+            match(input,41,FollowSets001.FOLLOW_41_in_rule__NavigatingBarArgCS__Group_2_2__0__Impl25053); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); 
             }
@@ -36541,7 +36530,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12281:1: ( rule__NavigatingBarArgCS__Group_2_2__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12282:2: rule__NavigatingBarArgCS__Group_2_2__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2_2__1__Impl_in_rule__NavigatingBarArgCS__Group_2_2__125085);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__Group_2_2__1__Impl_in_rule__NavigatingBarArgCS__Group_2_2__125084);
             rule__NavigatingBarArgCS__Group_2_2__1__Impl();
 
             state._fsp--;
@@ -36583,7 +36572,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12295:1: ( rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12295:2: rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1_in_rule__NavigatingBarArgCS__Group_2_2__1__Impl25112);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1_in_rule__NavigatingBarArgCS__Group_2_2__1__Impl25111);
             rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1();
 
             state._fsp--;
@@ -36625,12 +36614,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12313:1: ( rule__NavigatingCommaArgCS__Group__0__Impl rule__NavigatingCommaArgCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12314:2: rule__NavigatingCommaArgCS__Group__0__Impl rule__NavigatingCommaArgCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group__0__Impl_in_rule__NavigatingCommaArgCS__Group__025146);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group__0__Impl_in_rule__NavigatingCommaArgCS__Group__025145);
             rule__NavigatingCommaArgCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group__1_in_rule__NavigatingCommaArgCS__Group__025149);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group__1_in_rule__NavigatingCommaArgCS__Group__025148);
             rule__NavigatingCommaArgCS__Group__1();
 
             state._fsp--;
@@ -36672,7 +36661,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12328:1: ( rule__NavigatingCommaArgCS__PrefixAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12328:2: rule__NavigatingCommaArgCS__PrefixAssignment_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__PrefixAssignment_0_in_rule__NavigatingCommaArgCS__Group__0__Impl25176);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__PrefixAssignment_0_in_rule__NavigatingCommaArgCS__Group__0__Impl25175);
             rule__NavigatingCommaArgCS__PrefixAssignment_0();
 
             state._fsp--;
@@ -36714,12 +36703,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12342:1: ( rule__NavigatingCommaArgCS__Group__1__Impl rule__NavigatingCommaArgCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12343:2: rule__NavigatingCommaArgCS__Group__1__Impl rule__NavigatingCommaArgCS__Group__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group__1__Impl_in_rule__NavigatingCommaArgCS__Group__125206);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group__1__Impl_in_rule__NavigatingCommaArgCS__Group__125205);
             rule__NavigatingCommaArgCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group__2_in_rule__NavigatingCommaArgCS__Group__125209);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group__2_in_rule__NavigatingCommaArgCS__Group__125208);
             rule__NavigatingCommaArgCS__Group__2();
 
             state._fsp--;
@@ -36761,7 +36750,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12357:1: ( rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12357:2: rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1_in_rule__NavigatingCommaArgCS__Group__1__Impl25236);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1_in_rule__NavigatingCommaArgCS__Group__1__Impl25235);
             rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1();
 
             state._fsp--;
@@ -36803,7 +36792,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12371:1: ( rule__NavigatingCommaArgCS__Group__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12372:2: rule__NavigatingCommaArgCS__Group__2__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group__2__Impl_in_rule__NavigatingCommaArgCS__Group__225266);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group__2__Impl_in_rule__NavigatingCommaArgCS__Group__225265);
             rule__NavigatingCommaArgCS__Group__2__Impl();
 
             state._fsp--;
@@ -36843,17 +36832,17 @@
                before(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12385:1: ( rule__NavigatingCommaArgCS__Alternatives_2 )?
-            int alt111=2;
-            int LA111_0 = input.LA(1);
+            int alt110=2;
+            int LA110_0 = input.LA(1);
 
-            if ( (LA111_0==60||LA111_0==82) ) {
-                alt111=1;
+            if ( (LA110_0==60||LA110_0==82) ) {
+                alt110=1;
             }
-            switch (alt111) {
+            switch (alt110) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12385:2: rule__NavigatingCommaArgCS__Alternatives_2
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Alternatives_2_in_rule__NavigatingCommaArgCS__Group__2__Impl25293);
+                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Alternatives_2_in_rule__NavigatingCommaArgCS__Group__2__Impl25292);
                     rule__NavigatingCommaArgCS__Alternatives_2();
 
                     state._fsp--;
@@ -36898,12 +36887,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12405:1: ( rule__NavigatingCommaArgCS__Group_2_0__0__Impl rule__NavigatingCommaArgCS__Group_2_0__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12406:2: rule__NavigatingCommaArgCS__Group_2_0__0__Impl rule__NavigatingCommaArgCS__Group_2_0__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__0__Impl_in_rule__NavigatingCommaArgCS__Group_2_0__025330);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__0__Impl_in_rule__NavigatingCommaArgCS__Group_2_0__025329);
             rule__NavigatingCommaArgCS__Group_2_0__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__1_in_rule__NavigatingCommaArgCS__Group_2_0__025333);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__1_in_rule__NavigatingCommaArgCS__Group_2_0__025332);
             rule__NavigatingCommaArgCS__Group_2_0__1();
 
             state._fsp--;
@@ -36942,7 +36931,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); 
             }
-            match(input,60,FollowSets001.FOLLOW_60_in_rule__NavigatingCommaArgCS__Group_2_0__0__Impl25361); if (state.failed) return ;
+            match(input,60,FollowSets001.FOLLOW_60_in_rule__NavigatingCommaArgCS__Group_2_0__0__Impl25360); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); 
             }
@@ -36977,12 +36966,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12436:1: ( rule__NavigatingCommaArgCS__Group_2_0__1__Impl rule__NavigatingCommaArgCS__Group_2_0__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12437:2: rule__NavigatingCommaArgCS__Group_2_0__1__Impl rule__NavigatingCommaArgCS__Group_2_0__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__1__Impl_in_rule__NavigatingCommaArgCS__Group_2_0__125392);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__1__Impl_in_rule__NavigatingCommaArgCS__Group_2_0__125391);
             rule__NavigatingCommaArgCS__Group_2_0__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__2_in_rule__NavigatingCommaArgCS__Group_2_0__125395);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__2_in_rule__NavigatingCommaArgCS__Group_2_0__125394);
             rule__NavigatingCommaArgCS__Group_2_0__2();
 
             state._fsp--;
@@ -37024,7 +37013,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12451:1: ( rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12451:2: rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1_in_rule__NavigatingCommaArgCS__Group_2_0__1__Impl25422);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1_in_rule__NavigatingCommaArgCS__Group_2_0__1__Impl25421);
             rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1();
 
             state._fsp--;
@@ -37066,7 +37055,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12465:1: ( rule__NavigatingCommaArgCS__Group_2_0__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12466:2: rule__NavigatingCommaArgCS__Group_2_0__2__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__2__Impl_in_rule__NavigatingCommaArgCS__Group_2_0__225452);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__2__Impl_in_rule__NavigatingCommaArgCS__Group_2_0__225451);
             rule__NavigatingCommaArgCS__Group_2_0__2__Impl();
 
             state._fsp--;
@@ -37106,17 +37095,17 @@
                before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12479:1: ( rule__NavigatingCommaArgCS__Group_2_0_2__0 )?
-            int alt112=2;
-            int LA112_0 = input.LA(1);
+            int alt111=2;
+            int LA111_0 = input.LA(1);
 
-            if ( (LA112_0==41) ) {
-                alt112=1;
+            if ( (LA111_0==41) ) {
+                alt111=1;
             }
-            switch (alt112) {
+            switch (alt111) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12479:2: rule__NavigatingCommaArgCS__Group_2_0_2__0
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__0_in_rule__NavigatingCommaArgCS__Group_2_0__2__Impl25479);
+                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__0_in_rule__NavigatingCommaArgCS__Group_2_0__2__Impl25478);
                     rule__NavigatingCommaArgCS__Group_2_0_2__0();
 
                     state._fsp--;
@@ -37161,12 +37150,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12499:1: ( rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl rule__NavigatingCommaArgCS__Group_2_0_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12500:2: rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl rule__NavigatingCommaArgCS__Group_2_0_2__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl_in_rule__NavigatingCommaArgCS__Group_2_0_2__025516);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl_in_rule__NavigatingCommaArgCS__Group_2_0_2__025515);
             rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__1_in_rule__NavigatingCommaArgCS__Group_2_0_2__025519);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__1_in_rule__NavigatingCommaArgCS__Group_2_0_2__025518);
             rule__NavigatingCommaArgCS__Group_2_0_2__1();
 
             state._fsp--;
@@ -37205,7 +37194,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); 
             }
-            match(input,41,FollowSets001.FOLLOW_41_in_rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl25547); if (state.failed) return ;
+            match(input,41,FollowSets001.FOLLOW_41_in_rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl25546); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); 
             }
@@ -37240,7 +37229,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12530:1: ( rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12531:2: rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl_in_rule__NavigatingCommaArgCS__Group_2_0_2__125578);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl_in_rule__NavigatingCommaArgCS__Group_2_0_2__125577);
             rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl();
 
             state._fsp--;
@@ -37282,7 +37271,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12544:1: ( rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12544:2: rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1_in_rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl25605);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1_in_rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl25604);
             rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1();
 
             state._fsp--;
@@ -37324,12 +37313,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12562:1: ( rule__NavigatingCommaArgCS__Group_2_1__0__Impl rule__NavigatingCommaArgCS__Group_2_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12563:2: rule__NavigatingCommaArgCS__Group_2_1__0__Impl rule__NavigatingCommaArgCS__Group_2_1__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_1__0__Impl_in_rule__NavigatingCommaArgCS__Group_2_1__025639);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_1__0__Impl_in_rule__NavigatingCommaArgCS__Group_2_1__025638);
             rule__NavigatingCommaArgCS__Group_2_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_1__1_in_rule__NavigatingCommaArgCS__Group_2_1__025642);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_1__1_in_rule__NavigatingCommaArgCS__Group_2_1__025641);
             rule__NavigatingCommaArgCS__Group_2_1__1();
 
             state._fsp--;
@@ -37368,7 +37357,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); 
             }
-            match(input,82,FollowSets001.FOLLOW_82_in_rule__NavigatingCommaArgCS__Group_2_1__0__Impl25670); if (state.failed) return ;
+            match(input,82,FollowSets001.FOLLOW_82_in_rule__NavigatingCommaArgCS__Group_2_1__0__Impl25669); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); 
             }
@@ -37403,7 +37392,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12593:1: ( rule__NavigatingCommaArgCS__Group_2_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12594:2: rule__NavigatingCommaArgCS__Group_2_1__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_1__1__Impl_in_rule__NavigatingCommaArgCS__Group_2_1__125701);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__Group_2_1__1__Impl_in_rule__NavigatingCommaArgCS__Group_2_1__125700);
             rule__NavigatingCommaArgCS__Group_2_1__1__Impl();
 
             state._fsp--;
@@ -37445,7 +37434,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12607:1: ( rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12607:2: rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1_in_rule__NavigatingCommaArgCS__Group_2_1__1__Impl25728);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1_in_rule__NavigatingCommaArgCS__Group_2_1__1__Impl25727);
             rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1();
 
             state._fsp--;
@@ -37487,12 +37476,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12625:1: ( rule__NavigatingSemiArgCS__Group__0__Impl rule__NavigatingSemiArgCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12626:2: rule__NavigatingSemiArgCS__Group__0__Impl rule__NavigatingSemiArgCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group__0__Impl_in_rule__NavigatingSemiArgCS__Group__025762);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group__0__Impl_in_rule__NavigatingSemiArgCS__Group__025761);
             rule__NavigatingSemiArgCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group__1_in_rule__NavigatingSemiArgCS__Group__025765);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group__1_in_rule__NavigatingSemiArgCS__Group__025764);
             rule__NavigatingSemiArgCS__Group__1();
 
             state._fsp--;
@@ -37534,7 +37523,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12640:1: ( rule__NavigatingSemiArgCS__PrefixAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12640:2: rule__NavigatingSemiArgCS__PrefixAssignment_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__PrefixAssignment_0_in_rule__NavigatingSemiArgCS__Group__0__Impl25792);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__PrefixAssignment_0_in_rule__NavigatingSemiArgCS__Group__0__Impl25791);
             rule__NavigatingSemiArgCS__PrefixAssignment_0();
 
             state._fsp--;
@@ -37576,12 +37565,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12654:1: ( rule__NavigatingSemiArgCS__Group__1__Impl rule__NavigatingSemiArgCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12655:2: rule__NavigatingSemiArgCS__Group__1__Impl rule__NavigatingSemiArgCS__Group__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group__1__Impl_in_rule__NavigatingSemiArgCS__Group__125822);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group__1__Impl_in_rule__NavigatingSemiArgCS__Group__125821);
             rule__NavigatingSemiArgCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group__2_in_rule__NavigatingSemiArgCS__Group__125825);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group__2_in_rule__NavigatingSemiArgCS__Group__125824);
             rule__NavigatingSemiArgCS__Group__2();
 
             state._fsp--;
@@ -37623,7 +37612,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12669:1: ( rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12669:2: rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1_in_rule__NavigatingSemiArgCS__Group__1__Impl25852);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1_in_rule__NavigatingSemiArgCS__Group__1__Impl25851);
             rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1();
 
             state._fsp--;
@@ -37665,7 +37654,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12683:1: ( rule__NavigatingSemiArgCS__Group__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12684:2: rule__NavigatingSemiArgCS__Group__2__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group__2__Impl_in_rule__NavigatingSemiArgCS__Group__225882);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group__2__Impl_in_rule__NavigatingSemiArgCS__Group__225881);
             rule__NavigatingSemiArgCS__Group__2__Impl();
 
             state._fsp--;
@@ -37705,17 +37694,17 @@
                before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12697:1: ( rule__NavigatingSemiArgCS__Group_2__0 )?
-            int alt113=2;
-            int LA113_0 = input.LA(1);
+            int alt112=2;
+            int LA112_0 = input.LA(1);
 
-            if ( (LA113_0==60) ) {
-                alt113=1;
+            if ( (LA112_0==60) ) {
+                alt112=1;
             }
-            switch (alt113) {
+            switch (alt112) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12697:2: rule__NavigatingSemiArgCS__Group_2__0
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2__0_in_rule__NavigatingSemiArgCS__Group__2__Impl25909);
+                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2__0_in_rule__NavigatingSemiArgCS__Group__2__Impl25908);
                     rule__NavigatingSemiArgCS__Group_2__0();
 
                     state._fsp--;
@@ -37760,12 +37749,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12717:1: ( rule__NavigatingSemiArgCS__Group_2__0__Impl rule__NavigatingSemiArgCS__Group_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12718:2: rule__NavigatingSemiArgCS__Group_2__0__Impl rule__NavigatingSemiArgCS__Group_2__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2__0__Impl_in_rule__NavigatingSemiArgCS__Group_2__025946);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2__0__Impl_in_rule__NavigatingSemiArgCS__Group_2__025945);
             rule__NavigatingSemiArgCS__Group_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2__1_in_rule__NavigatingSemiArgCS__Group_2__025949);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2__1_in_rule__NavigatingSemiArgCS__Group_2__025948);
             rule__NavigatingSemiArgCS__Group_2__1();
 
             state._fsp--;
@@ -37804,7 +37793,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); 
             }
-            match(input,60,FollowSets001.FOLLOW_60_in_rule__NavigatingSemiArgCS__Group_2__0__Impl25977); if (state.failed) return ;
+            match(input,60,FollowSets001.FOLLOW_60_in_rule__NavigatingSemiArgCS__Group_2__0__Impl25976); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); 
             }
@@ -37839,12 +37828,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12748:1: ( rule__NavigatingSemiArgCS__Group_2__1__Impl rule__NavigatingSemiArgCS__Group_2__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12749:2: rule__NavigatingSemiArgCS__Group_2__1__Impl rule__NavigatingSemiArgCS__Group_2__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2__1__Impl_in_rule__NavigatingSemiArgCS__Group_2__126008);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2__1__Impl_in_rule__NavigatingSemiArgCS__Group_2__126007);
             rule__NavigatingSemiArgCS__Group_2__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2__2_in_rule__NavigatingSemiArgCS__Group_2__126011);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2__2_in_rule__NavigatingSemiArgCS__Group_2__126010);
             rule__NavigatingSemiArgCS__Group_2__2();
 
             state._fsp--;
@@ -37886,7 +37875,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12763:1: ( rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12763:2: rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1_in_rule__NavigatingSemiArgCS__Group_2__1__Impl26038);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1_in_rule__NavigatingSemiArgCS__Group_2__1__Impl26037);
             rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1();
 
             state._fsp--;
@@ -37928,7 +37917,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12777:1: ( rule__NavigatingSemiArgCS__Group_2__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12778:2: rule__NavigatingSemiArgCS__Group_2__2__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2__2__Impl_in_rule__NavigatingSemiArgCS__Group_2__226068);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2__2__Impl_in_rule__NavigatingSemiArgCS__Group_2__226067);
             rule__NavigatingSemiArgCS__Group_2__2__Impl();
 
             state._fsp--;
@@ -37968,17 +37957,17 @@
                before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12791:1: ( rule__NavigatingSemiArgCS__Group_2_2__0 )?
-            int alt114=2;
-            int LA114_0 = input.LA(1);
+            int alt113=2;
+            int LA113_0 = input.LA(1);
 
-            if ( (LA114_0==41) ) {
-                alt114=1;
+            if ( (LA113_0==41) ) {
+                alt113=1;
             }
-            switch (alt114) {
+            switch (alt113) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12791:2: rule__NavigatingSemiArgCS__Group_2_2__0
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__0_in_rule__NavigatingSemiArgCS__Group_2__2__Impl26095);
+                    pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__0_in_rule__NavigatingSemiArgCS__Group_2__2__Impl26094);
                     rule__NavigatingSemiArgCS__Group_2_2__0();
 
                     state._fsp--;
@@ -38023,12 +38012,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12811:1: ( rule__NavigatingSemiArgCS__Group_2_2__0__Impl rule__NavigatingSemiArgCS__Group_2_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12812:2: rule__NavigatingSemiArgCS__Group_2_2__0__Impl rule__NavigatingSemiArgCS__Group_2_2__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__0__Impl_in_rule__NavigatingSemiArgCS__Group_2_2__026132);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__0__Impl_in_rule__NavigatingSemiArgCS__Group_2_2__026131);
             rule__NavigatingSemiArgCS__Group_2_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__1_in_rule__NavigatingSemiArgCS__Group_2_2__026135);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__1_in_rule__NavigatingSemiArgCS__Group_2_2__026134);
             rule__NavigatingSemiArgCS__Group_2_2__1();
 
             state._fsp--;
@@ -38067,7 +38056,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); 
             }
-            match(input,41,FollowSets001.FOLLOW_41_in_rule__NavigatingSemiArgCS__Group_2_2__0__Impl26163); if (state.failed) return ;
+            match(input,41,FollowSets001.FOLLOW_41_in_rule__NavigatingSemiArgCS__Group_2_2__0__Impl26162); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); 
             }
@@ -38102,7 +38091,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12842:1: ( rule__NavigatingSemiArgCS__Group_2_2__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12843:2: rule__NavigatingSemiArgCS__Group_2_2__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__1__Impl_in_rule__NavigatingSemiArgCS__Group_2_2__126194);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__1__Impl_in_rule__NavigatingSemiArgCS__Group_2_2__126193);
             rule__NavigatingSemiArgCS__Group_2_2__1__Impl();
 
             state._fsp--;
@@ -38144,7 +38133,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12856:1: ( rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12856:2: rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1_in_rule__NavigatingSemiArgCS__Group_2_2__1__Impl26221);
+            pushFollow(FollowSets001.FOLLOW_rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1_in_rule__NavigatingSemiArgCS__Group_2_2__1__Impl26220);
             rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1();
 
             state._fsp--;
@@ -38186,12 +38175,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12874:1: ( rule__IfExpCS__Group__0__Impl rule__IfExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12875:2: rule__IfExpCS__Group__0__Impl rule__IfExpCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__0__Impl_in_rule__IfExpCS__Group__026255);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__0__Impl_in_rule__IfExpCS__Group__026254);
             rule__IfExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__1_in_rule__IfExpCS__Group__026258);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__1_in_rule__IfExpCS__Group__026257);
             rule__IfExpCS__Group__1();
 
             state._fsp--;
@@ -38230,7 +38219,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); 
             }
-            match(input,83,FollowSets001.FOLLOW_83_in_rule__IfExpCS__Group__0__Impl26286); if (state.failed) return ;
+            match(input,83,FollowSets001.FOLLOW_83_in_rule__IfExpCS__Group__0__Impl26285); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); 
             }
@@ -38265,12 +38254,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12905:1: ( rule__IfExpCS__Group__1__Impl rule__IfExpCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12906:2: rule__IfExpCS__Group__1__Impl rule__IfExpCS__Group__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__1__Impl_in_rule__IfExpCS__Group__126317);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__1__Impl_in_rule__IfExpCS__Group__126316);
             rule__IfExpCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__2_in_rule__IfExpCS__Group__126320);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__2_in_rule__IfExpCS__Group__126319);
             rule__IfExpCS__Group__2();
 
             state._fsp--;
@@ -38312,7 +38301,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12920:1: ( rule__IfExpCS__OwnedConditionAssignment_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12920:2: rule__IfExpCS__OwnedConditionAssignment_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__OwnedConditionAssignment_1_in_rule__IfExpCS__Group__1__Impl26347);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__OwnedConditionAssignment_1_in_rule__IfExpCS__Group__1__Impl26346);
             rule__IfExpCS__OwnedConditionAssignment_1();
 
             state._fsp--;
@@ -38354,12 +38343,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12934:1: ( rule__IfExpCS__Group__2__Impl rule__IfExpCS__Group__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12935:2: rule__IfExpCS__Group__2__Impl rule__IfExpCS__Group__3
             {
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__2__Impl_in_rule__IfExpCS__Group__226377);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__2__Impl_in_rule__IfExpCS__Group__226376);
             rule__IfExpCS__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__3_in_rule__IfExpCS__Group__226380);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__3_in_rule__IfExpCS__Group__226379);
             rule__IfExpCS__Group__3();
 
             state._fsp--;
@@ -38398,7 +38387,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); 
             }
-            match(input,84,FollowSets001.FOLLOW_84_in_rule__IfExpCS__Group__2__Impl26408); if (state.failed) return ;
+            match(input,84,FollowSets001.FOLLOW_84_in_rule__IfExpCS__Group__2__Impl26407); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); 
             }
@@ -38433,12 +38422,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12965:1: ( rule__IfExpCS__Group__3__Impl rule__IfExpCS__Group__4 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12966:2: rule__IfExpCS__Group__3__Impl rule__IfExpCS__Group__4
             {
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__3__Impl_in_rule__IfExpCS__Group__326439);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__3__Impl_in_rule__IfExpCS__Group__326438);
             rule__IfExpCS__Group__3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__4_in_rule__IfExpCS__Group__326442);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__4_in_rule__IfExpCS__Group__326441);
             rule__IfExpCS__Group__4();
 
             state._fsp--;
@@ -38480,7 +38469,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12980:1: ( rule__IfExpCS__OwnedThenExpressionAssignment_3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12980:2: rule__IfExpCS__OwnedThenExpressionAssignment_3
             {
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__OwnedThenExpressionAssignment_3_in_rule__IfExpCS__Group__3__Impl26469);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__OwnedThenExpressionAssignment_3_in_rule__IfExpCS__Group__3__Impl26468);
             rule__IfExpCS__OwnedThenExpressionAssignment_3();
 
             state._fsp--;
@@ -38522,12 +38511,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12994:1: ( rule__IfExpCS__Group__4__Impl rule__IfExpCS__Group__5 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:12995:2: rule__IfExpCS__Group__4__Impl rule__IfExpCS__Group__5
             {
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__4__Impl_in_rule__IfExpCS__Group__426499);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__4__Impl_in_rule__IfExpCS__Group__426498);
             rule__IfExpCS__Group__4__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__5_in_rule__IfExpCS__Group__426502);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__5_in_rule__IfExpCS__Group__426501);
             rule__IfExpCS__Group__5();
 
             state._fsp--;
@@ -38567,21 +38556,21 @@
                before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13009:1: ( rule__IfExpCS__OwnedIfThenExpressionsAssignment_4 )*
-            loop115:
+            loop114:
             do {
-                int alt115=2;
-                int LA115_0 = input.LA(1);
+                int alt114=2;
+                int LA114_0 = input.LA(1);
 
-                if ( (LA115_0==87) ) {
-                    alt115=1;
+                if ( (LA114_0==87) ) {
+                    alt114=1;
                 }
 
 
-                switch (alt115) {
+                switch (alt114) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13009:2: rule__IfExpCS__OwnedIfThenExpressionsAssignment_4
             	    {
-            	    pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__OwnedIfThenExpressionsAssignment_4_in_rule__IfExpCS__Group__4__Impl26529);
+            	    pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__OwnedIfThenExpressionsAssignment_4_in_rule__IfExpCS__Group__4__Impl26528);
             	    rule__IfExpCS__OwnedIfThenExpressionsAssignment_4();
 
             	    state._fsp--;
@@ -38591,7 +38580,7 @@
             	    break;
 
             	default :
-            	    break loop115;
+            	    break loop114;
                 }
             } while (true);
 
@@ -38629,12 +38618,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13023:1: ( rule__IfExpCS__Group__5__Impl rule__IfExpCS__Group__6 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13024:2: rule__IfExpCS__Group__5__Impl rule__IfExpCS__Group__6
             {
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__5__Impl_in_rule__IfExpCS__Group__526560);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__5__Impl_in_rule__IfExpCS__Group__526559);
             rule__IfExpCS__Group__5__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__6_in_rule__IfExpCS__Group__526563);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__6_in_rule__IfExpCS__Group__526562);
             rule__IfExpCS__Group__6();
 
             state._fsp--;
@@ -38673,7 +38662,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); 
             }
-            match(input,85,FollowSets001.FOLLOW_85_in_rule__IfExpCS__Group__5__Impl26591); if (state.failed) return ;
+            match(input,85,FollowSets001.FOLLOW_85_in_rule__IfExpCS__Group__5__Impl26590); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); 
             }
@@ -38708,12 +38697,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13054:1: ( rule__IfExpCS__Group__6__Impl rule__IfExpCS__Group__7 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13055:2: rule__IfExpCS__Group__6__Impl rule__IfExpCS__Group__7
             {
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__6__Impl_in_rule__IfExpCS__Group__626622);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__6__Impl_in_rule__IfExpCS__Group__626621);
             rule__IfExpCS__Group__6__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__7_in_rule__IfExpCS__Group__626625);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__7_in_rule__IfExpCS__Group__626624);
             rule__IfExpCS__Group__7();
 
             state._fsp--;
@@ -38755,7 +38744,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13069:1: ( rule__IfExpCS__OwnedElseExpressionAssignment_6 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13069:2: rule__IfExpCS__OwnedElseExpressionAssignment_6
             {
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__OwnedElseExpressionAssignment_6_in_rule__IfExpCS__Group__6__Impl26652);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__OwnedElseExpressionAssignment_6_in_rule__IfExpCS__Group__6__Impl26651);
             rule__IfExpCS__OwnedElseExpressionAssignment_6();
 
             state._fsp--;
@@ -38797,7 +38786,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13083:1: ( rule__IfExpCS__Group__7__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13084:2: rule__IfExpCS__Group__7__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__7__Impl_in_rule__IfExpCS__Group__726682);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__Group__7__Impl_in_rule__IfExpCS__Group__726681);
             rule__IfExpCS__Group__7__Impl();
 
             state._fsp--;
@@ -38836,7 +38825,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); 
             }
-            match(input,86,FollowSets001.FOLLOW_86_in_rule__IfExpCS__Group__7__Impl26710); if (state.failed) return ;
+            match(input,86,FollowSets001.FOLLOW_86_in_rule__IfExpCS__Group__7__Impl26709); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); 
             }
@@ -38871,12 +38860,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13129:1: ( rule__ElseIfThenExpCS__Group__0__Impl rule__ElseIfThenExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13130:2: rule__ElseIfThenExpCS__Group__0__Impl rule__ElseIfThenExpCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__Group__0__Impl_in_rule__ElseIfThenExpCS__Group__026757);
+            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__Group__0__Impl_in_rule__ElseIfThenExpCS__Group__026756);
             rule__ElseIfThenExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__Group__1_in_rule__ElseIfThenExpCS__Group__026760);
+            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__Group__1_in_rule__ElseIfThenExpCS__Group__026759);
             rule__ElseIfThenExpCS__Group__1();
 
             state._fsp--;
@@ -38915,7 +38904,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); 
             }
-            match(input,87,FollowSets001.FOLLOW_87_in_rule__ElseIfThenExpCS__Group__0__Impl26788); if (state.failed) return ;
+            match(input,87,FollowSets001.FOLLOW_87_in_rule__ElseIfThenExpCS__Group__0__Impl26787); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); 
             }
@@ -38950,12 +38939,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13160:1: ( rule__ElseIfThenExpCS__Group__1__Impl rule__ElseIfThenExpCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13161:2: rule__ElseIfThenExpCS__Group__1__Impl rule__ElseIfThenExpCS__Group__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__Group__1__Impl_in_rule__ElseIfThenExpCS__Group__126819);
+            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__Group__1__Impl_in_rule__ElseIfThenExpCS__Group__126818);
             rule__ElseIfThenExpCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__Group__2_in_rule__ElseIfThenExpCS__Group__126822);
+            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__Group__2_in_rule__ElseIfThenExpCS__Group__126821);
             rule__ElseIfThenExpCS__Group__2();
 
             state._fsp--;
@@ -38997,7 +38986,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13175:1: ( rule__ElseIfThenExpCS__OwnedConditionAssignment_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13175:2: rule__ElseIfThenExpCS__OwnedConditionAssignment_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__OwnedConditionAssignment_1_in_rule__ElseIfThenExpCS__Group__1__Impl26849);
+            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__OwnedConditionAssignment_1_in_rule__ElseIfThenExpCS__Group__1__Impl26848);
             rule__ElseIfThenExpCS__OwnedConditionAssignment_1();
 
             state._fsp--;
@@ -39039,12 +39028,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13189:1: ( rule__ElseIfThenExpCS__Group__2__Impl rule__ElseIfThenExpCS__Group__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13190:2: rule__ElseIfThenExpCS__Group__2__Impl rule__ElseIfThenExpCS__Group__3
             {
-            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__Group__2__Impl_in_rule__ElseIfThenExpCS__Group__226879);
+            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__Group__2__Impl_in_rule__ElseIfThenExpCS__Group__226878);
             rule__ElseIfThenExpCS__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__Group__3_in_rule__ElseIfThenExpCS__Group__226882);
+            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__Group__3_in_rule__ElseIfThenExpCS__Group__226881);
             rule__ElseIfThenExpCS__Group__3();
 
             state._fsp--;
@@ -39083,7 +39072,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); 
             }
-            match(input,84,FollowSets001.FOLLOW_84_in_rule__ElseIfThenExpCS__Group__2__Impl26910); if (state.failed) return ;
+            match(input,84,FollowSets001.FOLLOW_84_in_rule__ElseIfThenExpCS__Group__2__Impl26909); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); 
             }
@@ -39118,7 +39107,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13220:1: ( rule__ElseIfThenExpCS__Group__3__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13221:2: rule__ElseIfThenExpCS__Group__3__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__Group__3__Impl_in_rule__ElseIfThenExpCS__Group__326941);
+            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__Group__3__Impl_in_rule__ElseIfThenExpCS__Group__326940);
             rule__ElseIfThenExpCS__Group__3__Impl();
 
             state._fsp--;
@@ -39160,7 +39149,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13234:1: ( rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13234:2: rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3
             {
-            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3_in_rule__ElseIfThenExpCS__Group__3__Impl26968);
+            pushFollow(FollowSets001.FOLLOW_rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3_in_rule__ElseIfThenExpCS__Group__3__Impl26967);
             rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3();
 
             state._fsp--;
@@ -39202,12 +39191,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13256:1: ( rule__LetExpCS__Group__0__Impl rule__LetExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13257:2: rule__LetExpCS__Group__0__Impl rule__LetExpCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__0__Impl_in_rule__LetExpCS__Group__027006);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__0__Impl_in_rule__LetExpCS__Group__027005);
             rule__LetExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__1_in_rule__LetExpCS__Group__027009);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__1_in_rule__LetExpCS__Group__027008);
             rule__LetExpCS__Group__1();
 
             state._fsp--;
@@ -39246,7 +39235,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); 
             }
-            match(input,88,FollowSets001.FOLLOW_88_in_rule__LetExpCS__Group__0__Impl27037); if (state.failed) return ;
+            match(input,88,FollowSets001.FOLLOW_88_in_rule__LetExpCS__Group__0__Impl27036); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); 
             }
@@ -39281,12 +39270,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13287:1: ( rule__LetExpCS__Group__1__Impl rule__LetExpCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13288:2: rule__LetExpCS__Group__1__Impl rule__LetExpCS__Group__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__1__Impl_in_rule__LetExpCS__Group__127068);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__1__Impl_in_rule__LetExpCS__Group__127067);
             rule__LetExpCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__2_in_rule__LetExpCS__Group__127071);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__2_in_rule__LetExpCS__Group__127070);
             rule__LetExpCS__Group__2();
 
             state._fsp--;
@@ -39328,7 +39317,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13302:1: ( rule__LetExpCS__OwnedVariablesAssignment_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13302:2: rule__LetExpCS__OwnedVariablesAssignment_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__OwnedVariablesAssignment_1_in_rule__LetExpCS__Group__1__Impl27098);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__OwnedVariablesAssignment_1_in_rule__LetExpCS__Group__1__Impl27097);
             rule__LetExpCS__OwnedVariablesAssignment_1();
 
             state._fsp--;
@@ -39370,12 +39359,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13316:1: ( rule__LetExpCS__Group__2__Impl rule__LetExpCS__Group__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13317:2: rule__LetExpCS__Group__2__Impl rule__LetExpCS__Group__3
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__2__Impl_in_rule__LetExpCS__Group__227128);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__2__Impl_in_rule__LetExpCS__Group__227127);
             rule__LetExpCS__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__3_in_rule__LetExpCS__Group__227131);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__3_in_rule__LetExpCS__Group__227130);
             rule__LetExpCS__Group__3();
 
             state._fsp--;
@@ -39415,21 +39404,21 @@
                before(grammarAccess.getLetExpCSAccess().getGroup_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13331:1: ( rule__LetExpCS__Group_2__0 )*
-            loop116:
+            loop115:
             do {
-                int alt116=2;
-                int LA116_0 = input.LA(1);
+                int alt115=2;
+                int LA115_0 = input.LA(1);
 
-                if ( (LA116_0==64) ) {
-                    alt116=1;
+                if ( (LA115_0==64) ) {
+                    alt115=1;
                 }
 
 
-                switch (alt116) {
+                switch (alt115) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13331:2: rule__LetExpCS__Group_2__0
             	    {
-            	    pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group_2__0_in_rule__LetExpCS__Group__2__Impl27158);
+            	    pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group_2__0_in_rule__LetExpCS__Group__2__Impl27157);
             	    rule__LetExpCS__Group_2__0();
 
             	    state._fsp--;
@@ -39439,7 +39428,7 @@
             	    break;
 
             	default :
-            	    break loop116;
+            	    break loop115;
                 }
             } while (true);
 
@@ -39477,12 +39466,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13345:1: ( rule__LetExpCS__Group__3__Impl rule__LetExpCS__Group__4 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13346:2: rule__LetExpCS__Group__3__Impl rule__LetExpCS__Group__4
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__3__Impl_in_rule__LetExpCS__Group__327189);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__3__Impl_in_rule__LetExpCS__Group__327188);
             rule__LetExpCS__Group__3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__4_in_rule__LetExpCS__Group__327192);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__4_in_rule__LetExpCS__Group__327191);
             rule__LetExpCS__Group__4();
 
             state._fsp--;
@@ -39521,7 +39510,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLetExpCSAccess().getInKeyword_3()); 
             }
-            match(input,82,FollowSets001.FOLLOW_82_in_rule__LetExpCS__Group__3__Impl27220); if (state.failed) return ;
+            match(input,82,FollowSets001.FOLLOW_82_in_rule__LetExpCS__Group__3__Impl27219); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getLetExpCSAccess().getInKeyword_3()); 
             }
@@ -39556,7 +39545,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13376:1: ( rule__LetExpCS__Group__4__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13377:2: rule__LetExpCS__Group__4__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__4__Impl_in_rule__LetExpCS__Group__427251);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group__4__Impl_in_rule__LetExpCS__Group__427250);
             rule__LetExpCS__Group__4__Impl();
 
             state._fsp--;
@@ -39598,7 +39587,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13390:1: ( rule__LetExpCS__OwnedInExpressionAssignment_4 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13390:2: rule__LetExpCS__OwnedInExpressionAssignment_4
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__OwnedInExpressionAssignment_4_in_rule__LetExpCS__Group__4__Impl27278);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__OwnedInExpressionAssignment_4_in_rule__LetExpCS__Group__4__Impl27277);
             rule__LetExpCS__OwnedInExpressionAssignment_4();
 
             state._fsp--;
@@ -39640,12 +39629,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13414:1: ( rule__LetExpCS__Group_2__0__Impl rule__LetExpCS__Group_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13415:2: rule__LetExpCS__Group_2__0__Impl rule__LetExpCS__Group_2__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group_2__0__Impl_in_rule__LetExpCS__Group_2__027318);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group_2__0__Impl_in_rule__LetExpCS__Group_2__027317);
             rule__LetExpCS__Group_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group_2__1_in_rule__LetExpCS__Group_2__027321);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group_2__1_in_rule__LetExpCS__Group_2__027320);
             rule__LetExpCS__Group_2__1();
 
             state._fsp--;
@@ -39684,7 +39673,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); 
             }
-            match(input,64,FollowSets001.FOLLOW_64_in_rule__LetExpCS__Group_2__0__Impl27349); if (state.failed) return ;
+            match(input,64,FollowSets001.FOLLOW_64_in_rule__LetExpCS__Group_2__0__Impl27348); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); 
             }
@@ -39719,7 +39708,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13445:1: ( rule__LetExpCS__Group_2__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13446:2: rule__LetExpCS__Group_2__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group_2__1__Impl_in_rule__LetExpCS__Group_2__127380);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__Group_2__1__Impl_in_rule__LetExpCS__Group_2__127379);
             rule__LetExpCS__Group_2__1__Impl();
 
             state._fsp--;
@@ -39761,7 +39750,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13459:1: ( rule__LetExpCS__OwnedVariablesAssignment_2_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13459:2: rule__LetExpCS__OwnedVariablesAssignment_2_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__OwnedVariablesAssignment_2_1_in_rule__LetExpCS__Group_2__1__Impl27407);
+            pushFollow(FollowSets001.FOLLOW_rule__LetExpCS__OwnedVariablesAssignment_2_1_in_rule__LetExpCS__Group_2__1__Impl27406);
             rule__LetExpCS__OwnedVariablesAssignment_2_1();
 
             state._fsp--;
@@ -39803,12 +39792,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13477:1: ( rule__LetVariableCS__Group__0__Impl rule__LetVariableCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13478:2: rule__LetVariableCS__Group__0__Impl rule__LetVariableCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__0__Impl_in_rule__LetVariableCS__Group__027441);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__0__Impl_in_rule__LetVariableCS__Group__027440);
             rule__LetVariableCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__1_in_rule__LetVariableCS__Group__027444);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__1_in_rule__LetVariableCS__Group__027443);
             rule__LetVariableCS__Group__1();
 
             state._fsp--;
@@ -39850,7 +39839,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13492:1: ( rule__LetVariableCS__NameAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13492:2: rule__LetVariableCS__NameAssignment_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__NameAssignment_0_in_rule__LetVariableCS__Group__0__Impl27471);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__NameAssignment_0_in_rule__LetVariableCS__Group__0__Impl27470);
             rule__LetVariableCS__NameAssignment_0();
 
             state._fsp--;
@@ -39892,12 +39881,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13506:1: ( rule__LetVariableCS__Group__1__Impl rule__LetVariableCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13507:2: rule__LetVariableCS__Group__1__Impl rule__LetVariableCS__Group__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__1__Impl_in_rule__LetVariableCS__Group__127501);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__1__Impl_in_rule__LetVariableCS__Group__127500);
             rule__LetVariableCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__2_in_rule__LetVariableCS__Group__127504);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__2_in_rule__LetVariableCS__Group__127503);
             rule__LetVariableCS__Group__2();
 
             state._fsp--;
@@ -39937,17 +39926,17 @@
                before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13521:1: ( rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1 )?
-            int alt117=2;
-            int LA117_0 = input.LA(1);
+            int alt116=2;
+            int LA116_0 = input.LA(1);
 
-            if ( (LA117_0==61) ) {
-                alt117=1;
+            if ( (LA116_0==61) ) {
+                alt116=1;
             }
-            switch (alt117) {
+            switch (alt116) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13521:2: rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1_in_rule__LetVariableCS__Group__1__Impl27531);
+                    pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1_in_rule__LetVariableCS__Group__1__Impl27530);
                     rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1();
 
                     state._fsp--;
@@ -39992,12 +39981,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13535:1: ( rule__LetVariableCS__Group__2__Impl rule__LetVariableCS__Group__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13536:2: rule__LetVariableCS__Group__2__Impl rule__LetVariableCS__Group__3
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__2__Impl_in_rule__LetVariableCS__Group__227562);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__2__Impl_in_rule__LetVariableCS__Group__227561);
             rule__LetVariableCS__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__3_in_rule__LetVariableCS__Group__227565);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__3_in_rule__LetVariableCS__Group__227564);
             rule__LetVariableCS__Group__3();
 
             state._fsp--;
@@ -40037,17 +40026,17 @@
                before(grammarAccess.getLetVariableCSAccess().getGroup_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13550:1: ( rule__LetVariableCS__Group_2__0 )?
-            int alt118=2;
-            int LA118_0 = input.LA(1);
+            int alt117=2;
+            int LA117_0 = input.LA(1);
 
-            if ( (LA118_0==60) ) {
-                alt118=1;
+            if ( (LA117_0==60) ) {
+                alt117=1;
             }
-            switch (alt118) {
+            switch (alt117) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13550:2: rule__LetVariableCS__Group_2__0
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group_2__0_in_rule__LetVariableCS__Group__2__Impl27592);
+                    pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group_2__0_in_rule__LetVariableCS__Group__2__Impl27591);
                     rule__LetVariableCS__Group_2__0();
 
                     state._fsp--;
@@ -40092,12 +40081,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13564:1: ( rule__LetVariableCS__Group__3__Impl rule__LetVariableCS__Group__4 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13565:2: rule__LetVariableCS__Group__3__Impl rule__LetVariableCS__Group__4
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__3__Impl_in_rule__LetVariableCS__Group__327623);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__3__Impl_in_rule__LetVariableCS__Group__327622);
             rule__LetVariableCS__Group__3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__4_in_rule__LetVariableCS__Group__327626);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__4_in_rule__LetVariableCS__Group__327625);
             rule__LetVariableCS__Group__4();
 
             state._fsp--;
@@ -40136,7 +40125,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); 
             }
-            match(input,41,FollowSets001.FOLLOW_41_in_rule__LetVariableCS__Group__3__Impl27654); if (state.failed) return ;
+            match(input,41,FollowSets001.FOLLOW_41_in_rule__LetVariableCS__Group__3__Impl27653); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); 
             }
@@ -40171,7 +40160,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13595:1: ( rule__LetVariableCS__Group__4__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13596:2: rule__LetVariableCS__Group__4__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__4__Impl_in_rule__LetVariableCS__Group__427685);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group__4__Impl_in_rule__LetVariableCS__Group__427684);
             rule__LetVariableCS__Group__4__Impl();
 
             state._fsp--;
@@ -40213,7 +40202,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13609:1: ( rule__LetVariableCS__OwnedInitExpressionAssignment_4 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13609:2: rule__LetVariableCS__OwnedInitExpressionAssignment_4
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__OwnedInitExpressionAssignment_4_in_rule__LetVariableCS__Group__4__Impl27712);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__OwnedInitExpressionAssignment_4_in_rule__LetVariableCS__Group__4__Impl27711);
             rule__LetVariableCS__OwnedInitExpressionAssignment_4();
 
             state._fsp--;
@@ -40255,12 +40244,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13633:1: ( rule__LetVariableCS__Group_2__0__Impl rule__LetVariableCS__Group_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13634:2: rule__LetVariableCS__Group_2__0__Impl rule__LetVariableCS__Group_2__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group_2__0__Impl_in_rule__LetVariableCS__Group_2__027752);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group_2__0__Impl_in_rule__LetVariableCS__Group_2__027751);
             rule__LetVariableCS__Group_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group_2__1_in_rule__LetVariableCS__Group_2__027755);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group_2__1_in_rule__LetVariableCS__Group_2__027754);
             rule__LetVariableCS__Group_2__1();
 
             state._fsp--;
@@ -40299,7 +40288,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); 
             }
-            match(input,60,FollowSets001.FOLLOW_60_in_rule__LetVariableCS__Group_2__0__Impl27783); if (state.failed) return ;
+            match(input,60,FollowSets001.FOLLOW_60_in_rule__LetVariableCS__Group_2__0__Impl27782); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); 
             }
@@ -40334,7 +40323,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13664:1: ( rule__LetVariableCS__Group_2__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13665:2: rule__LetVariableCS__Group_2__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group_2__1__Impl_in_rule__LetVariableCS__Group_2__127814);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__Group_2__1__Impl_in_rule__LetVariableCS__Group_2__127813);
             rule__LetVariableCS__Group_2__1__Impl();
 
             state._fsp--;
@@ -40376,7 +40365,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13678:1: ( rule__LetVariableCS__OwnedTypeAssignment_2_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13678:2: rule__LetVariableCS__OwnedTypeAssignment_2_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__OwnedTypeAssignment_2_1_in_rule__LetVariableCS__Group_2__1__Impl27841);
+            pushFollow(FollowSets001.FOLLOW_rule__LetVariableCS__OwnedTypeAssignment_2_1_in_rule__LetVariableCS__Group_2__1__Impl27840);
             rule__LetVariableCS__OwnedTypeAssignment_2_1();
 
             state._fsp--;
@@ -40418,12 +40407,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13696:1: ( rule__NestedExpCS__Group__0__Impl rule__NestedExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13697:2: rule__NestedExpCS__Group__0__Impl rule__NestedExpCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NestedExpCS__Group__0__Impl_in_rule__NestedExpCS__Group__027875);
+            pushFollow(FollowSets001.FOLLOW_rule__NestedExpCS__Group__0__Impl_in_rule__NestedExpCS__Group__027874);
             rule__NestedExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NestedExpCS__Group__1_in_rule__NestedExpCS__Group__027878);
+            pushFollow(FollowSets001.FOLLOW_rule__NestedExpCS__Group__1_in_rule__NestedExpCS__Group__027877);
             rule__NestedExpCS__Group__1();
 
             state._fsp--;
@@ -40462,7 +40451,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); 
             }
-            match(input,61,FollowSets001.FOLLOW_61_in_rule__NestedExpCS__Group__0__Impl27906); if (state.failed) return ;
+            match(input,61,FollowSets001.FOLLOW_61_in_rule__NestedExpCS__Group__0__Impl27905); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); 
             }
@@ -40497,12 +40486,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13727:1: ( rule__NestedExpCS__Group__1__Impl rule__NestedExpCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13728:2: rule__NestedExpCS__Group__1__Impl rule__NestedExpCS__Group__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NestedExpCS__Group__1__Impl_in_rule__NestedExpCS__Group__127937);
+            pushFollow(FollowSets001.FOLLOW_rule__NestedExpCS__Group__1__Impl_in_rule__NestedExpCS__Group__127936);
             rule__NestedExpCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__NestedExpCS__Group__2_in_rule__NestedExpCS__Group__127940);
+            pushFollow(FollowSets001.FOLLOW_rule__NestedExpCS__Group__2_in_rule__NestedExpCS__Group__127939);
             rule__NestedExpCS__Group__2();
 
             state._fsp--;
@@ -40544,7 +40533,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13742:1: ( rule__NestedExpCS__OwnedExpressionAssignment_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13742:2: rule__NestedExpCS__OwnedExpressionAssignment_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NestedExpCS__OwnedExpressionAssignment_1_in_rule__NestedExpCS__Group__1__Impl27967);
+            pushFollow(FollowSets001.FOLLOW_rule__NestedExpCS__OwnedExpressionAssignment_1_in_rule__NestedExpCS__Group__1__Impl27966);
             rule__NestedExpCS__OwnedExpressionAssignment_1();
 
             state._fsp--;
@@ -40586,7 +40575,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13756:1: ( rule__NestedExpCS__Group__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13757:2: rule__NestedExpCS__Group__2__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__NestedExpCS__Group__2__Impl_in_rule__NestedExpCS__Group__227997);
+            pushFollow(FollowSets001.FOLLOW_rule__NestedExpCS__Group__2__Impl_in_rule__NestedExpCS__Group__227996);
             rule__NestedExpCS__Group__2__Impl();
 
             state._fsp--;
@@ -40625,7 +40614,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); 
             }
-            match(input,62,FollowSets001.FOLLOW_62_in_rule__NestedExpCS__Group__2__Impl28025); if (state.failed) return ;
+            match(input,62,FollowSets001.FOLLOW_62_in_rule__NestedExpCS__Group__2__Impl28024); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); 
             }
@@ -40660,12 +40649,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13792:1: ( rule__SelfExpCS__Group__0__Impl rule__SelfExpCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13793:2: rule__SelfExpCS__Group__0__Impl rule__SelfExpCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__SelfExpCS__Group__0__Impl_in_rule__SelfExpCS__Group__028062);
+            pushFollow(FollowSets001.FOLLOW_rule__SelfExpCS__Group__0__Impl_in_rule__SelfExpCS__Group__028061);
             rule__SelfExpCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__SelfExpCS__Group__1_in_rule__SelfExpCS__Group__028065);
+            pushFollow(FollowSets001.FOLLOW_rule__SelfExpCS__Group__1_in_rule__SelfExpCS__Group__028064);
             rule__SelfExpCS__Group__1();
 
             state._fsp--;
@@ -40739,7 +40728,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13823:1: ( rule__SelfExpCS__Group__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13824:2: rule__SelfExpCS__Group__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__SelfExpCS__Group__1__Impl_in_rule__SelfExpCS__Group__128123);
+            pushFollow(FollowSets001.FOLLOW_rule__SelfExpCS__Group__1__Impl_in_rule__SelfExpCS__Group__128122);
             rule__SelfExpCS__Group__1__Impl();
 
             state._fsp--;
@@ -40778,7 +40767,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); 
             }
-            match(input,89,FollowSets001.FOLLOW_89_in_rule__SelfExpCS__Group__1__Impl28151); if (state.failed) return ;
+            match(input,89,FollowSets001.FOLLOW_89_in_rule__SelfExpCS__Group__1__Impl28150); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); 
             }
@@ -40813,12 +40802,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13857:1: ( rule__MultiplicityBoundsCS__Group__0__Impl rule__MultiplicityBoundsCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13858:2: rule__MultiplicityBoundsCS__Group__0__Impl rule__MultiplicityBoundsCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__Group__0__Impl_in_rule__MultiplicityBoundsCS__Group__028186);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__Group__0__Impl_in_rule__MultiplicityBoundsCS__Group__028185);
             rule__MultiplicityBoundsCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__Group__1_in_rule__MultiplicityBoundsCS__Group__028189);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__Group__1_in_rule__MultiplicityBoundsCS__Group__028188);
             rule__MultiplicityBoundsCS__Group__1();
 
             state._fsp--;
@@ -40860,7 +40849,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13872:1: ( rule__MultiplicityBoundsCS__LowerBoundAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13872:2: rule__MultiplicityBoundsCS__LowerBoundAssignment_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__LowerBoundAssignment_0_in_rule__MultiplicityBoundsCS__Group__0__Impl28216);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__LowerBoundAssignment_0_in_rule__MultiplicityBoundsCS__Group__0__Impl28215);
             rule__MultiplicityBoundsCS__LowerBoundAssignment_0();
 
             state._fsp--;
@@ -40902,7 +40891,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13886:1: ( rule__MultiplicityBoundsCS__Group__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13887:2: rule__MultiplicityBoundsCS__Group__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__Group__1__Impl_in_rule__MultiplicityBoundsCS__Group__128246);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__Group__1__Impl_in_rule__MultiplicityBoundsCS__Group__128245);
             rule__MultiplicityBoundsCS__Group__1__Impl();
 
             state._fsp--;
@@ -40942,17 +40931,17 @@
                before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13900:1: ( rule__MultiplicityBoundsCS__Group_1__0 )?
-            int alt119=2;
-            int LA119_0 = input.LA(1);
+            int alt118=2;
+            int LA118_0 = input.LA(1);
 
-            if ( (LA119_0==75) ) {
-                alt119=1;
+            if ( (LA118_0==75) ) {
+                alt118=1;
             }
-            switch (alt119) {
+            switch (alt118) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13900:2: rule__MultiplicityBoundsCS__Group_1__0
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__Group_1__0_in_rule__MultiplicityBoundsCS__Group__1__Impl28273);
+                    pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__Group_1__0_in_rule__MultiplicityBoundsCS__Group__1__Impl28272);
                     rule__MultiplicityBoundsCS__Group_1__0();
 
                     state._fsp--;
@@ -40997,12 +40986,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13918:1: ( rule__MultiplicityBoundsCS__Group_1__0__Impl rule__MultiplicityBoundsCS__Group_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13919:2: rule__MultiplicityBoundsCS__Group_1__0__Impl rule__MultiplicityBoundsCS__Group_1__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__Group_1__0__Impl_in_rule__MultiplicityBoundsCS__Group_1__028308);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__Group_1__0__Impl_in_rule__MultiplicityBoundsCS__Group_1__028307);
             rule__MultiplicityBoundsCS__Group_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__Group_1__1_in_rule__MultiplicityBoundsCS__Group_1__028311);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__Group_1__1_in_rule__MultiplicityBoundsCS__Group_1__028310);
             rule__MultiplicityBoundsCS__Group_1__1();
 
             state._fsp--;
@@ -41041,7 +41030,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); 
             }
-            match(input,75,FollowSets001.FOLLOW_75_in_rule__MultiplicityBoundsCS__Group_1__0__Impl28339); if (state.failed) return ;
+            match(input,75,FollowSets001.FOLLOW_75_in_rule__MultiplicityBoundsCS__Group_1__0__Impl28338); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); 
             }
@@ -41076,7 +41065,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13949:1: ( rule__MultiplicityBoundsCS__Group_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13950:2: rule__MultiplicityBoundsCS__Group_1__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__Group_1__1__Impl_in_rule__MultiplicityBoundsCS__Group_1__128370);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__Group_1__1__Impl_in_rule__MultiplicityBoundsCS__Group_1__128369);
             rule__MultiplicityBoundsCS__Group_1__1__Impl();
 
             state._fsp--;
@@ -41118,7 +41107,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13963:1: ( rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13963:2: rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1_in_rule__MultiplicityBoundsCS__Group_1__1__Impl28397);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1_in_rule__MultiplicityBoundsCS__Group_1__1__Impl28396);
             rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1();
 
             state._fsp--;
@@ -41160,12 +41149,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13981:1: ( rule__MultiplicityCS__Group__0__Impl rule__MultiplicityCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:13982:2: rule__MultiplicityCS__Group__0__Impl rule__MultiplicityCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityCS__Group__0__Impl_in_rule__MultiplicityCS__Group__028431);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityCS__Group__0__Impl_in_rule__MultiplicityCS__Group__028430);
             rule__MultiplicityCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityCS__Group__1_in_rule__MultiplicityCS__Group__028434);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityCS__Group__1_in_rule__MultiplicityCS__Group__028433);
             rule__MultiplicityCS__Group__1();
 
             state._fsp--;
@@ -41204,7 +41193,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); 
             }
-            match(input,80,FollowSets001.FOLLOW_80_in_rule__MultiplicityCS__Group__0__Impl28462); if (state.failed) return ;
+            match(input,80,FollowSets001.FOLLOW_80_in_rule__MultiplicityCS__Group__0__Impl28461); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); 
             }
@@ -41239,12 +41228,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14012:1: ( rule__MultiplicityCS__Group__1__Impl rule__MultiplicityCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14013:2: rule__MultiplicityCS__Group__1__Impl rule__MultiplicityCS__Group__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityCS__Group__1__Impl_in_rule__MultiplicityCS__Group__128493);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityCS__Group__1__Impl_in_rule__MultiplicityCS__Group__128492);
             rule__MultiplicityCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityCS__Group__2_in_rule__MultiplicityCS__Group__128496);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityCS__Group__2_in_rule__MultiplicityCS__Group__128495);
             rule__MultiplicityCS__Group__2();
 
             state._fsp--;
@@ -41286,7 +41275,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14027:1: ( rule__MultiplicityCS__Alternatives_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14027:2: rule__MultiplicityCS__Alternatives_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityCS__Alternatives_1_in_rule__MultiplicityCS__Group__1__Impl28523);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityCS__Alternatives_1_in_rule__MultiplicityCS__Group__1__Impl28522);
             rule__MultiplicityCS__Alternatives_1();
 
             state._fsp--;
@@ -41328,7 +41317,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14041:1: ( rule__MultiplicityCS__Group__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14042:2: rule__MultiplicityCS__Group__2__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityCS__Group__2__Impl_in_rule__MultiplicityCS__Group__228553);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityCS__Group__2__Impl_in_rule__MultiplicityCS__Group__228552);
             rule__MultiplicityCS__Group__2__Impl();
 
             state._fsp--;
@@ -41367,7 +41356,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); 
             }
-            match(input,81,FollowSets001.FOLLOW_81_in_rule__MultiplicityCS__Group__2__Impl28581); if (state.failed) return ;
+            match(input,81,FollowSets001.FOLLOW_81_in_rule__MultiplicityCS__Group__2__Impl28580); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); 
             }
@@ -41402,12 +41391,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14077:1: ( rule__PathNameCS__Group__0__Impl rule__PathNameCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14078:2: rule__PathNameCS__Group__0__Impl rule__PathNameCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__Group__0__Impl_in_rule__PathNameCS__Group__028618);
+            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__Group__0__Impl_in_rule__PathNameCS__Group__028617);
             rule__PathNameCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__Group__1_in_rule__PathNameCS__Group__028621);
+            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__Group__1_in_rule__PathNameCS__Group__028620);
             rule__PathNameCS__Group__1();
 
             state._fsp--;
@@ -41449,7 +41438,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14092:1: ( rule__PathNameCS__OwnedPathElementsAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14092:2: rule__PathNameCS__OwnedPathElementsAssignment_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__OwnedPathElementsAssignment_0_in_rule__PathNameCS__Group__0__Impl28648);
+            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__OwnedPathElementsAssignment_0_in_rule__PathNameCS__Group__0__Impl28647);
             rule__PathNameCS__OwnedPathElementsAssignment_0();
 
             state._fsp--;
@@ -41491,7 +41480,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14106:1: ( rule__PathNameCS__Group__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14107:2: rule__PathNameCS__Group__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__Group__1__Impl_in_rule__PathNameCS__Group__128678);
+            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__Group__1__Impl_in_rule__PathNameCS__Group__128677);
             rule__PathNameCS__Group__1__Impl();
 
             state._fsp--;
@@ -41531,21 +41520,21 @@
                before(grammarAccess.getPathNameCSAccess().getGroup_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14120:1: ( rule__PathNameCS__Group_1__0 )*
-            loop120:
+            loop119:
             do {
-                int alt120=2;
-                int LA120_0 = input.LA(1);
+                int alt119=2;
+                int LA119_0 = input.LA(1);
 
-                if ( (LA120_0==72) ) {
-                    alt120=1;
+                if ( (LA119_0==72) ) {
+                    alt119=1;
                 }
 
 
-                switch (alt120) {
+                switch (alt119) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14120:2: rule__PathNameCS__Group_1__0
             	    {
-            	    pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__Group_1__0_in_rule__PathNameCS__Group__1__Impl28705);
+            	    pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__Group_1__0_in_rule__PathNameCS__Group__1__Impl28704);
             	    rule__PathNameCS__Group_1__0();
 
             	    state._fsp--;
@@ -41555,7 +41544,7 @@
             	    break;
 
             	default :
-            	    break loop120;
+            	    break loop119;
                 }
             } while (true);
 
@@ -41593,12 +41582,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14138:1: ( rule__PathNameCS__Group_1__0__Impl rule__PathNameCS__Group_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14139:2: rule__PathNameCS__Group_1__0__Impl rule__PathNameCS__Group_1__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__Group_1__0__Impl_in_rule__PathNameCS__Group_1__028740);
+            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__Group_1__0__Impl_in_rule__PathNameCS__Group_1__028739);
             rule__PathNameCS__Group_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__Group_1__1_in_rule__PathNameCS__Group_1__028743);
+            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__Group_1__1_in_rule__PathNameCS__Group_1__028742);
             rule__PathNameCS__Group_1__1();
 
             state._fsp--;
@@ -41637,7 +41626,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); 
             }
-            match(input,72,FollowSets001.FOLLOW_72_in_rule__PathNameCS__Group_1__0__Impl28771); if (state.failed) return ;
+            match(input,72,FollowSets001.FOLLOW_72_in_rule__PathNameCS__Group_1__0__Impl28770); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); 
             }
@@ -41672,7 +41661,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14169:1: ( rule__PathNameCS__Group_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14170:2: rule__PathNameCS__Group_1__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__Group_1__1__Impl_in_rule__PathNameCS__Group_1__128802);
+            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__Group_1__1__Impl_in_rule__PathNameCS__Group_1__128801);
             rule__PathNameCS__Group_1__1__Impl();
 
             state._fsp--;
@@ -41714,7 +41703,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14183:1: ( rule__PathNameCS__OwnedPathElementsAssignment_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14183:2: rule__PathNameCS__OwnedPathElementsAssignment_1_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__OwnedPathElementsAssignment_1_1_in_rule__PathNameCS__Group_1__1__Impl28829);
+            pushFollow(FollowSets001.FOLLOW_rule__PathNameCS__OwnedPathElementsAssignment_1_1_in_rule__PathNameCS__Group_1__1__Impl28828);
             rule__PathNameCS__OwnedPathElementsAssignment_1_1();
 
             state._fsp--;
@@ -41756,12 +41745,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14201:1: ( rule__TemplateBindingCS__Group__0__Impl rule__TemplateBindingCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14202:2: rule__TemplateBindingCS__Group__0__Impl rule__TemplateBindingCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group__0__Impl_in_rule__TemplateBindingCS__Group__028863);
+            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group__0__Impl_in_rule__TemplateBindingCS__Group__028862);
             rule__TemplateBindingCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group__1_in_rule__TemplateBindingCS__Group__028866);
+            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group__1_in_rule__TemplateBindingCS__Group__028865);
             rule__TemplateBindingCS__Group__1();
 
             state._fsp--;
@@ -41800,7 +41789,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); 
             }
-            match(input,61,FollowSets001.FOLLOW_61_in_rule__TemplateBindingCS__Group__0__Impl28894); if (state.failed) return ;
+            match(input,61,FollowSets001.FOLLOW_61_in_rule__TemplateBindingCS__Group__0__Impl28893); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); 
             }
@@ -41835,12 +41824,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14232:1: ( rule__TemplateBindingCS__Group__1__Impl rule__TemplateBindingCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14233:2: rule__TemplateBindingCS__Group__1__Impl rule__TemplateBindingCS__Group__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group__1__Impl_in_rule__TemplateBindingCS__Group__128925);
+            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group__1__Impl_in_rule__TemplateBindingCS__Group__128924);
             rule__TemplateBindingCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group__2_in_rule__TemplateBindingCS__Group__128928);
+            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group__2_in_rule__TemplateBindingCS__Group__128927);
             rule__TemplateBindingCS__Group__2();
 
             state._fsp--;
@@ -41882,7 +41871,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14247:1: ( rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14247:2: rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1_in_rule__TemplateBindingCS__Group__1__Impl28955);
+            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1_in_rule__TemplateBindingCS__Group__1__Impl28954);
             rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1();
 
             state._fsp--;
@@ -41924,12 +41913,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14261:1: ( rule__TemplateBindingCS__Group__2__Impl rule__TemplateBindingCS__Group__3 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14262:2: rule__TemplateBindingCS__Group__2__Impl rule__TemplateBindingCS__Group__3
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group__2__Impl_in_rule__TemplateBindingCS__Group__228985);
+            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group__2__Impl_in_rule__TemplateBindingCS__Group__228984);
             rule__TemplateBindingCS__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group__3_in_rule__TemplateBindingCS__Group__228988);
+            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group__3_in_rule__TemplateBindingCS__Group__228987);
             rule__TemplateBindingCS__Group__3();
 
             state._fsp--;
@@ -41969,21 +41958,21 @@
                before(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14276:1: ( rule__TemplateBindingCS__Group_2__0 )*
-            loop121:
+            loop120:
             do {
-                int alt121=2;
-                int LA121_0 = input.LA(1);
+                int alt120=2;
+                int LA120_0 = input.LA(1);
 
-                if ( (LA121_0==64) ) {
-                    alt121=1;
+                if ( (LA120_0==64) ) {
+                    alt120=1;
                 }
 
 
-                switch (alt121) {
+                switch (alt120) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14276:2: rule__TemplateBindingCS__Group_2__0
             	    {
-            	    pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group_2__0_in_rule__TemplateBindingCS__Group__2__Impl29015);
+            	    pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group_2__0_in_rule__TemplateBindingCS__Group__2__Impl29014);
             	    rule__TemplateBindingCS__Group_2__0();
 
             	    state._fsp--;
@@ -41993,7 +41982,7 @@
             	    break;
 
             	default :
-            	    break loop121;
+            	    break loop120;
                 }
             } while (true);
 
@@ -42031,7 +42020,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14290:1: ( rule__TemplateBindingCS__Group__3__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14291:2: rule__TemplateBindingCS__Group__3__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group__3__Impl_in_rule__TemplateBindingCS__Group__329046);
+            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group__3__Impl_in_rule__TemplateBindingCS__Group__329045);
             rule__TemplateBindingCS__Group__3__Impl();
 
             state._fsp--;
@@ -42070,7 +42059,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); 
             }
-            match(input,62,FollowSets001.FOLLOW_62_in_rule__TemplateBindingCS__Group__3__Impl29074); if (state.failed) return ;
+            match(input,62,FollowSets001.FOLLOW_62_in_rule__TemplateBindingCS__Group__3__Impl29073); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); 
             }
@@ -42105,12 +42094,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14328:1: ( rule__TemplateBindingCS__Group_2__0__Impl rule__TemplateBindingCS__Group_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14329:2: rule__TemplateBindingCS__Group_2__0__Impl rule__TemplateBindingCS__Group_2__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group_2__0__Impl_in_rule__TemplateBindingCS__Group_2__029113);
+            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group_2__0__Impl_in_rule__TemplateBindingCS__Group_2__029112);
             rule__TemplateBindingCS__Group_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group_2__1_in_rule__TemplateBindingCS__Group_2__029116);
+            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group_2__1_in_rule__TemplateBindingCS__Group_2__029115);
             rule__TemplateBindingCS__Group_2__1();
 
             state._fsp--;
@@ -42149,7 +42138,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); 
             }
-            match(input,64,FollowSets001.FOLLOW_64_in_rule__TemplateBindingCS__Group_2__0__Impl29144); if (state.failed) return ;
+            match(input,64,FollowSets001.FOLLOW_64_in_rule__TemplateBindingCS__Group_2__0__Impl29143); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); 
             }
@@ -42184,7 +42173,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14359:1: ( rule__TemplateBindingCS__Group_2__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14360:2: rule__TemplateBindingCS__Group_2__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group_2__1__Impl_in_rule__TemplateBindingCS__Group_2__129175);
+            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__Group_2__1__Impl_in_rule__TemplateBindingCS__Group_2__129174);
             rule__TemplateBindingCS__Group_2__1__Impl();
 
             state._fsp--;
@@ -42226,7 +42215,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14373:1: ( rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14373:2: rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1_in_rule__TemplateBindingCS__Group_2__1__Impl29202);
+            pushFollow(FollowSets001.FOLLOW_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1_in_rule__TemplateBindingCS__Group_2__1__Impl29201);
             rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1();
 
             state._fsp--;
@@ -42268,12 +42257,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14391:1: ( rule__TypeParameterCS__Group__0__Impl rule__TypeParameterCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14392:2: rule__TypeParameterCS__Group__0__Impl rule__TypeParameterCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group__0__Impl_in_rule__TypeParameterCS__Group__029236);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group__0__Impl_in_rule__TypeParameterCS__Group__029235);
             rule__TypeParameterCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group__1_in_rule__TypeParameterCS__Group__029239);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group__1_in_rule__TypeParameterCS__Group__029238);
             rule__TypeParameterCS__Group__1();
 
             state._fsp--;
@@ -42315,7 +42304,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14406:1: ( rule__TypeParameterCS__NameAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14406:2: rule__TypeParameterCS__NameAssignment_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__NameAssignment_0_in_rule__TypeParameterCS__Group__0__Impl29266);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__NameAssignment_0_in_rule__TypeParameterCS__Group__0__Impl29265);
             rule__TypeParameterCS__NameAssignment_0();
 
             state._fsp--;
@@ -42357,7 +42346,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14420:1: ( rule__TypeParameterCS__Group__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14421:2: rule__TypeParameterCS__Group__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group__1__Impl_in_rule__TypeParameterCS__Group__129296);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group__1__Impl_in_rule__TypeParameterCS__Group__129295);
             rule__TypeParameterCS__Group__1__Impl();
 
             state._fsp--;
@@ -42397,17 +42386,17 @@
                before(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14434:1: ( rule__TypeParameterCS__Alternatives_1 )?
-            int alt122=2;
-            int LA122_0 = input.LA(1);
+            int alt121=2;
+            int LA121_0 = input.LA(1);
 
-            if ( (LA122_0==90||LA122_0==92) ) {
-                alt122=1;
+            if ( (LA121_0==90||LA121_0==92) ) {
+                alt121=1;
             }
-            switch (alt122) {
+            switch (alt121) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14434:2: rule__TypeParameterCS__Alternatives_1
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Alternatives_1_in_rule__TypeParameterCS__Group__1__Impl29323);
+                    pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Alternatives_1_in_rule__TypeParameterCS__Group__1__Impl29322);
                     rule__TypeParameterCS__Alternatives_1();
 
                     state._fsp--;
@@ -42452,12 +42441,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14452:1: ( rule__TypeParameterCS__Group_1_0__0__Impl rule__TypeParameterCS__Group_1_0__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14453:2: rule__TypeParameterCS__Group_1_0__0__Impl rule__TypeParameterCS__Group_1_0__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0__0__Impl_in_rule__TypeParameterCS__Group_1_0__029358);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0__0__Impl_in_rule__TypeParameterCS__Group_1_0__029357);
             rule__TypeParameterCS__Group_1_0__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0__1_in_rule__TypeParameterCS__Group_1_0__029361);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0__1_in_rule__TypeParameterCS__Group_1_0__029360);
             rule__TypeParameterCS__Group_1_0__1();
 
             state._fsp--;
@@ -42496,7 +42485,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); 
             }
-            match(input,90,FollowSets001.FOLLOW_90_in_rule__TypeParameterCS__Group_1_0__0__Impl29389); if (state.failed) return ;
+            match(input,90,FollowSets001.FOLLOW_90_in_rule__TypeParameterCS__Group_1_0__0__Impl29388); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); 
             }
@@ -42531,12 +42520,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14483:1: ( rule__TypeParameterCS__Group_1_0__1__Impl rule__TypeParameterCS__Group_1_0__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14484:2: rule__TypeParameterCS__Group_1_0__1__Impl rule__TypeParameterCS__Group_1_0__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0__1__Impl_in_rule__TypeParameterCS__Group_1_0__129420);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0__1__Impl_in_rule__TypeParameterCS__Group_1_0__129419);
             rule__TypeParameterCS__Group_1_0__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0__2_in_rule__TypeParameterCS__Group_1_0__129423);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0__2_in_rule__TypeParameterCS__Group_1_0__129422);
             rule__TypeParameterCS__Group_1_0__2();
 
             state._fsp--;
@@ -42578,7 +42567,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14498:1: ( rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14498:2: rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1_in_rule__TypeParameterCS__Group_1_0__1__Impl29450);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1_in_rule__TypeParameterCS__Group_1_0__1__Impl29449);
             rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1();
 
             state._fsp--;
@@ -42620,7 +42609,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14512:1: ( rule__TypeParameterCS__Group_1_0__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14513:2: rule__TypeParameterCS__Group_1_0__2__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0__2__Impl_in_rule__TypeParameterCS__Group_1_0__229480);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0__2__Impl_in_rule__TypeParameterCS__Group_1_0__229479);
             rule__TypeParameterCS__Group_1_0__2__Impl();
 
             state._fsp--;
@@ -42660,21 +42649,21 @@
                before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14526:1: ( rule__TypeParameterCS__Group_1_0_2__0 )*
-            loop123:
+            loop122:
             do {
-                int alt123=2;
-                int LA123_0 = input.LA(1);
+                int alt122=2;
+                int LA122_0 = input.LA(1);
 
-                if ( (LA123_0==91) ) {
-                    alt123=1;
+                if ( (LA122_0==91) ) {
+                    alt122=1;
                 }
 
 
-                switch (alt123) {
+                switch (alt122) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14526:2: rule__TypeParameterCS__Group_1_0_2__0
             	    {
-            	    pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0_2__0_in_rule__TypeParameterCS__Group_1_0__2__Impl29507);
+            	    pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0_2__0_in_rule__TypeParameterCS__Group_1_0__2__Impl29506);
             	    rule__TypeParameterCS__Group_1_0_2__0();
 
             	    state._fsp--;
@@ -42684,7 +42673,7 @@
             	    break;
 
             	default :
-            	    break loop123;
+            	    break loop122;
                 }
             } while (true);
 
@@ -42722,12 +42711,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14546:1: ( rule__TypeParameterCS__Group_1_0_2__0__Impl rule__TypeParameterCS__Group_1_0_2__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14547:2: rule__TypeParameterCS__Group_1_0_2__0__Impl rule__TypeParameterCS__Group_1_0_2__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0_2__0__Impl_in_rule__TypeParameterCS__Group_1_0_2__029544);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0_2__0__Impl_in_rule__TypeParameterCS__Group_1_0_2__029543);
             rule__TypeParameterCS__Group_1_0_2__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0_2__1_in_rule__TypeParameterCS__Group_1_0_2__029547);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0_2__1_in_rule__TypeParameterCS__Group_1_0_2__029546);
             rule__TypeParameterCS__Group_1_0_2__1();
 
             state._fsp--;
@@ -42766,7 +42755,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); 
             }
-            match(input,91,FollowSets001.FOLLOW_91_in_rule__TypeParameterCS__Group_1_0_2__0__Impl29575); if (state.failed) return ;
+            match(input,91,FollowSets001.FOLLOW_91_in_rule__TypeParameterCS__Group_1_0_2__0__Impl29574); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); 
             }
@@ -42801,7 +42790,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14577:1: ( rule__TypeParameterCS__Group_1_0_2__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14578:2: rule__TypeParameterCS__Group_1_0_2__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0_2__1__Impl_in_rule__TypeParameterCS__Group_1_0_2__129606);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_0_2__1__Impl_in_rule__TypeParameterCS__Group_1_0_2__129605);
             rule__TypeParameterCS__Group_1_0_2__1__Impl();
 
             state._fsp--;
@@ -42843,7 +42832,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14591:1: ( rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14591:2: rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1_in_rule__TypeParameterCS__Group_1_0_2__1__Impl29633);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1_in_rule__TypeParameterCS__Group_1_0_2__1__Impl29632);
             rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1();
 
             state._fsp--;
@@ -42885,12 +42874,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14609:1: ( rule__TypeParameterCS__Group_1_1__0__Impl rule__TypeParameterCS__Group_1_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14610:2: rule__TypeParameterCS__Group_1_1__0__Impl rule__TypeParameterCS__Group_1_1__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_1__0__Impl_in_rule__TypeParameterCS__Group_1_1__029667);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_1__0__Impl_in_rule__TypeParameterCS__Group_1_1__029666);
             rule__TypeParameterCS__Group_1_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_1__1_in_rule__TypeParameterCS__Group_1_1__029670);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_1__1_in_rule__TypeParameterCS__Group_1_1__029669);
             rule__TypeParameterCS__Group_1_1__1();
 
             state._fsp--;
@@ -42929,7 +42918,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); 
             }
-            match(input,92,FollowSets001.FOLLOW_92_in_rule__TypeParameterCS__Group_1_1__0__Impl29698); if (state.failed) return ;
+            match(input,92,FollowSets001.FOLLOW_92_in_rule__TypeParameterCS__Group_1_1__0__Impl29697); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); 
             }
@@ -42964,7 +42953,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14640:1: ( rule__TypeParameterCS__Group_1_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14641:2: rule__TypeParameterCS__Group_1_1__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_1__1__Impl_in_rule__TypeParameterCS__Group_1_1__129729);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__Group_1_1__1__Impl_in_rule__TypeParameterCS__Group_1_1__129728);
             rule__TypeParameterCS__Group_1_1__1__Impl();
 
             state._fsp--;
@@ -43006,7 +42995,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14654:1: ( rule__TypeParameterCS__OwnedSuperAssignment_1_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14654:2: rule__TypeParameterCS__OwnedSuperAssignment_1_1_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__OwnedSuperAssignment_1_1_1_in_rule__TypeParameterCS__Group_1_1__1__Impl29756);
+            pushFollow(FollowSets001.FOLLOW_rule__TypeParameterCS__OwnedSuperAssignment_1_1_1_in_rule__TypeParameterCS__Group_1_1__1__Impl29755);
             rule__TypeParameterCS__OwnedSuperAssignment_1_1_1();
 
             state._fsp--;
@@ -43048,12 +43037,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14672:1: ( rule__TypedTypeRefCS__Group__0__Impl rule__TypedTypeRefCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14673:2: rule__TypedTypeRefCS__Group__0__Impl rule__TypedTypeRefCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypedTypeRefCS__Group__0__Impl_in_rule__TypedTypeRefCS__Group__029790);
+            pushFollow(FollowSets001.FOLLOW_rule__TypedTypeRefCS__Group__0__Impl_in_rule__TypedTypeRefCS__Group__029789);
             rule__TypedTypeRefCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__TypedTypeRefCS__Group__1_in_rule__TypedTypeRefCS__Group__029793);
+            pushFollow(FollowSets001.FOLLOW_rule__TypedTypeRefCS__Group__1_in_rule__TypedTypeRefCS__Group__029792);
             rule__TypedTypeRefCS__Group__1();
 
             state._fsp--;
@@ -43095,7 +43084,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14687:1: ( rule__TypedTypeRefCS__OwnedPathNameAssignment_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14687:2: rule__TypedTypeRefCS__OwnedPathNameAssignment_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypedTypeRefCS__OwnedPathNameAssignment_0_in_rule__TypedTypeRefCS__Group__0__Impl29820);
+            pushFollow(FollowSets001.FOLLOW_rule__TypedTypeRefCS__OwnedPathNameAssignment_0_in_rule__TypedTypeRefCS__Group__0__Impl29819);
             rule__TypedTypeRefCS__OwnedPathNameAssignment_0();
 
             state._fsp--;
@@ -43137,7 +43126,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14701:1: ( rule__TypedTypeRefCS__Group__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14702:2: rule__TypedTypeRefCS__Group__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__TypedTypeRefCS__Group__1__Impl_in_rule__TypedTypeRefCS__Group__129850);
+            pushFollow(FollowSets001.FOLLOW_rule__TypedTypeRefCS__Group__1__Impl_in_rule__TypedTypeRefCS__Group__129849);
             rule__TypedTypeRefCS__Group__1__Impl();
 
             state._fsp--;
@@ -43177,17 +43166,17 @@
                before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14715:1: ( rule__TypedTypeRefCS__OwnedBindingAssignment_1 )?
-            int alt124=2;
-            int LA124_0 = input.LA(1);
+            int alt123=2;
+            int LA123_0 = input.LA(1);
 
-            if ( (LA124_0==61) ) {
-                alt124=1;
+            if ( (LA123_0==61) ) {
+                alt123=1;
             }
-            switch (alt124) {
+            switch (alt123) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14715:2: rule__TypedTypeRefCS__OwnedBindingAssignment_1
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__TypedTypeRefCS__OwnedBindingAssignment_1_in_rule__TypedTypeRefCS__Group__1__Impl29877);
+                    pushFollow(FollowSets001.FOLLOW_rule__TypedTypeRefCS__OwnedBindingAssignment_1_in_rule__TypedTypeRefCS__Group__1__Impl29876);
                     rule__TypedTypeRefCS__OwnedBindingAssignment_1();
 
                     state._fsp--;
@@ -43232,12 +43221,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14733:1: ( rule__WildcardTypeRefCS__Group__0__Impl rule__WildcardTypeRefCS__Group__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14734:2: rule__WildcardTypeRefCS__Group__0__Impl rule__WildcardTypeRefCS__Group__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group__0__Impl_in_rule__WildcardTypeRefCS__Group__029912);
+            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group__0__Impl_in_rule__WildcardTypeRefCS__Group__029911);
             rule__WildcardTypeRefCS__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group__1_in_rule__WildcardTypeRefCS__Group__029915);
+            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group__1_in_rule__WildcardTypeRefCS__Group__029914);
             rule__WildcardTypeRefCS__Group__1();
 
             state._fsp--;
@@ -43311,12 +43300,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14764:1: ( rule__WildcardTypeRefCS__Group__1__Impl rule__WildcardTypeRefCS__Group__2 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14765:2: rule__WildcardTypeRefCS__Group__1__Impl rule__WildcardTypeRefCS__Group__2
             {
-            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group__1__Impl_in_rule__WildcardTypeRefCS__Group__129973);
+            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group__1__Impl_in_rule__WildcardTypeRefCS__Group__129972);
             rule__WildcardTypeRefCS__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group__2_in_rule__WildcardTypeRefCS__Group__129976);
+            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group__2_in_rule__WildcardTypeRefCS__Group__129975);
             rule__WildcardTypeRefCS__Group__2();
 
             state._fsp--;
@@ -43355,7 +43344,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); 
             }
-            match(input,57,FollowSets001.FOLLOW_57_in_rule__WildcardTypeRefCS__Group__1__Impl30004); if (state.failed) return ;
+            match(input,57,FollowSets001.FOLLOW_57_in_rule__WildcardTypeRefCS__Group__1__Impl30003); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); 
             }
@@ -43390,7 +43379,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14795:1: ( rule__WildcardTypeRefCS__Group__2__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14796:2: rule__WildcardTypeRefCS__Group__2__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group__2__Impl_in_rule__WildcardTypeRefCS__Group__230035);
+            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group__2__Impl_in_rule__WildcardTypeRefCS__Group__230034);
             rule__WildcardTypeRefCS__Group__2__Impl();
 
             state._fsp--;
@@ -43430,17 +43419,17 @@
                before(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); 
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14809:1: ( rule__WildcardTypeRefCS__Alternatives_2 )?
-            int alt125=2;
-            int LA125_0 = input.LA(1);
+            int alt124=2;
+            int LA124_0 = input.LA(1);
 
-            if ( (LA125_0==90||LA125_0==92) ) {
-                alt125=1;
+            if ( (LA124_0==90||LA124_0==92) ) {
+                alt124=1;
             }
-            switch (alt125) {
+            switch (alt124) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14809:2: rule__WildcardTypeRefCS__Alternatives_2
                     {
-                    pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Alternatives_2_in_rule__WildcardTypeRefCS__Group__2__Impl30062);
+                    pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Alternatives_2_in_rule__WildcardTypeRefCS__Group__2__Impl30061);
                     rule__WildcardTypeRefCS__Alternatives_2();
 
                     state._fsp--;
@@ -43485,12 +43474,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14829:1: ( rule__WildcardTypeRefCS__Group_2_0__0__Impl rule__WildcardTypeRefCS__Group_2_0__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14830:2: rule__WildcardTypeRefCS__Group_2_0__0__Impl rule__WildcardTypeRefCS__Group_2_0__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group_2_0__0__Impl_in_rule__WildcardTypeRefCS__Group_2_0__030099);
+            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group_2_0__0__Impl_in_rule__WildcardTypeRefCS__Group_2_0__030098);
             rule__WildcardTypeRefCS__Group_2_0__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group_2_0__1_in_rule__WildcardTypeRefCS__Group_2_0__030102);
+            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group_2_0__1_in_rule__WildcardTypeRefCS__Group_2_0__030101);
             rule__WildcardTypeRefCS__Group_2_0__1();
 
             state._fsp--;
@@ -43529,7 +43518,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); 
             }
-            match(input,90,FollowSets001.FOLLOW_90_in_rule__WildcardTypeRefCS__Group_2_0__0__Impl30130); if (state.failed) return ;
+            match(input,90,FollowSets001.FOLLOW_90_in_rule__WildcardTypeRefCS__Group_2_0__0__Impl30129); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); 
             }
@@ -43564,7 +43553,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14860:1: ( rule__WildcardTypeRefCS__Group_2_0__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14861:2: rule__WildcardTypeRefCS__Group_2_0__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group_2_0__1__Impl_in_rule__WildcardTypeRefCS__Group_2_0__130161);
+            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group_2_0__1__Impl_in_rule__WildcardTypeRefCS__Group_2_0__130160);
             rule__WildcardTypeRefCS__Group_2_0__1__Impl();
 
             state._fsp--;
@@ -43606,7 +43595,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14874:1: ( rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14874:2: rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1_in_rule__WildcardTypeRefCS__Group_2_0__1__Impl30188);
+            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1_in_rule__WildcardTypeRefCS__Group_2_0__1__Impl30187);
             rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1();
 
             state._fsp--;
@@ -43648,12 +43637,12 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14892:1: ( rule__WildcardTypeRefCS__Group_2_1__0__Impl rule__WildcardTypeRefCS__Group_2_1__1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14893:2: rule__WildcardTypeRefCS__Group_2_1__0__Impl rule__WildcardTypeRefCS__Group_2_1__1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group_2_1__0__Impl_in_rule__WildcardTypeRefCS__Group_2_1__030222);
+            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group_2_1__0__Impl_in_rule__WildcardTypeRefCS__Group_2_1__030221);
             rule__WildcardTypeRefCS__Group_2_1__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group_2_1__1_in_rule__WildcardTypeRefCS__Group_2_1__030225);
+            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group_2_1__1_in_rule__WildcardTypeRefCS__Group_2_1__030224);
             rule__WildcardTypeRefCS__Group_2_1__1();
 
             state._fsp--;
@@ -43692,7 +43681,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); 
             }
-            match(input,92,FollowSets001.FOLLOW_92_in_rule__WildcardTypeRefCS__Group_2_1__0__Impl30253); if (state.failed) return ;
+            match(input,92,FollowSets001.FOLLOW_92_in_rule__WildcardTypeRefCS__Group_2_1__0__Impl30252); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); 
             }
@@ -43727,7 +43716,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14923:1: ( rule__WildcardTypeRefCS__Group_2_1__1__Impl )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14924:2: rule__WildcardTypeRefCS__Group_2_1__1__Impl
             {
-            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group_2_1__1__Impl_in_rule__WildcardTypeRefCS__Group_2_1__130284);
+            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__Group_2_1__1__Impl_in_rule__WildcardTypeRefCS__Group_2_1__130283);
             rule__WildcardTypeRefCS__Group_2_1__1__Impl();
 
             state._fsp--;
@@ -43769,7 +43758,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14937:1: ( rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:14937:2: rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1
             {
-            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1_in_rule__WildcardTypeRefCS__Group_2_1__1__Impl30311);
+            pushFollow(FollowSets001.FOLLOW_rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1_in_rule__WildcardTypeRefCS__Group_2_1__1__Impl30310);
             rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1();
 
             state._fsp--;
@@ -43817,7 +43806,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedImportsImportCSParserRuleCall_0_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleImportCS_in_rule__CompleteOCLDocumentCS__OwnedImportsAssignment_0_030350);
+            pushFollow(FollowSets001.FOLLOW_ruleImportCS_in_rule__CompleteOCLDocumentCS__OwnedImportsAssignment_0_030349);
             ruleImportCS();
 
             state._fsp--;
@@ -43862,7 +43851,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedIncludesIncludeCSParserRuleCall_0_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleIncludeCS_in_rule__CompleteOCLDocumentCS__OwnedIncludesAssignment_0_130381);
+            pushFollow(FollowSets001.FOLLOW_ruleIncludeCS_in_rule__CompleteOCLDocumentCS__OwnedIncludesAssignment_0_130380);
             ruleIncludeCS();
 
             state._fsp--;
@@ -43907,7 +43896,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedLibrariesLibraryCSParserRuleCall_0_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleLibraryCS_in_rule__CompleteOCLDocumentCS__OwnedLibrariesAssignment_0_230412);
+            pushFollow(FollowSets001.FOLLOW_ruleLibraryCS_in_rule__CompleteOCLDocumentCS__OwnedLibrariesAssignment_0_230411);
             ruleLibraryCS();
 
             state._fsp--;
@@ -43952,7 +43941,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedPackagesPackageDeclarationCSParserRuleCall_1_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_rulePackageDeclarationCS_in_rule__CompleteOCLDocumentCS__OwnedPackagesAssignment_1_030443);
+            pushFollow(FollowSets001.FOLLOW_rulePackageDeclarationCS_in_rule__CompleteOCLDocumentCS__OwnedPackagesAssignment_1_030442);
             rulePackageDeclarationCS();
 
             state._fsp--;
@@ -43997,7 +43986,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedContextsContextDeclCSParserRuleCall_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleContextDeclCS_in_rule__CompleteOCLDocumentCS__OwnedContextsAssignment_1_130474);
+            pushFollow(FollowSets001.FOLLOW_ruleContextDeclCS_in_rule__CompleteOCLDocumentCS__OwnedContextsAssignment_1_130473);
             ruleContextDeclCS();
 
             state._fsp--;
@@ -44042,7 +44031,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTemplateSignatureCS_in_rule__ClassifierContextDeclCS__OwnedSignatureAssignment_130505);
+            pushFollow(FollowSets001.FOLLOW_ruleTemplateSignatureCS_in_rule__ClassifierContextDeclCS__OwnedSignatureAssignment_130504);
             ruleTemplateSignatureCS();
 
             state._fsp--;
@@ -44087,7 +44076,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassifierContextDeclCSAccess().getSelfNameUnrestrictedNameParserRuleCall_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__ClassifierContextDeclCS__SelfNameAssignment_230536);
+            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__ClassifierContextDeclCS__SelfNameAssignment_230535);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -44132,7 +44121,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_3_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_rulePathNameCS_in_rule__ClassifierContextDeclCS__OwnedPathNameAssignment_330567);
+            pushFollow(FollowSets001.FOLLOW_rulePathNameCS_in_rule__ClassifierContextDeclCS__OwnedPathNameAssignment_330566);
             rulePathNameCS();
 
             state._fsp--;
@@ -44177,7 +44166,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedInvariantsConstraintCSParserRuleCall_4_0_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleConstraintCS_in_rule__ClassifierContextDeclCS__OwnedInvariantsAssignment_4_0_130598);
+            pushFollow(FollowSets001.FOLLOW_ruleConstraintCS_in_rule__ClassifierContextDeclCS__OwnedInvariantsAssignment_4_0_130597);
             ruleConstraintCS();
 
             state._fsp--;
@@ -44222,7 +44211,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getClassifierContextDeclCSAccess().getOwnedDefinitionsDefCSParserRuleCall_4_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleDefCS_in_rule__ClassifierContextDeclCS__OwnedDefinitionsAssignment_4_130629);
+            pushFollow(FollowSets001.FOLLOW_ruleDefCS_in_rule__ClassifierContextDeclCS__OwnedDefinitionsAssignment_4_130628);
             ruleDefCS();
 
             state._fsp--;
@@ -44267,7 +44256,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__ConstraintCS__NameAssignment_0_030660);
+            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__ConstraintCS__NameAssignment_0_030659);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -44312,7 +44301,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_0_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleSpecificationCS_in_rule__ConstraintCS__OwnedMessageSpecificationAssignment_0_1_130691);
+            pushFollow(FollowSets001.FOLLOW_ruleSpecificationCS_in_rule__ConstraintCS__OwnedMessageSpecificationAssignment_0_1_130690);
             ruleSpecificationCS();
 
             state._fsp--;
@@ -44357,7 +44346,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleSpecificationCS_in_rule__ConstraintCS__OwnedSpecificationAssignment_230722);
+            pushFollow(FollowSets001.FOLLOW_ruleSpecificationCS_in_rule__ConstraintCS__OwnedSpecificationAssignment_230721);
             ruleSpecificationCS();
 
             state._fsp--;
@@ -44408,7 +44397,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDefOperationCSAccess().getIsStaticStaticKeyword_0_0()); 
             }
-            match(input,93,FollowSets001.FOLLOW_93_in_rule__DefOperationCS__IsStaticAssignment_030758); if (state.failed) return ;
+            match(input,93,FollowSets001.FOLLOW_93_in_rule__DefOperationCS__IsStaticAssignment_030757); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getDefOperationCSAccess().getIsStaticStaticKeyword_0_0()); 
             }
@@ -44455,7 +44444,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDefOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_4_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTemplateSignatureCS_in_rule__DefOperationCS__OwnedSignatureAssignment_430797);
+            pushFollow(FollowSets001.FOLLOW_ruleTemplateSignatureCS_in_rule__DefOperationCS__OwnedSignatureAssignment_430796);
             ruleTemplateSignatureCS();
 
             state._fsp--;
@@ -44500,7 +44489,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDefOperationCSAccess().getNameUnrestrictedNameParserRuleCall_5_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__DefOperationCS__NameAssignment_530828);
+            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__DefOperationCS__NameAssignment_530827);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -44545,7 +44534,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDefOperationCSAccess().getOwnedParametersDefParameterCSParserRuleCall_7_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleDefParameterCS_in_rule__DefOperationCS__OwnedParametersAssignment_7_030859);
+            pushFollow(FollowSets001.FOLLOW_ruleDefParameterCS_in_rule__DefOperationCS__OwnedParametersAssignment_7_030858);
             ruleDefParameterCS();
 
             state._fsp--;
@@ -44590,7 +44579,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDefOperationCSAccess().getOwnedParametersDefParameterCSParserRuleCall_7_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleDefParameterCS_in_rule__DefOperationCS__OwnedParametersAssignment_7_1_130890);
+            pushFollow(FollowSets001.FOLLOW_ruleDefParameterCS_in_rule__DefOperationCS__OwnedParametersAssignment_7_1_130889);
             ruleDefParameterCS();
 
             state._fsp--;
@@ -44635,7 +44624,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDefOperationCSAccess().getOwnedTypeTypeExpCSParserRuleCall_10_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__DefOperationCS__OwnedTypeAssignment_1030921);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__DefOperationCS__OwnedTypeAssignment_1030920);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -44680,7 +44669,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDefOperationCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_12_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleSpecificationCS_in_rule__DefOperationCS__OwnedSpecificationAssignment_1230952);
+            pushFollow(FollowSets001.FOLLOW_ruleSpecificationCS_in_rule__DefOperationCS__OwnedSpecificationAssignment_1230951);
             ruleSpecificationCS();
 
             state._fsp--;
@@ -44725,7 +44714,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDefParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__DefParameterCS__NameAssignment_030983);
+            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__DefParameterCS__NameAssignment_030982);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -44770,7 +44759,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDefParameterCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__DefParameterCS__OwnedTypeAssignment_231014);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__DefParameterCS__OwnedTypeAssignment_231013);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -44821,7 +44810,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDefPropertyCSAccess().getIsStaticStaticKeyword_0_0()); 
             }
-            match(input,93,FollowSets001.FOLLOW_93_in_rule__DefPropertyCS__IsStaticAssignment_031050); if (state.failed) return ;
+            match(input,93,FollowSets001.FOLLOW_93_in_rule__DefPropertyCS__IsStaticAssignment_031049); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getDefPropertyCSAccess().getIsStaticStaticKeyword_0_0()); 
             }
@@ -44868,7 +44857,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDefPropertyCSAccess().getNameUnrestrictedNameParserRuleCall_4_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__DefPropertyCS__NameAssignment_431089);
+            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__DefPropertyCS__NameAssignment_431088);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -44913,7 +44902,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDefPropertyCSAccess().getOwnedTypeTypeExpCSParserRuleCall_6_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__DefPropertyCS__OwnedTypeAssignment_631120);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__DefPropertyCS__OwnedTypeAssignment_631119);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -44958,7 +44947,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDefPropertyCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_8_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleSpecificationCS_in_rule__DefPropertyCS__OwnedSpecificationAssignment_831151);
+            pushFollow(FollowSets001.FOLLOW_ruleSpecificationCS_in_rule__DefPropertyCS__OwnedSpecificationAssignment_831150);
             ruleSpecificationCS();
 
             state._fsp--;
@@ -45003,7 +44992,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getImportCSAccess().getNameIdentifierParserRuleCall_1_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleIdentifier_in_rule__ImportCS__NameAssignment_1_031182);
+            pushFollow(FollowSets001.FOLLOW_ruleIdentifier_in_rule__ImportCS__NameAssignment_1_031181);
             ruleIdentifier();
 
             state._fsp--;
@@ -45048,7 +45037,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getImportCSAccess().getOwnedPathNameURIPathNameCSParserRuleCall_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleURIPathNameCS_in_rule__ImportCS__OwnedPathNameAssignment_231213);
+            pushFollow(FollowSets001.FOLLOW_ruleURIPathNameCS_in_rule__ImportCS__OwnedPathNameAssignment_231212);
             ruleURIPathNameCS();
 
             state._fsp--;
@@ -45099,7 +45088,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); 
             }
-            match(input,94,FollowSets001.FOLLOW_94_in_rule__ImportCS__IsAllAssignment_331249); if (state.failed) return ;
+            match(input,94,FollowSets001.FOLLOW_94_in_rule__ImportCS__IsAllAssignment_331248); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); 
             }
@@ -45152,7 +45141,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIncludeCSAccess().getReferredNamespaceNamespaceURIParserRuleCall_1_0_1()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleURI_in_rule__IncludeCS__ReferredNamespaceAssignment_131292);
+            pushFollow(FollowSets001.FOLLOW_ruleURI_in_rule__IncludeCS__ReferredNamespaceAssignment_131291);
             ruleURI();
 
             state._fsp--;
@@ -45209,7 +45198,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLibraryCSAccess().getReferredPackagePackageURIParserRuleCall_1_0_1()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleURI_in_rule__LibraryCS__ReferredPackageAssignment_131331);
+            pushFollow(FollowSets001.FOLLOW_ruleURI_in_rule__LibraryCS__ReferredPackageAssignment_131330);
             ruleURI();
 
             state._fsp--;
@@ -45260,7 +45249,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOperationContextDeclCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTemplateSignatureCS_in_rule__OperationContextDeclCS__OwnedSignatureAssignment_131366);
+            pushFollow(FollowSets001.FOLLOW_ruleTemplateSignatureCS_in_rule__OperationContextDeclCS__OwnedSignatureAssignment_131365);
             ruleTemplateSignatureCS();
 
             state._fsp--;
@@ -45305,7 +45294,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_rulePathNameCS_in_rule__OperationContextDeclCS__OwnedPathNameAssignment_231397);
+            pushFollow(FollowSets001.FOLLOW_rulePathNameCS_in_rule__OperationContextDeclCS__OwnedPathNameAssignment_231396);
             rulePathNameCS();
 
             state._fsp--;
@@ -45350,7 +45339,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersParameterCSParserRuleCall_4_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleParameterCS_in_rule__OperationContextDeclCS__OwnedParametersAssignment_4_031428);
+            pushFollow(FollowSets001.FOLLOW_ruleParameterCS_in_rule__OperationContextDeclCS__OwnedParametersAssignment_4_031427);
             ruleParameterCS();
 
             state._fsp--;
@@ -45395,7 +45384,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersParameterCSParserRuleCall_4_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleParameterCS_in_rule__OperationContextDeclCS__OwnedParametersAssignment_4_1_131459);
+            pushFollow(FollowSets001.FOLLOW_ruleParameterCS_in_rule__OperationContextDeclCS__OwnedParametersAssignment_4_1_131458);
             ruleParameterCS();
 
             state._fsp--;
@@ -45440,7 +45429,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOperationContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_7_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__OperationContextDeclCS__OwnedTypeAssignment_731490);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__OperationContextDeclCS__OwnedTypeAssignment_731489);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -45485,7 +45474,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPreconditionsConstraintCSParserRuleCall_8_0_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleConstraintCS_in_rule__OperationContextDeclCS__OwnedPreconditionsAssignment_8_0_131521);
+            pushFollow(FollowSets001.FOLLOW_ruleConstraintCS_in_rule__OperationContextDeclCS__OwnedPreconditionsAssignment_8_0_131520);
             ruleConstraintCS();
 
             state._fsp--;
@@ -45530,7 +45519,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOperationContextDeclCSAccess().getOwnedPostconditionsConstraintCSParserRuleCall_8_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleConstraintCS_in_rule__OperationContextDeclCS__OwnedPostconditionsAssignment_8_1_131552);
+            pushFollow(FollowSets001.FOLLOW_ruleConstraintCS_in_rule__OperationContextDeclCS__OwnedPostconditionsAssignment_8_1_131551);
             ruleConstraintCS();
 
             state._fsp--;
@@ -45575,7 +45564,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOperationContextDeclCSAccess().getOwnedBodiesSpecificationCSParserRuleCall_8_2_3_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleSpecificationCS_in_rule__OperationContextDeclCS__OwnedBodiesAssignment_8_2_331583);
+            pushFollow(FollowSets001.FOLLOW_ruleSpecificationCS_in_rule__OperationContextDeclCS__OwnedBodiesAssignment_8_2_331582);
             ruleSpecificationCS();
 
             state._fsp--;
@@ -45620,7 +45609,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPackageDeclarationCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_rulePathNameCS_in_rule__PackageDeclarationCS__OwnedPathNameAssignment_131614);
+            pushFollow(FollowSets001.FOLLOW_rulePathNameCS_in_rule__PackageDeclarationCS__OwnedPathNameAssignment_131613);
             rulePathNameCS();
 
             state._fsp--;
@@ -45665,7 +45654,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPackageDeclarationCSAccess().getOwnedInvariantsConstraintCSParserRuleCall_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleConstraintCS_in_rule__PackageDeclarationCS__OwnedInvariantsAssignment_2_131645);
+            pushFollow(FollowSets001.FOLLOW_ruleConstraintCS_in_rule__PackageDeclarationCS__OwnedInvariantsAssignment_2_131644);
             ruleConstraintCS();
 
             state._fsp--;
@@ -45710,7 +45699,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPackageDeclarationCSAccess().getOwnedContextsContextDeclCSParserRuleCall_3_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleContextDeclCS_in_rule__PackageDeclarationCS__OwnedContextsAssignment_331676);
+            pushFollow(FollowSets001.FOLLOW_ruleContextDeclCS_in_rule__PackageDeclarationCS__OwnedContextsAssignment_331675);
             ruleContextDeclCS();
 
             state._fsp--;
@@ -45755,7 +45744,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__ParameterCS__NameAssignment_0_031707);
+            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__ParameterCS__NameAssignment_0_031706);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -45800,7 +45789,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getParameterCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__ParameterCS__OwnedTypeAssignment_131738);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__ParameterCS__OwnedTypeAssignment_131737);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -45845,7 +45834,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_rulePathNameCS_in_rule__PropertyContextDeclCS__OwnedPathNameAssignment_131769);
+            pushFollow(FollowSets001.FOLLOW_rulePathNameCS_in_rule__PropertyContextDeclCS__OwnedPathNameAssignment_131768);
             rulePathNameCS();
 
             state._fsp--;
@@ -45890,7 +45879,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_3_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__PropertyContextDeclCS__OwnedTypeAssignment_331800);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__PropertyContextDeclCS__OwnedTypeAssignment_331799);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -45935,7 +45924,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDerivedInvariantsConstraintCSParserRuleCall_4_0_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleConstraintCS_in_rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_131831);
+            pushFollow(FollowSets001.FOLLOW_ruleConstraintCS_in_rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_131830);
             ruleConstraintCS();
 
             state._fsp--;
@@ -45980,7 +45969,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_4_1_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleSpecificationCS_in_rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_231862);
+            pushFollow(FollowSets001.FOLLOW_ruleSpecificationCS_in_rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_231861);
             ruleSpecificationCS();
 
             state._fsp--;
@@ -46025,7 +46014,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__SpecificationCS__OwnedExpressionAssignment_031893);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__SpecificationCS__OwnedExpressionAssignment_031892);
             ruleExpCS();
 
             state._fsp--;
@@ -46070,7 +46059,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); 
             }
-            match(input,RULE_UNQUOTED_STRING,FollowSets001.FOLLOW_RULE_UNQUOTED_STRING_in_rule__SpecificationCS__ExprStringAssignment_131924); if (state.failed) return ;
+            match(input,RULE_UNQUOTED_STRING,FollowSets001.FOLLOW_RULE_UNQUOTED_STRING_in_rule__SpecificationCS__ExprStringAssignment_131923); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); 
             }
@@ -46111,7 +46100,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_0_131955);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_0_131954);
             ruleTypeParameterCS();
 
             state._fsp--;
@@ -46156,7 +46145,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_131986);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_131985);
             ruleTypeParameterCS();
 
             state._fsp--;
@@ -46201,7 +46190,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_1_132017);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_1_132016);
             ruleTypeParameterCS();
 
             state._fsp--;
@@ -46246,7 +46235,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_132048);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_132047);
             ruleTypeParameterCS();
 
             state._fsp--;
@@ -46291,7 +46280,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsURIFirstPathElementCSParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleURIFirstPathElementCS_in_rule__URIPathNameCS__OwnedPathElementsAssignment_032080);
+            pushFollow(FollowSets001.FOLLOW_ruleURIFirstPathElementCS_in_rule__URIPathNameCS__OwnedPathElementsAssignment_032079);
             ruleURIFirstPathElementCS();
 
             state._fsp--;
@@ -46336,7 +46325,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleNextPathElementCS_in_rule__URIPathNameCS__OwnedPathElementsAssignment_1_132111);
+            pushFollow(FollowSets001.FOLLOW_ruleNextPathElementCS_in_rule__URIPathNameCS__OwnedPathElementsAssignment_1_132110);
             ruleNextPathElementCS();
 
             state._fsp--;
@@ -46387,7 +46376,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__URIFirstPathElementCS__ReferredElementAssignment_032146);
+            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__URIFirstPathElementCS__ReferredElementAssignment_032145);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -46444,7 +46433,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleURI_in_rule__URIFirstPathElementCS__ReferredElementAssignment_1_132185);
+            pushFollow(FollowSets001.FOLLOW_ruleURI_in_rule__URIFirstPathElementCS__ReferredElementAssignment_1_132184);
             ruleURI();
 
             state._fsp--;
@@ -46495,7 +46484,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_rulePrimitiveTypeIdentifier_in_rule__PrimitiveTypeCS__NameAssignment32220);
+            pushFollow(FollowSets001.FOLLOW_rulePrimitiveTypeIdentifier_in_rule__PrimitiveTypeCS__NameAssignment32219);
             rulePrimitiveTypeIdentifier();
 
             state._fsp--;
@@ -46540,7 +46529,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleCollectionTypeIdentifier_in_rule__CollectionTypeCS__NameAssignment_032251);
+            pushFollow(FollowSets001.FOLLOW_ruleCollectionTypeIdentifier_in_rule__CollectionTypeCS__NameAssignment_032250);
             ruleCollectionTypeIdentifier();
 
             state._fsp--;
@@ -46585,7 +46574,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__CollectionTypeCS__OwnedTypeAssignment_1_132282);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__CollectionTypeCS__OwnedTypeAssignment_1_132281);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -46636,7 +46625,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); 
             }
-            match(input,51,FollowSets001.FOLLOW_51_in_rule__TupleTypeCS__NameAssignment_032318); if (state.failed) return ;
+            match(input,51,FollowSets001.FOLLOW_51_in_rule__TupleTypeCS__NameAssignment_032317); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); 
             }
@@ -46683,7 +46672,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTuplePartCS_in_rule__TupleTypeCS__OwnedPartsAssignment_1_1_032357);
+            pushFollow(FollowSets001.FOLLOW_ruleTuplePartCS_in_rule__TupleTypeCS__OwnedPartsAssignment_1_1_032356);
             ruleTuplePartCS();
 
             state._fsp--;
@@ -46728,7 +46717,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTuplePartCS_in_rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_132388);
+            pushFollow(FollowSets001.FOLLOW_ruleTuplePartCS_in_rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_132387);
             ruleTuplePartCS();
 
             state._fsp--;
@@ -46773,7 +46762,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__TuplePartCS__NameAssignment_032419);
+            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__TuplePartCS__NameAssignment_032418);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -46818,7 +46807,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__TuplePartCS__OwnedTypeAssignment_232450);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__TuplePartCS__OwnedTypeAssignment_232449);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -46863,7 +46852,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleCollectionTypeCS_in_rule__CollectionLiteralExpCS__OwnedTypeAssignment_032481);
+            pushFollow(FollowSets001.FOLLOW_ruleCollectionTypeCS_in_rule__CollectionLiteralExpCS__OwnedTypeAssignment_032480);
             ruleCollectionTypeCS();
 
             state._fsp--;
@@ -46908,7 +46897,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleCollectionLiteralPartCS_in_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_032512);
+            pushFollow(FollowSets001.FOLLOW_ruleCollectionLiteralPartCS_in_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_032511);
             ruleCollectionLiteralPartCS();
 
             state._fsp--;
@@ -46953,7 +46942,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleCollectionLiteralPartCS_in_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_132543);
+            pushFollow(FollowSets001.FOLLOW_ruleCollectionLiteralPartCS_in_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_132542);
             ruleCollectionLiteralPartCS();
 
             state._fsp--;
@@ -46998,7 +46987,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_032574);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_032573);
             ruleExpCS();
 
             state._fsp--;
@@ -47043,7 +47032,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_132605);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_132604);
             ruleExpCS();
 
             state._fsp--;
@@ -47088,7 +47077,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_rulePatternExpCS_in_rule__CollectionLiteralPartCS__OwnedExpressionAssignment_132636);
+            pushFollow(FollowSets001.FOLLOW_rulePatternExpCS_in_rule__CollectionLiteralPartCS__OwnedExpressionAssignment_132635);
             rulePatternExpCS();
 
             state._fsp--;
@@ -47133,7 +47122,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleCollectionTypeCS_in_rule__CollectionPatternCS__OwnedTypeAssignment_032667);
+            pushFollow(FollowSets001.FOLLOW_ruleCollectionTypeCS_in_rule__CollectionPatternCS__OwnedTypeAssignment_032666);
             ruleCollectionTypeCS();
 
             state._fsp--;
@@ -47178,7 +47167,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_rulePatternExpCS_in_rule__CollectionPatternCS__OwnedPartsAssignment_2_032698);
+            pushFollow(FollowSets001.FOLLOW_rulePatternExpCS_in_rule__CollectionPatternCS__OwnedPartsAssignment_2_032697);
             rulePatternExpCS();
 
             state._fsp--;
@@ -47223,7 +47212,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_rulePatternExpCS_in_rule__CollectionPatternCS__OwnedPartsAssignment_2_1_132729);
+            pushFollow(FollowSets001.FOLLOW_rulePatternExpCS_in_rule__CollectionPatternCS__OwnedPartsAssignment_2_1_132728);
             rulePatternExpCS();
 
             state._fsp--;
@@ -47268,7 +47257,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleIdentifier_in_rule__CollectionPatternCS__RestVariableNameAssignment_2_2_132760);
+            pushFollow(FollowSets001.FOLLOW_ruleIdentifier_in_rule__CollectionPatternCS__RestVariableNameAssignment_2_2_132759);
             ruleIdentifier();
 
             state._fsp--;
@@ -47319,7 +47308,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__ConstructorPartCS__ReferredPropertyAssignment_032795);
+            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__ConstructorPartCS__ReferredPropertyAssignment_032794);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -47373,7 +47362,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:16167:1: ( rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:16167:2: rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0_in_rule__ConstructorPartCS__OwnedInitExpressionAssignment_232830);
+            pushFollow(FollowSets001.FOLLOW_rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0_in_rule__ConstructorPartCS__OwnedInitExpressionAssignment_232829);
             rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0();
 
             state._fsp--;
@@ -47421,7 +47410,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__PatternExpCS__PatternVariableNameAssignment_032863);
+            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__PatternExpCS__PatternVariableNameAssignment_032862);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -47466,7 +47455,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__PatternExpCS__OwnedPatternTypeAssignment_232894);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__PatternExpCS__OwnedPatternTypeAssignment_232893);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -47511,7 +47500,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_232925);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_232924);
             ruleExpCS();
 
             state._fsp--;
@@ -47556,7 +47545,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTupleLiteralPartCS_in_rule__TupleLiteralExpCS__OwnedPartsAssignment_232956);
+            pushFollow(FollowSets001.FOLLOW_ruleTupleLiteralPartCS_in_rule__TupleLiteralExpCS__OwnedPartsAssignment_232955);
             ruleTupleLiteralPartCS();
 
             state._fsp--;
@@ -47601,7 +47590,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTupleLiteralPartCS_in_rule__TupleLiteralExpCS__OwnedPartsAssignment_3_132987);
+            pushFollow(FollowSets001.FOLLOW_ruleTupleLiteralPartCS_in_rule__TupleLiteralExpCS__OwnedPartsAssignment_3_132986);
             ruleTupleLiteralPartCS();
 
             state._fsp--;
@@ -47646,7 +47635,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__TupleLiteralPartCS__NameAssignment_033018);
+            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__TupleLiteralPartCS__NameAssignment_033017);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -47691,7 +47680,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__TupleLiteralPartCS__OwnedTypeAssignment_1_133049);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__TupleLiteralPartCS__OwnedTypeAssignment_1_133048);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -47736,7 +47725,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_333080);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_333079);
             ruleExpCS();
 
             state._fsp--;
@@ -47781,7 +47770,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleNUMBER_LITERAL_in_rule__NumberLiteralExpCS__SymbolAssignment33111);
+            pushFollow(FollowSets001.FOLLOW_ruleNUMBER_LITERAL_in_rule__NumberLiteralExpCS__SymbolAssignment33110);
             ruleNUMBER_LITERAL();
 
             state._fsp--;
@@ -47826,7 +47815,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleStringLiteral_in_rule__StringLiteralExpCS__SegmentsAssignment33142);
+            pushFollow(FollowSets001.FOLLOW_ruleStringLiteral_in_rule__StringLiteralExpCS__SegmentsAssignment33141);
             ruleStringLiteral();
 
             state._fsp--;
@@ -47877,7 +47866,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); 
             }
-            match(input,95,FollowSets001.FOLLOW_95_in_rule__BooleanLiteralExpCS__SymbolAssignment_033178); if (state.failed) return ;
+            match(input,95,FollowSets001.FOLLOW_95_in_rule__BooleanLiteralExpCS__SymbolAssignment_033177); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); 
             }
@@ -47930,7 +47919,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); 
             }
-            match(input,96,FollowSets001.FOLLOW_96_in_rule__BooleanLiteralExpCS__SymbolAssignment_133222); if (state.failed) return ;
+            match(input,96,FollowSets001.FOLLOW_96_in_rule__BooleanLiteralExpCS__SymbolAssignment_133221); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); 
             }
@@ -47977,7 +47966,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleMultiplicityCS_in_rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_133261);
+            pushFollow(FollowSets001.FOLLOW_ruleMultiplicityCS_in_rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_133260);
             ruleMultiplicityCS();
 
             state._fsp--;
@@ -48022,7 +48011,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeLiteralWithMultiplicityCS_in_rule__TypeLiteralExpCS__OwnedTypeAssignment33292);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeLiteralWithMultiplicityCS_in_rule__TypeLiteralExpCS__OwnedTypeAssignment33291);
             ruleTypeLiteralWithMultiplicityCS();
 
             state._fsp--;
@@ -48067,7 +48056,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_rulePathNameCS_in_rule__TypeNameExpCS__OwnedPathNameAssignment_033323);
+            pushFollow(FollowSets001.FOLLOW_rulePathNameCS_in_rule__TypeNameExpCS__OwnedPathNameAssignment_033322);
             rulePathNameCS();
 
             state._fsp--;
@@ -48112,7 +48101,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleCurlyBracketedClauseCS_in_rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_033354);
+            pushFollow(FollowSets001.FOLLOW_ruleCurlyBracketedClauseCS_in_rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_033353);
             ruleCurlyBracketedClauseCS();
 
             state._fsp--;
@@ -48157,7 +48146,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_133385);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_133384);
             ruleExpCS();
 
             state._fsp--;
@@ -48202,7 +48191,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleMultiplicityCS_in_rule__TypeExpCS__OwnedMultiplicityAssignment_133416);
+            pushFollow(FollowSets001.FOLLOW_ruleMultiplicityCS_in_rule__TypeExpCS__OwnedMultiplicityAssignment_133415);
             ruleMultiplicityCS();
 
             state._fsp--;
@@ -48247,7 +48236,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleBinaryOperatorName_in_rule__ExpCS__NameAssignment_0_1_133447);
+            pushFollow(FollowSets001.FOLLOW_ruleBinaryOperatorName_in_rule__ExpCS__NameAssignment_0_1_133446);
             ruleBinaryOperatorName();
 
             state._fsp--;
@@ -48292,7 +48281,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__ExpCS__OwnedRightAssignment_0_1_233478);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__ExpCS__OwnedRightAssignment_0_1_233477);
             ruleExpCS();
 
             state._fsp--;
@@ -48337,7 +48326,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnaryOperatorName_in_rule__PrefixedLetExpCS__NameAssignment_0_133509);
+            pushFollow(FollowSets001.FOLLOW_ruleUnaryOperatorName_in_rule__PrefixedLetExpCS__NameAssignment_0_133508);
             ruleUnaryOperatorName();
 
             state._fsp--;
@@ -48382,7 +48371,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_rulePrefixedLetExpCS_in_rule__PrefixedLetExpCS__OwnedRightAssignment_0_233540);
+            pushFollow(FollowSets001.FOLLOW_rulePrefixedLetExpCS_in_rule__PrefixedLetExpCS__OwnedRightAssignment_0_233539);
             rulePrefixedLetExpCS();
 
             state._fsp--;
@@ -48427,7 +48416,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnaryOperatorName_in_rule__PrefixedPrimaryExpCS__NameAssignment_0_133571);
+            pushFollow(FollowSets001.FOLLOW_ruleUnaryOperatorName_in_rule__PrefixedPrimaryExpCS__NameAssignment_0_133570);
             ruleUnaryOperatorName();
 
             state._fsp--;
@@ -48472,7 +48461,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_rulePrefixedPrimaryExpCS_in_rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_233602);
+            pushFollow(FollowSets001.FOLLOW_rulePrefixedPrimaryExpCS_in_rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_233601);
             rulePrefixedPrimaryExpCS();
 
             state._fsp--;
@@ -48517,7 +48506,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_rulePathNameCS_in_rule__NameExpCS__OwnedPathNameAssignment_033633);
+            pushFollow(FollowSets001.FOLLOW_rulePathNameCS_in_rule__NameExpCS__OwnedPathNameAssignment_033632);
             rulePathNameCS();
 
             state._fsp--;
@@ -48562,7 +48551,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleSquareBracketedClauseCS_in_rule__NameExpCS__OwnedSquareBracketedClausesAssignment_133664);
+            pushFollow(FollowSets001.FOLLOW_ruleSquareBracketedClauseCS_in_rule__NameExpCS__OwnedSquareBracketedClausesAssignment_133663);
             ruleSquareBracketedClauseCS();
 
             state._fsp--;
@@ -48607,7 +48596,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleRoundBracketedClauseCS_in_rule__NameExpCS__OwnedRoundBracketedClauseAssignment_233695);
+            pushFollow(FollowSets001.FOLLOW_ruleRoundBracketedClauseCS_in_rule__NameExpCS__OwnedRoundBracketedClauseAssignment_233694);
             ruleRoundBracketedClauseCS();
 
             state._fsp--;
@@ -48652,7 +48641,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleCurlyBracketedClauseCS_in_rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_333726);
+            pushFollow(FollowSets001.FOLLOW_ruleCurlyBracketedClauseCS_in_rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_333725);
             ruleCurlyBracketedClauseCS();
 
             state._fsp--;
@@ -48703,7 +48692,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); 
             }
-            match(input,97,FollowSets001.FOLLOW_97_in_rule__NameExpCS__IsPreAssignment_4_033762); if (state.failed) return ;
+            match(input,97,FollowSets001.FOLLOW_97_in_rule__NameExpCS__IsPreAssignment_4_033761); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); 
             }
@@ -48750,7 +48739,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleConstructorPartCS_in_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_033801);
+            pushFollow(FollowSets001.FOLLOW_ruleConstructorPartCS_in_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_033800);
             ruleConstructorPartCS();
 
             state._fsp--;
@@ -48795,7 +48784,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleConstructorPartCS_in_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_133832);
+            pushFollow(FollowSets001.FOLLOW_ruleConstructorPartCS_in_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_133831);
             ruleConstructorPartCS();
 
             state._fsp--;
@@ -48840,7 +48829,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleStringLiteral_in_rule__CurlyBracketedClauseCS__ValueAssignment_2_133863);
+            pushFollow(FollowSets001.FOLLOW_ruleStringLiteral_in_rule__CurlyBracketedClauseCS__ValueAssignment_2_133862);
             ruleStringLiteral();
 
             state._fsp--;
@@ -48885,7 +48874,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleNavigatingArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_033894);
+            pushFollow(FollowSets001.FOLLOW_ruleNavigatingArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_033893);
             ruleNavigatingArgCS();
 
             state._fsp--;
@@ -48930,7 +48919,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleNavigatingCommaArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_133925);
+            pushFollow(FollowSets001.FOLLOW_ruleNavigatingCommaArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_133924);
             ruleNavigatingCommaArgCS();
 
             state._fsp--;
@@ -48975,7 +48964,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleNavigatingSemiArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_033956);
+            pushFollow(FollowSets001.FOLLOW_ruleNavigatingSemiArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_033955);
             ruleNavigatingSemiArgCS();
 
             state._fsp--;
@@ -49020,7 +49009,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleNavigatingCommaArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_133987);
+            pushFollow(FollowSets001.FOLLOW_ruleNavigatingCommaArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_133986);
             ruleNavigatingCommaArgCS();
 
             state._fsp--;
@@ -49065,7 +49054,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleNavigatingBarArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_034018);
+            pushFollow(FollowSets001.FOLLOW_ruleNavigatingBarArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_034017);
             ruleNavigatingBarArgCS();
 
             state._fsp--;
@@ -49110,7 +49099,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleNavigatingCommaArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_134049);
+            pushFollow(FollowSets001.FOLLOW_ruleNavigatingCommaArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_134048);
             ruleNavigatingCommaArgCS();
 
             state._fsp--;
@@ -49155,7 +49144,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__SquareBracketedClauseCS__OwnedTermsAssignment_134080);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__SquareBracketedClauseCS__OwnedTermsAssignment_134079);
             ruleExpCS();
 
             state._fsp--;
@@ -49200,7 +49189,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_134111);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_134110);
             ruleExpCS();
 
             state._fsp--;
@@ -49245,7 +49234,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_034142);
+            pushFollow(FollowSets001.FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_034141);
             ruleNavigatingArgExpCS();
 
             state._fsp--;
@@ -49290,7 +49279,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_134173);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_134172);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -49335,7 +49324,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_134204);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_134203);
             ruleExpCS();
 
             state._fsp--;
@@ -49380,7 +49369,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_134235);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_134234);
             ruleExpCS();
 
             state._fsp--;
@@ -49425,7 +49414,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__NavigatingArgCS__OwnedTypeAssignment_1_134266);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__NavigatingArgCS__OwnedTypeAssignment_1_134265);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -49476,7 +49465,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); 
             }
-            match(input,98,FollowSets001.FOLLOW_98_in_rule__NavigatingBarArgCS__PrefixAssignment_034302); if (state.failed) return ;
+            match(input,98,FollowSets001.FOLLOW_98_in_rule__NavigatingBarArgCS__PrefixAssignment_034301); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); 
             }
@@ -49523,7 +49512,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_134341);
+            pushFollow(FollowSets001.FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_134340);
             ruleNavigatingArgExpCS();
 
             state._fsp--;
@@ -49568,7 +49557,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__NavigatingBarArgCS__OwnedTypeAssignment_2_134372);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__NavigatingBarArgCS__OwnedTypeAssignment_2_134371);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -49613,7 +49602,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_134403);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_134402);
             ruleExpCS();
 
             state._fsp--;
@@ -49664,7 +49653,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); 
             }
-            match(input,64,FollowSets001.FOLLOW_64_in_rule__NavigatingCommaArgCS__PrefixAssignment_034439); if (state.failed) return ;
+            match(input,64,FollowSets001.FOLLOW_64_in_rule__NavigatingCommaArgCS__PrefixAssignment_034438); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); 
             }
@@ -49711,7 +49700,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_134478);
+            pushFollow(FollowSets001.FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_134477);
             ruleNavigatingArgExpCS();
 
             state._fsp--;
@@ -49756,7 +49745,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_134509);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_134508);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -49801,7 +49790,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_134540);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_134539);
             ruleExpCS();
 
             state._fsp--;
@@ -49846,7 +49835,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_134571);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_134570);
             ruleExpCS();
 
             state._fsp--;
@@ -49897,7 +49886,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); 
             }
-            match(input,99,FollowSets001.FOLLOW_99_in_rule__NavigatingSemiArgCS__PrefixAssignment_034607); if (state.failed) return ;
+            match(input,99,FollowSets001.FOLLOW_99_in_rule__NavigatingSemiArgCS__PrefixAssignment_034606); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); 
             }
@@ -49944,7 +49933,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_134646);
+            pushFollow(FollowSets001.FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_134645);
             ruleNavigatingArgExpCS();
 
             state._fsp--;
@@ -49989,7 +49978,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_134677);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_134676);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -50034,7 +50023,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_134708);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_134707);
             ruleExpCS();
 
             state._fsp--;
@@ -50082,7 +50071,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:17101:1: ( rule__IfExpCS__OwnedConditionAlternatives_1_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:17101:2: rule__IfExpCS__OwnedConditionAlternatives_1_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__OwnedConditionAlternatives_1_0_in_rule__IfExpCS__OwnedConditionAssignment_134739);
+            pushFollow(FollowSets001.FOLLOW_rule__IfExpCS__OwnedConditionAlternatives_1_0_in_rule__IfExpCS__OwnedConditionAssignment_134738);
             rule__IfExpCS__OwnedConditionAlternatives_1_0();
 
             state._fsp--;
@@ -50130,7 +50119,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__IfExpCS__OwnedThenExpressionAssignment_334772);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__IfExpCS__OwnedThenExpressionAssignment_334771);
             ruleExpCS();
 
             state._fsp--;
@@ -50175,7 +50164,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleElseIfThenExpCS_in_rule__IfExpCS__OwnedIfThenExpressionsAssignment_434803);
+            pushFollow(FollowSets001.FOLLOW_ruleElseIfThenExpCS_in_rule__IfExpCS__OwnedIfThenExpressionsAssignment_434802);
             ruleElseIfThenExpCS();
 
             state._fsp--;
@@ -50220,7 +50209,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__IfExpCS__OwnedElseExpressionAssignment_634834);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__IfExpCS__OwnedElseExpressionAssignment_634833);
             ruleExpCS();
 
             state._fsp--;
@@ -50265,7 +50254,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__ElseIfThenExpCS__OwnedConditionAssignment_134865);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__ElseIfThenExpCS__OwnedConditionAssignment_134864);
             ruleExpCS();
 
             state._fsp--;
@@ -50310,7 +50299,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_334896);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_334895);
             ruleExpCS();
 
             state._fsp--;
@@ -50355,7 +50344,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleLetVariableCS_in_rule__LetExpCS__OwnedVariablesAssignment_134927);
+            pushFollow(FollowSets001.FOLLOW_ruleLetVariableCS_in_rule__LetExpCS__OwnedVariablesAssignment_134926);
             ruleLetVariableCS();
 
             state._fsp--;
@@ -50400,7 +50389,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleLetVariableCS_in_rule__LetExpCS__OwnedVariablesAssignment_2_134958);
+            pushFollow(FollowSets001.FOLLOW_ruleLetVariableCS_in_rule__LetExpCS__OwnedVariablesAssignment_2_134957);
             ruleLetVariableCS();
 
             state._fsp--;
@@ -50445,7 +50434,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__LetExpCS__OwnedInExpressionAssignment_434989);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__LetExpCS__OwnedInExpressionAssignment_434988);
             ruleExpCS();
 
             state._fsp--;
@@ -50490,7 +50479,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__LetVariableCS__NameAssignment_035020);
+            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__LetVariableCS__NameAssignment_035019);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -50535,7 +50524,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleRoundBracketedClauseCS_in_rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_135051);
+            pushFollow(FollowSets001.FOLLOW_ruleRoundBracketedClauseCS_in_rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_135050);
             ruleRoundBracketedClauseCS();
 
             state._fsp--;
@@ -50580,7 +50569,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__LetVariableCS__OwnedTypeAssignment_2_135082);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeExpCS_in_rule__LetVariableCS__OwnedTypeAssignment_2_135081);
             ruleTypeExpCS();
 
             state._fsp--;
@@ -50625,7 +50614,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__LetVariableCS__OwnedInitExpressionAssignment_435113);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__LetVariableCS__OwnedInitExpressionAssignment_435112);
             ruleExpCS();
 
             state._fsp--;
@@ -50670,7 +50659,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__NestedExpCS__OwnedExpressionAssignment_135144);
+            pushFollow(FollowSets001.FOLLOW_ruleExpCS_in_rule__NestedExpCS__OwnedExpressionAssignment_135143);
             ruleExpCS();
 
             state._fsp--;
@@ -50715,7 +50704,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleLOWER_in_rule__MultiplicityBoundsCS__LowerBoundAssignment_035175);
+            pushFollow(FollowSets001.FOLLOW_ruleLOWER_in_rule__MultiplicityBoundsCS__LowerBoundAssignment_035174);
             ruleLOWER();
 
             state._fsp--;
@@ -50760,7 +50749,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUPPER_in_rule__MultiplicityBoundsCS__UpperBoundAssignment_1_135206);
+            pushFollow(FollowSets001.FOLLOW_ruleUPPER_in_rule__MultiplicityBoundsCS__UpperBoundAssignment_1_135205);
             ruleUPPER();
 
             state._fsp--;
@@ -50808,7 +50797,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:17342:1: ( rule__MultiplicityStringCS__StringBoundsAlternatives_0 )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl.ui/src-gen/org/eclipse/ocl/xtext/completeocl/ui/contentassist/antlr/internal/InternalCompleteOCL.g:17342:2: rule__MultiplicityStringCS__StringBoundsAlternatives_0
             {
-            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityStringCS__StringBoundsAlternatives_0_in_rule__MultiplicityStringCS__StringBoundsAssignment35237);
+            pushFollow(FollowSets001.FOLLOW_rule__MultiplicityStringCS__StringBoundsAlternatives_0_in_rule__MultiplicityStringCS__StringBoundsAssignment35236);
             rule__MultiplicityStringCS__StringBoundsAlternatives_0();
 
             state._fsp--;
@@ -50856,7 +50845,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleFirstPathElementCS_in_rule__PathNameCS__OwnedPathElementsAssignment_035270);
+            pushFollow(FollowSets001.FOLLOW_ruleFirstPathElementCS_in_rule__PathNameCS__OwnedPathElementsAssignment_035269);
             ruleFirstPathElementCS();
 
             state._fsp--;
@@ -50901,7 +50890,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleNextPathElementCS_in_rule__PathNameCS__OwnedPathElementsAssignment_1_135301);
+            pushFollow(FollowSets001.FOLLOW_ruleNextPathElementCS_in_rule__PathNameCS__OwnedPathElementsAssignment_1_135300);
             ruleNextPathElementCS();
 
             state._fsp--;
@@ -50952,7 +50941,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__FirstPathElementCS__ReferredElementAssignment35336);
+            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__FirstPathElementCS__ReferredElementAssignment35335);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -51009,7 +50998,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnreservedName_in_rule__NextPathElementCS__ReferredElementAssignment35375);
+            pushFollow(FollowSets001.FOLLOW_ruleUnreservedName_in_rule__NextPathElementCS__ReferredElementAssignment35374);
             ruleUnreservedName();
 
             state._fsp--;
@@ -51060,7 +51049,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTemplateParameterSubstitutionCS_in_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_135410);
+            pushFollow(FollowSets001.FOLLOW_ruleTemplateParameterSubstitutionCS_in_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_135409);
             ruleTemplateParameterSubstitutionCS();
 
             state._fsp--;
@@ -51105,7 +51094,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTemplateParameterSubstitutionCS_in_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_135441);
+            pushFollow(FollowSets001.FOLLOW_ruleTemplateParameterSubstitutionCS_in_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_135440);
             ruleTemplateParameterSubstitutionCS();
 
             state._fsp--;
@@ -51150,7 +51139,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypeRefCS_in_rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment35472);
+            pushFollow(FollowSets001.FOLLOW_ruleTypeRefCS_in_rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment35471);
             ruleTypeRefCS();
 
             state._fsp--;
@@ -51195,7 +51184,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__TypeParameterCS__NameAssignment_035503);
+            pushFollow(FollowSets001.FOLLOW_ruleUnrestrictedName_in_rule__TypeParameterCS__NameAssignment_035502);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -51240,7 +51229,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypedRefCS_in_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_135534);
+            pushFollow(FollowSets001.FOLLOW_ruleTypedRefCS_in_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_135533);
             ruleTypedRefCS();
 
             state._fsp--;
@@ -51285,7 +51274,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypedRefCS_in_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_135565);
+            pushFollow(FollowSets001.FOLLOW_ruleTypedRefCS_in_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_135564);
             ruleTypedRefCS();
 
             state._fsp--;
@@ -51330,7 +51319,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypedRefCS_in_rule__TypeParameterCS__OwnedSuperAssignment_1_1_135596);
+            pushFollow(FollowSets001.FOLLOW_ruleTypedRefCS_in_rule__TypeParameterCS__OwnedSuperAssignment_1_1_135595);
             ruleTypedRefCS();
 
             state._fsp--;
@@ -51375,7 +51364,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_rulePathNameCS_in_rule__TypedTypeRefCS__OwnedPathNameAssignment_035627);
+            pushFollow(FollowSets001.FOLLOW_rulePathNameCS_in_rule__TypedTypeRefCS__OwnedPathNameAssignment_035626);
             rulePathNameCS();
 
             state._fsp--;
@@ -51420,7 +51409,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTemplateBindingCS_in_rule__TypedTypeRefCS__OwnedBindingAssignment_135658);
+            pushFollow(FollowSets001.FOLLOW_ruleTemplateBindingCS_in_rule__TypedTypeRefCS__OwnedBindingAssignment_135657);
             ruleTemplateBindingCS();
 
             state._fsp--;
@@ -51465,7 +51454,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypedRefCS_in_rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_135689);
+            pushFollow(FollowSets001.FOLLOW_ruleTypedRefCS_in_rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_135688);
             ruleTypedRefCS();
 
             state._fsp--;
@@ -51510,7 +51499,7 @@
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); 
             }
-            pushFollow(FollowSets001.FOLLOW_ruleTypedRefCS_in_rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_135720);
+            pushFollow(FollowSets001.FOLLOW_ruleTypedRefCS_in_rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_135719);
             ruleTypedRefCS();
 
             state._fsp--;
@@ -51823,11 +51812,11 @@
     static final String DFA7_eofS =
         "\20\uffff";
     static final String DFA7_minS =
-        "\2\77\1\6\5\74\1\6\5\74\2\uffff";
+        "\2\77\1\6\5\74\1\6\1\uffff\5\74\1\uffff";
     static final String DFA7_maxS =
-        "\1\135\1\77\6\74\6\75\2\uffff";
+        "\1\135\1\77\6\74\1\75\1\uffff\5\75\1\uffff";
     static final String DFA7_acceptS =
-        "\16\uffff\1\1\1\2";
+        "\11\uffff\1\1\5\uffff\1\2";
     static final String DFA7_specialS =
         "\20\uffff}>";
     static final String[] DFA7_transitionS = {
@@ -51839,14 +51828,14 @@
             "\1\10",
             "\1\10",
             "\1\10",
-            "\1\11\1\12\13\uffff\1\13\1\14\1\15\20\uffff\1\16\26\uffff"+
-            "\1\16",
-            "\1\17\1\16",
-            "\1\17\1\16",
-            "\1\17\1\16",
-            "\1\17\1\16",
-            "\1\17\1\16",
+            "\1\12\1\13\13\uffff\1\14\1\15\1\16\20\uffff\1\11\26\uffff"+
+            "\1\11",
             "",
+            "\1\17\1\11",
+            "\1\17\1\11",
+            "\1\17\1\11",
+            "\1\17\1\11",
+            "\1\17\1\11",
             ""
     };
 
@@ -53026,835 +53015,835 @@
         public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group__1__Impl_in_rule__PropertyContextDeclCS__Group__114515 = new BitSet(new long[]{0x1000000000000000L});
         public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group__2_in_rule__PropertyContextDeclCS__Group__114518 = new BitSet(new long[]{0x0000000000000002L});
         public static final BitSet FOLLOW_rule__PropertyContextDeclCS__OwnedPathNameAssignment_1_in_rule__PropertyContextDeclCS__Group__1__Impl14545 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group__2__Impl_in_rule__PropertyContextDeclCS__Group__214575 = new BitSet(new long[]{0x21F80040FFF800C0L,0x00000000000000C0L});
+        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group__2__Impl_in_rule__PropertyContextDeclCS__Group__214575 = new BitSet(new long[]{0x21F80040FFF800C0L});
         public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group__3_in_rule__PropertyContextDeclCS__Group__214578 = new BitSet(new long[]{0x0000000000000002L});
         public static final BitSet FOLLOW_60_in_rule__PropertyContextDeclCS__Group__2__Impl14606 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group__3__Impl_in_rule__PropertyContextDeclCS__Group__314637 = new BitSet(new long[]{0x21F80040FFF800C0L,0x00000000000000C0L});
+        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group__3__Impl_in_rule__PropertyContextDeclCS__Group__314637 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000C0L});
         public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group__4_in_rule__PropertyContextDeclCS__Group__314640 = new BitSet(new long[]{0x0000000000000002L});
         public static final BitSet FOLLOW_rule__PropertyContextDeclCS__OwnedTypeAssignment_3_in_rule__PropertyContextDeclCS__Group__3__Impl14667 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group__4__Impl_in_rule__PropertyContextDeclCS__Group__414698 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Alternatives_4_in_rule__PropertyContextDeclCS__Group__4__Impl14725 = new BitSet(new long[]{0x0000000000000002L,0x00000000000000C0L});
-        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_0__0__Impl_in_rule__PropertyContextDeclCS__Group_4_0__014766 = new BitSet(new long[]{0x10000000003800C0L});
-        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_0__1_in_rule__PropertyContextDeclCS__Group_4_0__014769 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_70_in_rule__PropertyContextDeclCS__Group_4_0__0__Impl14797 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_0__1__Impl_in_rule__PropertyContextDeclCS__Group_4_0__114828 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_1_in_rule__PropertyContextDeclCS__Group_4_0__1__Impl14855 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_1__0__Impl_in_rule__PropertyContextDeclCS__Group_4_1__014889 = new BitSet(new long[]{0x1000000000000000L});
-        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_1__1_in_rule__PropertyContextDeclCS__Group_4_1__014892 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_71_in_rule__PropertyContextDeclCS__Group_4_1__0__Impl14920 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_1__1__Impl_in_rule__PropertyContextDeclCS__Group_4_1__114951 = new BitSet(new long[]{0x21F80047FFF801F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_1__2_in_rule__PropertyContextDeclCS__Group_4_1__114954 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_60_in_rule__PropertyContextDeclCS__Group_4_1__1__Impl14982 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_1__2__Impl_in_rule__PropertyContextDeclCS__Group_4_1__215013 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_2_in_rule__PropertyContextDeclCS__Group_4_1__2__Impl15040 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0__0__Impl_in_rule__TemplateSignatureCS__Group_0__015076 = new BitSet(new long[]{0x00000000003800C0L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0__1_in_rule__TemplateSignatureCS__Group_0__015079 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_61_in_rule__TemplateSignatureCS__Group_0__0__Impl15107 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0__1__Impl_in_rule__TemplateSignatureCS__Group_0__115138 = new BitSet(new long[]{0x4000000000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0__2_in_rule__TemplateSignatureCS__Group_0__115141 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_0_1_in_rule__TemplateSignatureCS__Group_0__1__Impl15168 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0__2__Impl_in_rule__TemplateSignatureCS__Group_0__215198 = new BitSet(new long[]{0x4000000000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0__3_in_rule__TemplateSignatureCS__Group_0__215201 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0_2__0_in_rule__TemplateSignatureCS__Group_0__2__Impl15228 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0__3__Impl_in_rule__TemplateSignatureCS__Group_0__315259 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_62_in_rule__TemplateSignatureCS__Group_0__3__Impl15287 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0_2__0__Impl_in_rule__TemplateSignatureCS__Group_0_2__015326 = new BitSet(new long[]{0x00000000003800C0L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0_2__1_in_rule__TemplateSignatureCS__Group_0_2__015329 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_64_in_rule__TemplateSignatureCS__Group_0_2__0__Impl15357 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0_2__1__Impl_in_rule__TemplateSignatureCS__Group_0_2__115388 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1_in_rule__TemplateSignatureCS__Group_0_2__1__Impl15415 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1__0__Impl_in_rule__TemplateSignatureCS__Group_1__015449 = new BitSet(new long[]{0x00000000003800C0L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1__1_in_rule__TemplateSignatureCS__Group_1__015452 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_38_in_rule__TemplateSignatureCS__Group_1__0__Impl15480 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1__1__Impl_in_rule__TemplateSignatureCS__Group_1__115511 = new BitSet(new long[]{0x0000002000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1__2_in_rule__TemplateSignatureCS__Group_1__115514 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_1_1_in_rule__TemplateSignatureCS__Group_1__1__Impl15541 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1__2__Impl_in_rule__TemplateSignatureCS__Group_1__215571 = new BitSet(new long[]{0x0000002000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1__3_in_rule__TemplateSignatureCS__Group_1__215574 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1_2__0_in_rule__TemplateSignatureCS__Group_1__2__Impl15601 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1__3__Impl_in_rule__TemplateSignatureCS__Group_1__315632 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_37_in_rule__TemplateSignatureCS__Group_1__3__Impl15660 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1_2__0__Impl_in_rule__TemplateSignatureCS__Group_1_2__015699 = new BitSet(new long[]{0x00000000003800C0L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1_2__1_in_rule__TemplateSignatureCS__Group_1_2__015702 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_64_in_rule__TemplateSignatureCS__Group_1_2__0__Impl15730 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1_2__1__Impl_in_rule__TemplateSignatureCS__Group_1_2__115761 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1_in_rule__TemplateSignatureCS__Group_1_2__1__Impl15788 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgExpCS__Group_0__0__Impl_in_rule__NavigatingArgExpCS__Group_0__015822 = new BitSet(new long[]{0x0200000000000000L});
-        public static final BitSet FOLLOW_rule__NavigatingArgExpCS__Group_0__1_in_rule__NavigatingArgExpCS__Group_0__015825 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgExpCS__Group_0__1__Impl_in_rule__NavigatingArgExpCS__Group_0__115883 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__NavigatingArgExpCS__Group_0__1__Impl15911 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__URIPathNameCS__Group__0__Impl_in_rule__URIPathNameCS__Group__015946 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__URIPathNameCS__Group__1_in_rule__URIPathNameCS__Group__015949 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__URIPathNameCS__OwnedPathElementsAssignment_0_in_rule__URIPathNameCS__Group__0__Impl15976 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__URIPathNameCS__Group__1__Impl_in_rule__URIPathNameCS__Group__116006 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__URIPathNameCS__Group_1__0_in_rule__URIPathNameCS__Group__1__Impl16033 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__URIPathNameCS__Group_1__0__Impl_in_rule__URIPathNameCS__Group_1__016068 = new BitSet(new long[]{0x01F80000FFF800C0L});
-        public static final BitSet FOLLOW_rule__URIPathNameCS__Group_1__1_in_rule__URIPathNameCS__Group_1__016071 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_72_in_rule__URIPathNameCS__Group_1__0__Impl16099 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__URIPathNameCS__Group_1__1__Impl_in_rule__URIPathNameCS__Group_1__116130 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__URIPathNameCS__OwnedPathElementsAssignment_1_1_in_rule__URIPathNameCS__Group_1__1__Impl16157 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__URIFirstPathElementCS__Group_1__0__Impl_in_rule__URIFirstPathElementCS__Group_1__016191 = new BitSet(new long[]{0x00000000003800E0L});
-        public static final BitSet FOLLOW_rule__URIFirstPathElementCS__Group_1__1_in_rule__URIFirstPathElementCS__Group_1__016194 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__URIFirstPathElementCS__Group_1__1__Impl_in_rule__URIFirstPathElementCS__Group_1__116252 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__URIFirstPathElementCS__ReferredElementAssignment_1_1_in_rule__URIFirstPathElementCS__Group_1__1__Impl16279 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group__0__Impl_in_rule__CollectionTypeCS__Group__016313 = new BitSet(new long[]{0x2000000000000000L});
-        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group__1_in_rule__CollectionTypeCS__Group__016316 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionTypeCS__NameAssignment_0_in_rule__CollectionTypeCS__Group__0__Impl16343 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group__1__Impl_in_rule__CollectionTypeCS__Group__116373 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group_1__0_in_rule__CollectionTypeCS__Group__1__Impl16400 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group_1__0__Impl_in_rule__CollectionTypeCS__Group_1__016435 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group_1__1_in_rule__CollectionTypeCS__Group_1__016438 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_61_in_rule__CollectionTypeCS__Group_1__0__Impl16466 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group_1__1__Impl_in_rule__CollectionTypeCS__Group_1__116497 = new BitSet(new long[]{0x4000000000000000L});
-        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group_1__2_in_rule__CollectionTypeCS__Group_1__116500 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionTypeCS__OwnedTypeAssignment_1_1_in_rule__CollectionTypeCS__Group_1__1__Impl16527 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group_1__2__Impl_in_rule__CollectionTypeCS__Group_1__216557 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_62_in_rule__CollectionTypeCS__Group_1__2__Impl16585 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group__0__Impl_in_rule__TupleTypeCS__Group__016622 = new BitSet(new long[]{0x2000000000000000L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group__1_in_rule__TupleTypeCS__Group__016625 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__NameAssignment_0_in_rule__TupleTypeCS__Group__0__Impl16652 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group__1__Impl_in_rule__TupleTypeCS__Group__116682 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1__0_in_rule__TupleTypeCS__Group__1__Impl16709 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1__0__Impl_in_rule__TupleTypeCS__Group_1__016744 = new BitSet(new long[]{0x40000000003800C0L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1__1_in_rule__TupleTypeCS__Group_1__016747 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_61_in_rule__TupleTypeCS__Group_1__0__Impl16775 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1__1__Impl_in_rule__TupleTypeCS__Group_1__116806 = new BitSet(new long[]{0x40000000003800C0L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1__2_in_rule__TupleTypeCS__Group_1__116809 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1__0_in_rule__TupleTypeCS__Group_1__1__Impl16836 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1__2__Impl_in_rule__TupleTypeCS__Group_1__216867 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_62_in_rule__TupleTypeCS__Group_1__2__Impl16895 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1__0__Impl_in_rule__TupleTypeCS__Group_1_1__016932 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1__1_in_rule__TupleTypeCS__Group_1_1__016935 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__OwnedPartsAssignment_1_1_0_in_rule__TupleTypeCS__Group_1_1__0__Impl16962 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1__1__Impl_in_rule__TupleTypeCS__Group_1_1__116992 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1_1__0_in_rule__TupleTypeCS__Group_1_1__1__Impl17019 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1_1__0__Impl_in_rule__TupleTypeCS__Group_1_1_1__017054 = new BitSet(new long[]{0x00000000003800C0L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1_1__1_in_rule__TupleTypeCS__Group_1_1_1__017057 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_64_in_rule__TupleTypeCS__Group_1_1_1__0__Impl17085 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1_1__1__Impl_in_rule__TupleTypeCS__Group_1_1_1__117116 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1_in_rule__TupleTypeCS__Group_1_1_1__1__Impl17143 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TuplePartCS__Group__0__Impl_in_rule__TuplePartCS__Group__017177 = new BitSet(new long[]{0x1000000000000000L});
-        public static final BitSet FOLLOW_rule__TuplePartCS__Group__1_in_rule__TuplePartCS__Group__017180 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TuplePartCS__NameAssignment_0_in_rule__TuplePartCS__Group__0__Impl17207 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TuplePartCS__Group__1__Impl_in_rule__TuplePartCS__Group__117237 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__TuplePartCS__Group__2_in_rule__TuplePartCS__Group__117240 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_60_in_rule__TuplePartCS__Group__1__Impl17268 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TuplePartCS__Group__2__Impl_in_rule__TuplePartCS__Group__217299 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TuplePartCS__OwnedTypeAssignment_2_in_rule__TuplePartCS__Group__2__Impl17326 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group__0__Impl_in_rule__CollectionLiteralExpCS__Group__017362 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group__1_in_rule__CollectionLiteralExpCS__Group__017365 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__OwnedTypeAssignment_0_in_rule__CollectionLiteralExpCS__Group__0__Impl17392 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group__1__Impl_in_rule__CollectionLiteralExpCS__Group__117422 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E400L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group__2_in_rule__CollectionLiteralExpCS__Group__117425 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_73_in_rule__CollectionLiteralExpCS__Group__1__Impl17453 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group__2__Impl_in_rule__CollectionLiteralExpCS__Group__217484 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E400L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group__3_in_rule__CollectionLiteralExpCS__Group__217487 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2__0_in_rule__CollectionLiteralExpCS__Group__2__Impl17514 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group__3__Impl_in_rule__CollectionLiteralExpCS__Group__317545 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_74_in_rule__CollectionLiteralExpCS__Group__3__Impl17573 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2__0__Impl_in_rule__CollectionLiteralExpCS__Group_2__017612 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2__1_in_rule__CollectionLiteralExpCS__Group_2__017615 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0_in_rule__CollectionLiteralExpCS__Group_2__0__Impl17642 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2__1__Impl_in_rule__CollectionLiteralExpCS__Group_2__117672 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__0_in_rule__CollectionLiteralExpCS__Group_2__1__Impl17699 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__0__Impl_in_rule__CollectionLiteralExpCS__Group_2_1__017734 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__1_in_rule__CollectionLiteralExpCS__Group_2_1__017737 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_64_in_rule__CollectionLiteralExpCS__Group_2_1__0__Impl17765 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__1__Impl_in_rule__CollectionLiteralExpCS__Group_2_1__117796 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1_in_rule__CollectionLiteralExpCS__Group_2_1__1__Impl17823 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__Group_0__0__Impl_in_rule__CollectionLiteralPartCS__Group_0__017857 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__Group_0__1_in_rule__CollectionLiteralPartCS__Group_0__017860 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0_in_rule__CollectionLiteralPartCS__Group_0__0__Impl17887 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__Group_0__1__Impl_in_rule__CollectionLiteralPartCS__Group_0__117917 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__0_in_rule__CollectionLiteralPartCS__Group_0__1__Impl17944 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__0__Impl_in_rule__CollectionLiteralPartCS__Group_0_1__017979 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__1_in_rule__CollectionLiteralPartCS__Group_0_1__017982 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_75_in_rule__CollectionLiteralPartCS__Group_0_1__0__Impl18010 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__1__Impl_in_rule__CollectionLiteralPartCS__Group_0_1__118041 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1_in_rule__CollectionLiteralPartCS__Group_0_1__1__Impl18068 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group__0__Impl_in_rule__CollectionPatternCS__Group__018102 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group__1_in_rule__CollectionPatternCS__Group__018105 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__OwnedTypeAssignment_0_in_rule__CollectionPatternCS__Group__0__Impl18132 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group__1__Impl_in_rule__CollectionPatternCS__Group__118162 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E400L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group__2_in_rule__CollectionPatternCS__Group__118165 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_73_in_rule__CollectionPatternCS__Group__1__Impl18193 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group__2__Impl_in_rule__CollectionPatternCS__Group__218224 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E400L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group__3_in_rule__CollectionPatternCS__Group__218227 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2__0_in_rule__CollectionPatternCS__Group__2__Impl18254 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group__3__Impl_in_rule__CollectionPatternCS__Group__318285 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_74_in_rule__CollectionPatternCS__Group__3__Impl18313 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2__0__Impl_in_rule__CollectionPatternCS__Group_2__018352 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001001L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2__1_in_rule__CollectionPatternCS__Group_2__018355 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__OwnedPartsAssignment_2_0_in_rule__CollectionPatternCS__Group_2__0__Impl18382 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2__1__Impl_in_rule__CollectionPatternCS__Group_2__118412 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001001L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2__2_in_rule__CollectionPatternCS__Group_2__118415 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_1__0_in_rule__CollectionPatternCS__Group_2__1__Impl18442 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2__2__Impl_in_rule__CollectionPatternCS__Group_2__218473 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_2__0_in_rule__CollectionPatternCS__Group_2__2__Impl18500 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_1__0__Impl_in_rule__CollectionPatternCS__Group_2_1__018536 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_1__1_in_rule__CollectionPatternCS__Group_2_1__018539 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_64_in_rule__CollectionPatternCS__Group_2_1__0__Impl18567 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_1__1__Impl_in_rule__CollectionPatternCS__Group_2_1__118598 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1_in_rule__CollectionPatternCS__Group_2_1__1__Impl18625 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_2__0__Impl_in_rule__CollectionPatternCS__Group_2_2__018659 = new BitSet(new long[]{0x00000000000000C0L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_2__1_in_rule__CollectionPatternCS__Group_2_2__018662 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_76_in_rule__CollectionPatternCS__Group_2_2__0__Impl18690 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_2__1__Impl_in_rule__CollectionPatternCS__Group_2_2__118721 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1_in_rule__CollectionPatternCS__Group_2_2__1__Impl18748 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ConstructorPartCS__Group__0__Impl_in_rule__ConstructorPartCS__Group__018782 = new BitSet(new long[]{0x0000020000000000L});
-        public static final BitSet FOLLOW_rule__ConstructorPartCS__Group__1_in_rule__ConstructorPartCS__Group__018785 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ConstructorPartCS__ReferredPropertyAssignment_0_in_rule__ConstructorPartCS__Group__0__Impl18812 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ConstructorPartCS__Group__1__Impl_in_rule__ConstructorPartCS__Group__118842 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__ConstructorPartCS__Group__2_in_rule__ConstructorPartCS__Group__118845 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_41_in_rule__ConstructorPartCS__Group__1__Impl18873 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ConstructorPartCS__Group__2__Impl_in_rule__ConstructorPartCS__Group__218904 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ConstructorPartCS__OwnedInitExpressionAssignment_2_in_rule__ConstructorPartCS__Group__2__Impl18931 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PatternExpCS__Group__0__Impl_in_rule__PatternExpCS__Group__018967 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__PatternExpCS__Group__1_in_rule__PatternExpCS__Group__018970 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PatternExpCS__PatternVariableNameAssignment_0_in_rule__PatternExpCS__Group__0__Impl18997 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PatternExpCS__Group__1__Impl_in_rule__PatternExpCS__Group__119028 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__PatternExpCS__Group__2_in_rule__PatternExpCS__Group__119031 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_60_in_rule__PatternExpCS__Group__1__Impl19059 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PatternExpCS__Group__2__Impl_in_rule__PatternExpCS__Group__219090 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PatternExpCS__OwnedPatternTypeAssignment_2_in_rule__PatternExpCS__Group__2__Impl19117 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__Group__0__Impl_in_rule__LambdaLiteralExpCS__Group__019153 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__Group__1_in_rule__LambdaLiteralExpCS__Group__019156 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_77_in_rule__LambdaLiteralExpCS__Group__0__Impl19184 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__Group__1__Impl_in_rule__LambdaLiteralExpCS__Group__119215 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__Group__2_in_rule__LambdaLiteralExpCS__Group__119218 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_73_in_rule__LambdaLiteralExpCS__Group__1__Impl19246 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__Group__2__Impl_in_rule__LambdaLiteralExpCS__Group__219277 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__Group__3_in_rule__LambdaLiteralExpCS__Group__219280 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2_in_rule__LambdaLiteralExpCS__Group__2__Impl19307 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__Group__3__Impl_in_rule__LambdaLiteralExpCS__Group__319337 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_74_in_rule__LambdaLiteralExpCS__Group__3__Impl19365 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__0__Impl_in_rule__TupleLiteralExpCS__Group__019404 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__1_in_rule__TupleLiteralExpCS__Group__019407 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_51_in_rule__TupleLiteralExpCS__Group__0__Impl19435 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__1__Impl_in_rule__TupleLiteralExpCS__Group__119466 = new BitSet(new long[]{0x00000000003800C0L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__2_in_rule__TupleLiteralExpCS__Group__119469 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_73_in_rule__TupleLiteralExpCS__Group__1__Impl19497 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__2__Impl_in_rule__TupleLiteralExpCS__Group__219528 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000401L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__3_in_rule__TupleLiteralExpCS__Group__219531 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__OwnedPartsAssignment_2_in_rule__TupleLiteralExpCS__Group__2__Impl19558 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__3__Impl_in_rule__TupleLiteralExpCS__Group__319588 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000401L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__4_in_rule__TupleLiteralExpCS__Group__319591 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group_3__0_in_rule__TupleLiteralExpCS__Group__3__Impl19618 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__4__Impl_in_rule__TupleLiteralExpCS__Group__419649 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_74_in_rule__TupleLiteralExpCS__Group__4__Impl19677 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group_3__0__Impl_in_rule__TupleLiteralExpCS__Group_3__019718 = new BitSet(new long[]{0x00000000003800C0L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group_3__1_in_rule__TupleLiteralExpCS__Group_3__019721 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_64_in_rule__TupleLiteralExpCS__Group_3__0__Impl19749 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group_3__1__Impl_in_rule__TupleLiteralExpCS__Group_3__119780 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1_in_rule__TupleLiteralExpCS__Group_3__1__Impl19807 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group__0__Impl_in_rule__TupleLiteralPartCS__Group__019841 = new BitSet(new long[]{0x1000020000000000L});
-        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group__1_in_rule__TupleLiteralPartCS__Group__019844 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__NameAssignment_0_in_rule__TupleLiteralPartCS__Group__0__Impl19871 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group__1__Impl_in_rule__TupleLiteralPartCS__Group__119901 = new BitSet(new long[]{0x1000020000000000L});
-        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group__2_in_rule__TupleLiteralPartCS__Group__119904 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group_1__0_in_rule__TupleLiteralPartCS__Group__1__Impl19931 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group__2__Impl_in_rule__TupleLiteralPartCS__Group__219962 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group__3_in_rule__TupleLiteralPartCS__Group__219965 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_41_in_rule__TupleLiteralPartCS__Group__2__Impl19993 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group__3__Impl_in_rule__TupleLiteralPartCS__Group__320024 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3_in_rule__TupleLiteralPartCS__Group__3__Impl20051 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group_1__0__Impl_in_rule__TupleLiteralPartCS__Group_1__020089 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group_1__1_in_rule__TupleLiteralPartCS__Group_1__020092 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_60_in_rule__TupleLiteralPartCS__Group_1__0__Impl20120 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group_1__1__Impl_in_rule__TupleLiteralPartCS__Group_1__120151 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1_in_rule__TupleLiteralPartCS__Group_1__1__Impl20178 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl_in_rule__UnlimitedNaturalLiteralExpCS__Group__020212 = new BitSet(new long[]{0x0000000400000000L});
-        public static final BitSet FOLLOW_rule__UnlimitedNaturalLiteralExpCS__Group__1_in_rule__UnlimitedNaturalLiteralExpCS__Group__020215 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl_in_rule__UnlimitedNaturalLiteralExpCS__Group__120273 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_34_in_rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl20301 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__InvalidLiteralExpCS__Group__0__Impl_in_rule__InvalidLiteralExpCS__Group__020336 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
-        public static final BitSet FOLLOW_rule__InvalidLiteralExpCS__Group__1_in_rule__InvalidLiteralExpCS__Group__020339 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__InvalidLiteralExpCS__Group__1__Impl_in_rule__InvalidLiteralExpCS__Group__120397 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_78_in_rule__InvalidLiteralExpCS__Group__1__Impl20425 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NullLiteralExpCS__Group__0__Impl_in_rule__NullLiteralExpCS__Group__020460 = new BitSet(new long[]{0x0000000400000030L,0x000000018000C000L});
-        public static final BitSet FOLLOW_rule__NullLiteralExpCS__Group__1_in_rule__NullLiteralExpCS__Group__020463 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NullLiteralExpCS__Group__1__Impl_in_rule__NullLiteralExpCS__Group__120521 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_79_in_rule__NullLiteralExpCS__Group__1__Impl20549 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeLiteralWithMultiplicityCS__Group__0__Impl_in_rule__TypeLiteralWithMultiplicityCS__Group__020584 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-        public static final BitSet FOLLOW_rule__TypeLiteralWithMultiplicityCS__Group__1_in_rule__TypeLiteralWithMultiplicityCS__Group__020587 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeLiteralCS_in_rule__TypeLiteralWithMultiplicityCS__Group__0__Impl20614 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeLiteralWithMultiplicityCS__Group__1__Impl_in_rule__TypeLiteralWithMultiplicityCS__Group__120643 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1_in_rule__TypeLiteralWithMultiplicityCS__Group__1__Impl20670 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group__0__Impl_in_rule__TypeNameExpCS__Group__020705 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group__1_in_rule__TypeNameExpCS__Group__020708 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__OwnedPathNameAssignment_0_in_rule__TypeNameExpCS__Group__0__Impl20735 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group__1__Impl_in_rule__TypeNameExpCS__Group__120765 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1__0_in_rule__TypeNameExpCS__Group__1__Impl20792 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1__0__Impl_in_rule__TypeNameExpCS__Group_1__020827 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1__1_in_rule__TypeNameExpCS__Group_1__020830 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0_in_rule__TypeNameExpCS__Group_1__0__Impl20857 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1__1__Impl_in_rule__TypeNameExpCS__Group_1__120887 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1_1__0_in_rule__TypeNameExpCS__Group_1__1__Impl20914 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1_1__0__Impl_in_rule__TypeNameExpCS__Group_1_1__020949 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1_1__1_in_rule__TypeNameExpCS__Group_1_1__020952 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_73_in_rule__TypeNameExpCS__Group_1_1__0__Impl20980 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1_1__1__Impl_in_rule__TypeNameExpCS__Group_1_1__121011 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1_1__2_in_rule__TypeNameExpCS__Group_1_1__121014 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1_in_rule__TypeNameExpCS__Group_1_1__1__Impl21041 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1_1__2__Impl_in_rule__TypeNameExpCS__Group_1_1__221071 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_74_in_rule__TypeNameExpCS__Group_1_1__2__Impl21099 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeExpCS__Group__0__Impl_in_rule__TypeExpCS__Group__021136 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-        public static final BitSet FOLLOW_rule__TypeExpCS__Group__1_in_rule__TypeExpCS__Group__021139 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeExpCS__Alternatives_0_in_rule__TypeExpCS__Group__0__Impl21166 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeExpCS__Group__1__Impl_in_rule__TypeExpCS__Group__121196 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeExpCS__OwnedMultiplicityAssignment_1_in_rule__TypeExpCS__Group__1__Impl21223 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ExpCS__Group_0__0__Impl_in_rule__ExpCS__Group_0__021258 = new BitSet(new long[]{0x0007FFFD00060000L});
-        public static final BitSet FOLLOW_rule__ExpCS__Group_0__1_in_rule__ExpCS__Group_0__021261 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrefixedPrimaryExpCS_in_rule__ExpCS__Group_0__0__Impl21288 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ExpCS__Group_0__1__Impl_in_rule__ExpCS__Group_0__121317 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ExpCS__Group_0_1__0_in_rule__ExpCS__Group_0__1__Impl21344 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ExpCS__Group_0_1__0__Impl_in_rule__ExpCS__Group_0_1__021379 = new BitSet(new long[]{0x0007FFFD00060000L});
-        public static final BitSet FOLLOW_rule__ExpCS__Group_0_1__1_in_rule__ExpCS__Group_0_1__021382 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ExpCS__Group_0_1__1__Impl_in_rule__ExpCS__Group_0_1__121440 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__ExpCS__Group_0_1__2_in_rule__ExpCS__Group_0_1__121443 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ExpCS__NameAssignment_0_1_1_in_rule__ExpCS__Group_0_1__1__Impl21470 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ExpCS__Group_0_1__2__Impl_in_rule__ExpCS__Group_0_1__221500 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ExpCS__OwnedRightAssignment_0_1_2_in_rule__ExpCS__Group_0_1__2__Impl21527 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PrefixedLetExpCS__Group_0__0__Impl_in_rule__PrefixedLetExpCS__Group_0__021563 = new BitSet(new long[]{0x0000000300000000L});
-        public static final BitSet FOLLOW_rule__PrefixedLetExpCS__Group_0__1_in_rule__PrefixedLetExpCS__Group_0__021566 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PrefixedLetExpCS__Group_0__1__Impl_in_rule__PrefixedLetExpCS__Group_0__121624 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__PrefixedLetExpCS__Group_0__2_in_rule__PrefixedLetExpCS__Group_0__121627 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PrefixedLetExpCS__NameAssignment_0_1_in_rule__PrefixedLetExpCS__Group_0__1__Impl21654 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PrefixedLetExpCS__Group_0__2__Impl_in_rule__PrefixedLetExpCS__Group_0__221684 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PrefixedLetExpCS__OwnedRightAssignment_0_2_in_rule__PrefixedLetExpCS__Group_0__2__Impl21711 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__0__Impl_in_rule__PrefixedPrimaryExpCS__Group_0__021747 = new BitSet(new long[]{0x0000000300000000L});
-        public static final BitSet FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__1_in_rule__PrefixedPrimaryExpCS__Group_0__021750 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__1__Impl_in_rule__PrefixedPrimaryExpCS__Group_0__121808 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018208E000L});
-        public static final BitSet FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__2_in_rule__PrefixedPrimaryExpCS__Group_0__121811 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PrefixedPrimaryExpCS__NameAssignment_0_1_in_rule__PrefixedPrimaryExpCS__Group_0__1__Impl21838 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__2__Impl_in_rule__PrefixedPrimaryExpCS__Group_0__221868 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2_in_rule__PrefixedPrimaryExpCS__Group_0__2__Impl21895 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NameExpCS__Group__0__Impl_in_rule__NameExpCS__Group__021931 = new BitSet(new long[]{0x2000000000000000L,0x0000000200010200L});
-        public static final BitSet FOLLOW_rule__NameExpCS__Group__1_in_rule__NameExpCS__Group__021934 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NameExpCS__OwnedPathNameAssignment_0_in_rule__NameExpCS__Group__0__Impl21961 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NameExpCS__Group__1__Impl_in_rule__NameExpCS__Group__121991 = new BitSet(new long[]{0x2000000000000000L,0x0000000200010200L});
-        public static final BitSet FOLLOW_rule__NameExpCS__Group__2_in_rule__NameExpCS__Group__121994 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1_in_rule__NameExpCS__Group__1__Impl22021 = new BitSet(new long[]{0x0000000000000002L,0x0000000000010000L});
-        public static final BitSet FOLLOW_rule__NameExpCS__Group__2__Impl_in_rule__NameExpCS__Group__222052 = new BitSet(new long[]{0x2000000000000000L,0x0000000200010200L});
-        public static final BitSet FOLLOW_rule__NameExpCS__Group__3_in_rule__NameExpCS__Group__222055 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2_in_rule__NameExpCS__Group__2__Impl22082 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NameExpCS__Group__3__Impl_in_rule__NameExpCS__Group__322113 = new BitSet(new long[]{0x2000000000000000L,0x0000000200010200L});
-        public static final BitSet FOLLOW_rule__NameExpCS__Group__4_in_rule__NameExpCS__Group__322116 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3_in_rule__NameExpCS__Group__3__Impl22143 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NameExpCS__Group__4__Impl_in_rule__NameExpCS__Group__422174 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NameExpCS__Group_4__0_in_rule__NameExpCS__Group__4__Impl22201 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NameExpCS__Group_4__0__Impl_in_rule__NameExpCS__Group_4__022242 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NameExpCS__Group_4__1_in_rule__NameExpCS__Group_4__022245 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NameExpCS__IsPreAssignment_4_0_in_rule__NameExpCS__Group_4__0__Impl22272 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NameExpCS__Group_4__1__Impl_in_rule__NameExpCS__Group_4__122302 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_65_in_rule__NameExpCS__Group_4__1__Impl22330 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group__0__Impl_in_rule__CurlyBracketedClauseCS__Group__022365 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group__1_in_rule__CurlyBracketedClauseCS__Group__022368 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group__1__Impl_in_rule__CurlyBracketedClauseCS__Group__122426 = new BitSet(new long[]{0x00000000003800E0L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group__2_in_rule__CurlyBracketedClauseCS__Group__122429 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_73_in_rule__CurlyBracketedClauseCS__Group__1__Impl22457 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group__2__Impl_in_rule__CurlyBracketedClauseCS__Group__222488 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group__3_in_rule__CurlyBracketedClauseCS__Group__222491 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Alternatives_2_in_rule__CurlyBracketedClauseCS__Group__2__Impl22518 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group__3__Impl_in_rule__CurlyBracketedClauseCS__Group__322548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group__4__Impl_in_rule__PropertyContextDeclCS__Group__414697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Alternatives_4_in_rule__PropertyContextDeclCS__Group__4__Impl14724 = new BitSet(new long[]{0x0000000000000002L,0x00000000000000C0L});
+        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_0__0__Impl_in_rule__PropertyContextDeclCS__Group_4_0__014765 = new BitSet(new long[]{0x10000000003800C0L});
+        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_0__1_in_rule__PropertyContextDeclCS__Group_4_0__014768 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_70_in_rule__PropertyContextDeclCS__Group_4_0__0__Impl14796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_0__1__Impl_in_rule__PropertyContextDeclCS__Group_4_0__114827 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_1_in_rule__PropertyContextDeclCS__Group_4_0__1__Impl14854 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_1__0__Impl_in_rule__PropertyContextDeclCS__Group_4_1__014888 = new BitSet(new long[]{0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_1__1_in_rule__PropertyContextDeclCS__Group_4_1__014891 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_71_in_rule__PropertyContextDeclCS__Group_4_1__0__Impl14919 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_1__1__Impl_in_rule__PropertyContextDeclCS__Group_4_1__114950 = new BitSet(new long[]{0x21F80047FFF801F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_1__2_in_rule__PropertyContextDeclCS__Group_4_1__114953 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__PropertyContextDeclCS__Group_4_1__1__Impl14981 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__Group_4_1__2__Impl_in_rule__PropertyContextDeclCS__Group_4_1__215012 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_2_in_rule__PropertyContextDeclCS__Group_4_1__2__Impl15039 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0__0__Impl_in_rule__TemplateSignatureCS__Group_0__015075 = new BitSet(new long[]{0x00000000003800C0L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0__1_in_rule__TemplateSignatureCS__Group_0__015078 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__TemplateSignatureCS__Group_0__0__Impl15106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0__1__Impl_in_rule__TemplateSignatureCS__Group_0__115137 = new BitSet(new long[]{0x4000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0__2_in_rule__TemplateSignatureCS__Group_0__115140 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_0_1_in_rule__TemplateSignatureCS__Group_0__1__Impl15167 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0__2__Impl_in_rule__TemplateSignatureCS__Group_0__215197 = new BitSet(new long[]{0x4000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0__3_in_rule__TemplateSignatureCS__Group_0__215200 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0_2__0_in_rule__TemplateSignatureCS__Group_0__2__Impl15227 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0__3__Impl_in_rule__TemplateSignatureCS__Group_0__315258 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__TemplateSignatureCS__Group_0__3__Impl15286 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0_2__0__Impl_in_rule__TemplateSignatureCS__Group_0_2__015325 = new BitSet(new long[]{0x00000000003800C0L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0_2__1_in_rule__TemplateSignatureCS__Group_0_2__015328 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__TemplateSignatureCS__Group_0_2__0__Impl15356 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_0_2__1__Impl_in_rule__TemplateSignatureCS__Group_0_2__115387 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1_in_rule__TemplateSignatureCS__Group_0_2__1__Impl15414 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1__0__Impl_in_rule__TemplateSignatureCS__Group_1__015448 = new BitSet(new long[]{0x00000000003800C0L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1__1_in_rule__TemplateSignatureCS__Group_1__015451 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_rule__TemplateSignatureCS__Group_1__0__Impl15479 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1__1__Impl_in_rule__TemplateSignatureCS__Group_1__115510 = new BitSet(new long[]{0x0000002000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1__2_in_rule__TemplateSignatureCS__Group_1__115513 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_1_1_in_rule__TemplateSignatureCS__Group_1__1__Impl15540 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1__2__Impl_in_rule__TemplateSignatureCS__Group_1__215570 = new BitSet(new long[]{0x0000002000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1__3_in_rule__TemplateSignatureCS__Group_1__215573 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1_2__0_in_rule__TemplateSignatureCS__Group_1__2__Impl15600 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1__3__Impl_in_rule__TemplateSignatureCS__Group_1__315631 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_37_in_rule__TemplateSignatureCS__Group_1__3__Impl15659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1_2__0__Impl_in_rule__TemplateSignatureCS__Group_1_2__015698 = new BitSet(new long[]{0x00000000003800C0L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1_2__1_in_rule__TemplateSignatureCS__Group_1_2__015701 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__TemplateSignatureCS__Group_1_2__0__Impl15729 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__Group_1_2__1__Impl_in_rule__TemplateSignatureCS__Group_1_2__115760 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1_in_rule__TemplateSignatureCS__Group_1_2__1__Impl15787 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgExpCS__Group_0__0__Impl_in_rule__NavigatingArgExpCS__Group_0__015821 = new BitSet(new long[]{0x0200000000000000L});
+        public static final BitSet FOLLOW_rule__NavigatingArgExpCS__Group_0__1_in_rule__NavigatingArgExpCS__Group_0__015824 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgExpCS__Group_0__1__Impl_in_rule__NavigatingArgExpCS__Group_0__115882 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_57_in_rule__NavigatingArgExpCS__Group_0__1__Impl15910 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__URIPathNameCS__Group__0__Impl_in_rule__URIPathNameCS__Group__015945 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__URIPathNameCS__Group__1_in_rule__URIPathNameCS__Group__015948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__URIPathNameCS__OwnedPathElementsAssignment_0_in_rule__URIPathNameCS__Group__0__Impl15975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__URIPathNameCS__Group__1__Impl_in_rule__URIPathNameCS__Group__116005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__URIPathNameCS__Group_1__0_in_rule__URIPathNameCS__Group__1__Impl16032 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__URIPathNameCS__Group_1__0__Impl_in_rule__URIPathNameCS__Group_1__016067 = new BitSet(new long[]{0x01F80000FFF800C0L});
+        public static final BitSet FOLLOW_rule__URIPathNameCS__Group_1__1_in_rule__URIPathNameCS__Group_1__016070 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_72_in_rule__URIPathNameCS__Group_1__0__Impl16098 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__URIPathNameCS__Group_1__1__Impl_in_rule__URIPathNameCS__Group_1__116129 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__URIPathNameCS__OwnedPathElementsAssignment_1_1_in_rule__URIPathNameCS__Group_1__1__Impl16156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__URIFirstPathElementCS__Group_1__0__Impl_in_rule__URIFirstPathElementCS__Group_1__016190 = new BitSet(new long[]{0x00000000003800E0L});
+        public static final BitSet FOLLOW_rule__URIFirstPathElementCS__Group_1__1_in_rule__URIFirstPathElementCS__Group_1__016193 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__URIFirstPathElementCS__Group_1__1__Impl_in_rule__URIFirstPathElementCS__Group_1__116251 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__URIFirstPathElementCS__ReferredElementAssignment_1_1_in_rule__URIFirstPathElementCS__Group_1__1__Impl16278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group__0__Impl_in_rule__CollectionTypeCS__Group__016312 = new BitSet(new long[]{0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group__1_in_rule__CollectionTypeCS__Group__016315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionTypeCS__NameAssignment_0_in_rule__CollectionTypeCS__Group__0__Impl16342 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group__1__Impl_in_rule__CollectionTypeCS__Group__116372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group_1__0_in_rule__CollectionTypeCS__Group__1__Impl16399 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group_1__0__Impl_in_rule__CollectionTypeCS__Group_1__016434 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group_1__1_in_rule__CollectionTypeCS__Group_1__016437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__CollectionTypeCS__Group_1__0__Impl16465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group_1__1__Impl_in_rule__CollectionTypeCS__Group_1__116496 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group_1__2_in_rule__CollectionTypeCS__Group_1__116499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionTypeCS__OwnedTypeAssignment_1_1_in_rule__CollectionTypeCS__Group_1__1__Impl16526 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionTypeCS__Group_1__2__Impl_in_rule__CollectionTypeCS__Group_1__216556 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__CollectionTypeCS__Group_1__2__Impl16584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group__0__Impl_in_rule__TupleTypeCS__Group__016621 = new BitSet(new long[]{0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group__1_in_rule__TupleTypeCS__Group__016624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__NameAssignment_0_in_rule__TupleTypeCS__Group__0__Impl16651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group__1__Impl_in_rule__TupleTypeCS__Group__116681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1__0_in_rule__TupleTypeCS__Group__1__Impl16708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1__0__Impl_in_rule__TupleTypeCS__Group_1__016743 = new BitSet(new long[]{0x40000000003800C0L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1__1_in_rule__TupleTypeCS__Group_1__016746 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__TupleTypeCS__Group_1__0__Impl16774 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1__1__Impl_in_rule__TupleTypeCS__Group_1__116805 = new BitSet(new long[]{0x40000000003800C0L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1__2_in_rule__TupleTypeCS__Group_1__116808 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1__0_in_rule__TupleTypeCS__Group_1__1__Impl16835 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1__2__Impl_in_rule__TupleTypeCS__Group_1__216866 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__TupleTypeCS__Group_1__2__Impl16894 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1__0__Impl_in_rule__TupleTypeCS__Group_1_1__016931 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1__1_in_rule__TupleTypeCS__Group_1_1__016934 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__OwnedPartsAssignment_1_1_0_in_rule__TupleTypeCS__Group_1_1__0__Impl16961 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1__1__Impl_in_rule__TupleTypeCS__Group_1_1__116991 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1_1__0_in_rule__TupleTypeCS__Group_1_1__1__Impl17018 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1_1__0__Impl_in_rule__TupleTypeCS__Group_1_1_1__017053 = new BitSet(new long[]{0x00000000003800C0L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1_1__1_in_rule__TupleTypeCS__Group_1_1_1__017056 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__TupleTypeCS__Group_1_1_1__0__Impl17084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__Group_1_1_1__1__Impl_in_rule__TupleTypeCS__Group_1_1_1__117115 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1_in_rule__TupleTypeCS__Group_1_1_1__1__Impl17142 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TuplePartCS__Group__0__Impl_in_rule__TuplePartCS__Group__017176 = new BitSet(new long[]{0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__TuplePartCS__Group__1_in_rule__TuplePartCS__Group__017179 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TuplePartCS__NameAssignment_0_in_rule__TuplePartCS__Group__0__Impl17206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TuplePartCS__Group__1__Impl_in_rule__TuplePartCS__Group__117236 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__TuplePartCS__Group__2_in_rule__TuplePartCS__Group__117239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__TuplePartCS__Group__1__Impl17267 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TuplePartCS__Group__2__Impl_in_rule__TuplePartCS__Group__217298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TuplePartCS__OwnedTypeAssignment_2_in_rule__TuplePartCS__Group__2__Impl17325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group__0__Impl_in_rule__CollectionLiteralExpCS__Group__017361 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group__1_in_rule__CollectionLiteralExpCS__Group__017364 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__OwnedTypeAssignment_0_in_rule__CollectionLiteralExpCS__Group__0__Impl17391 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group__1__Impl_in_rule__CollectionLiteralExpCS__Group__117421 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E400L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group__2_in_rule__CollectionLiteralExpCS__Group__117424 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_rule__CollectionLiteralExpCS__Group__1__Impl17452 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group__2__Impl_in_rule__CollectionLiteralExpCS__Group__217483 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E400L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group__3_in_rule__CollectionLiteralExpCS__Group__217486 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2__0_in_rule__CollectionLiteralExpCS__Group__2__Impl17513 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group__3__Impl_in_rule__CollectionLiteralExpCS__Group__317544 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_74_in_rule__CollectionLiteralExpCS__Group__3__Impl17572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2__0__Impl_in_rule__CollectionLiteralExpCS__Group_2__017611 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2__1_in_rule__CollectionLiteralExpCS__Group_2__017614 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0_in_rule__CollectionLiteralExpCS__Group_2__0__Impl17641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2__1__Impl_in_rule__CollectionLiteralExpCS__Group_2__117671 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__0_in_rule__CollectionLiteralExpCS__Group_2__1__Impl17698 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__0__Impl_in_rule__CollectionLiteralExpCS__Group_2_1__017733 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__1_in_rule__CollectionLiteralExpCS__Group_2_1__017736 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__CollectionLiteralExpCS__Group_2_1__0__Impl17764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__Group_2_1__1__Impl_in_rule__CollectionLiteralExpCS__Group_2_1__117795 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1_in_rule__CollectionLiteralExpCS__Group_2_1__1__Impl17822 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__Group_0__0__Impl_in_rule__CollectionLiteralPartCS__Group_0__017856 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__Group_0__1_in_rule__CollectionLiteralPartCS__Group_0__017859 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0_in_rule__CollectionLiteralPartCS__Group_0__0__Impl17886 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__Group_0__1__Impl_in_rule__CollectionLiteralPartCS__Group_0__117916 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__0_in_rule__CollectionLiteralPartCS__Group_0__1__Impl17943 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__0__Impl_in_rule__CollectionLiteralPartCS__Group_0_1__017978 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__1_in_rule__CollectionLiteralPartCS__Group_0_1__017981 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_75_in_rule__CollectionLiteralPartCS__Group_0_1__0__Impl18009 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__Group_0_1__1__Impl_in_rule__CollectionLiteralPartCS__Group_0_1__118040 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1_in_rule__CollectionLiteralPartCS__Group_0_1__1__Impl18067 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group__0__Impl_in_rule__CollectionPatternCS__Group__018101 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group__1_in_rule__CollectionPatternCS__Group__018104 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__OwnedTypeAssignment_0_in_rule__CollectionPatternCS__Group__0__Impl18131 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group__1__Impl_in_rule__CollectionPatternCS__Group__118161 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E400L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group__2_in_rule__CollectionPatternCS__Group__118164 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_rule__CollectionPatternCS__Group__1__Impl18192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group__2__Impl_in_rule__CollectionPatternCS__Group__218223 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E400L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group__3_in_rule__CollectionPatternCS__Group__218226 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2__0_in_rule__CollectionPatternCS__Group__2__Impl18253 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group__3__Impl_in_rule__CollectionPatternCS__Group__318284 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_74_in_rule__CollectionPatternCS__Group__3__Impl18312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2__0__Impl_in_rule__CollectionPatternCS__Group_2__018351 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001001L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2__1_in_rule__CollectionPatternCS__Group_2__018354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__OwnedPartsAssignment_2_0_in_rule__CollectionPatternCS__Group_2__0__Impl18381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2__1__Impl_in_rule__CollectionPatternCS__Group_2__118411 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001001L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2__2_in_rule__CollectionPatternCS__Group_2__118414 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_1__0_in_rule__CollectionPatternCS__Group_2__1__Impl18441 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2__2__Impl_in_rule__CollectionPatternCS__Group_2__218472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_2__0_in_rule__CollectionPatternCS__Group_2__2__Impl18499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_1__0__Impl_in_rule__CollectionPatternCS__Group_2_1__018535 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_1__1_in_rule__CollectionPatternCS__Group_2_1__018538 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__CollectionPatternCS__Group_2_1__0__Impl18566 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_1__1__Impl_in_rule__CollectionPatternCS__Group_2_1__118597 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1_in_rule__CollectionPatternCS__Group_2_1__1__Impl18624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_2__0__Impl_in_rule__CollectionPatternCS__Group_2_2__018658 = new BitSet(new long[]{0x00000000000000C0L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_2__1_in_rule__CollectionPatternCS__Group_2_2__018661 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_76_in_rule__CollectionPatternCS__Group_2_2__0__Impl18689 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__Group_2_2__1__Impl_in_rule__CollectionPatternCS__Group_2_2__118720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1_in_rule__CollectionPatternCS__Group_2_2__1__Impl18747 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstructorPartCS__Group__0__Impl_in_rule__ConstructorPartCS__Group__018781 = new BitSet(new long[]{0x0000020000000000L});
+        public static final BitSet FOLLOW_rule__ConstructorPartCS__Group__1_in_rule__ConstructorPartCS__Group__018784 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstructorPartCS__ReferredPropertyAssignment_0_in_rule__ConstructorPartCS__Group__0__Impl18811 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstructorPartCS__Group__1__Impl_in_rule__ConstructorPartCS__Group__118841 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__ConstructorPartCS__Group__2_in_rule__ConstructorPartCS__Group__118844 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_rule__ConstructorPartCS__Group__1__Impl18872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstructorPartCS__Group__2__Impl_in_rule__ConstructorPartCS__Group__218903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstructorPartCS__OwnedInitExpressionAssignment_2_in_rule__ConstructorPartCS__Group__2__Impl18930 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PatternExpCS__Group__0__Impl_in_rule__PatternExpCS__Group__018966 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__PatternExpCS__Group__1_in_rule__PatternExpCS__Group__018969 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PatternExpCS__PatternVariableNameAssignment_0_in_rule__PatternExpCS__Group__0__Impl18996 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PatternExpCS__Group__1__Impl_in_rule__PatternExpCS__Group__119027 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__PatternExpCS__Group__2_in_rule__PatternExpCS__Group__119030 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__PatternExpCS__Group__1__Impl19058 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PatternExpCS__Group__2__Impl_in_rule__PatternExpCS__Group__219089 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PatternExpCS__OwnedPatternTypeAssignment_2_in_rule__PatternExpCS__Group__2__Impl19116 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__Group__0__Impl_in_rule__LambdaLiteralExpCS__Group__019152 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__Group__1_in_rule__LambdaLiteralExpCS__Group__019155 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_77_in_rule__LambdaLiteralExpCS__Group__0__Impl19183 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__Group__1__Impl_in_rule__LambdaLiteralExpCS__Group__119214 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__Group__2_in_rule__LambdaLiteralExpCS__Group__119217 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_rule__LambdaLiteralExpCS__Group__1__Impl19245 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__Group__2__Impl_in_rule__LambdaLiteralExpCS__Group__219276 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__Group__3_in_rule__LambdaLiteralExpCS__Group__219279 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2_in_rule__LambdaLiteralExpCS__Group__2__Impl19306 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LambdaLiteralExpCS__Group__3__Impl_in_rule__LambdaLiteralExpCS__Group__319336 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_74_in_rule__LambdaLiteralExpCS__Group__3__Impl19364 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__0__Impl_in_rule__TupleLiteralExpCS__Group__019403 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__1_in_rule__TupleLiteralExpCS__Group__019406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__TupleLiteralExpCS__Group__0__Impl19434 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__1__Impl_in_rule__TupleLiteralExpCS__Group__119465 = new BitSet(new long[]{0x00000000003800C0L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__2_in_rule__TupleLiteralExpCS__Group__119468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_rule__TupleLiteralExpCS__Group__1__Impl19496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__2__Impl_in_rule__TupleLiteralExpCS__Group__219527 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000401L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__3_in_rule__TupleLiteralExpCS__Group__219530 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__OwnedPartsAssignment_2_in_rule__TupleLiteralExpCS__Group__2__Impl19557 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__3__Impl_in_rule__TupleLiteralExpCS__Group__319587 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000401L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__4_in_rule__TupleLiteralExpCS__Group__319590 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group_3__0_in_rule__TupleLiteralExpCS__Group__3__Impl19617 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group__4__Impl_in_rule__TupleLiteralExpCS__Group__419648 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_74_in_rule__TupleLiteralExpCS__Group__4__Impl19676 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group_3__0__Impl_in_rule__TupleLiteralExpCS__Group_3__019717 = new BitSet(new long[]{0x00000000003800C0L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group_3__1_in_rule__TupleLiteralExpCS__Group_3__019720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__TupleLiteralExpCS__Group_3__0__Impl19748 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__Group_3__1__Impl_in_rule__TupleLiteralExpCS__Group_3__119779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1_in_rule__TupleLiteralExpCS__Group_3__1__Impl19806 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group__0__Impl_in_rule__TupleLiteralPartCS__Group__019840 = new BitSet(new long[]{0x1000020000000000L});
+        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group__1_in_rule__TupleLiteralPartCS__Group__019843 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__NameAssignment_0_in_rule__TupleLiteralPartCS__Group__0__Impl19870 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group__1__Impl_in_rule__TupleLiteralPartCS__Group__119900 = new BitSet(new long[]{0x1000020000000000L});
+        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group__2_in_rule__TupleLiteralPartCS__Group__119903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group_1__0_in_rule__TupleLiteralPartCS__Group__1__Impl19930 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group__2__Impl_in_rule__TupleLiteralPartCS__Group__219961 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group__3_in_rule__TupleLiteralPartCS__Group__219964 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_rule__TupleLiteralPartCS__Group__2__Impl19992 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group__3__Impl_in_rule__TupleLiteralPartCS__Group__320023 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3_in_rule__TupleLiteralPartCS__Group__3__Impl20050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group_1__0__Impl_in_rule__TupleLiteralPartCS__Group_1__020088 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group_1__1_in_rule__TupleLiteralPartCS__Group_1__020091 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__TupleLiteralPartCS__Group_1__0__Impl20119 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__Group_1__1__Impl_in_rule__TupleLiteralPartCS__Group_1__120150 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1_in_rule__TupleLiteralPartCS__Group_1__1__Impl20177 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl_in_rule__UnlimitedNaturalLiteralExpCS__Group__020211 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__UnlimitedNaturalLiteralExpCS__Group__1_in_rule__UnlimitedNaturalLiteralExpCS__Group__020214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl_in_rule__UnlimitedNaturalLiteralExpCS__Group__120272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl20300 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InvalidLiteralExpCS__Group__0__Impl_in_rule__InvalidLiteralExpCS__Group__020335 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__InvalidLiteralExpCS__Group__1_in_rule__InvalidLiteralExpCS__Group__020338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InvalidLiteralExpCS__Group__1__Impl_in_rule__InvalidLiteralExpCS__Group__120396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_78_in_rule__InvalidLiteralExpCS__Group__1__Impl20424 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NullLiteralExpCS__Group__0__Impl_in_rule__NullLiteralExpCS__Group__020459 = new BitSet(new long[]{0x0000000400000030L,0x000000018000C000L});
+        public static final BitSet FOLLOW_rule__NullLiteralExpCS__Group__1_in_rule__NullLiteralExpCS__Group__020462 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NullLiteralExpCS__Group__1__Impl_in_rule__NullLiteralExpCS__Group__120520 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__NullLiteralExpCS__Group__1__Impl20548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeLiteralWithMultiplicityCS__Group__0__Impl_in_rule__TypeLiteralWithMultiplicityCS__Group__020583 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__TypeLiteralWithMultiplicityCS__Group__1_in_rule__TypeLiteralWithMultiplicityCS__Group__020586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeLiteralCS_in_rule__TypeLiteralWithMultiplicityCS__Group__0__Impl20613 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeLiteralWithMultiplicityCS__Group__1__Impl_in_rule__TypeLiteralWithMultiplicityCS__Group__120642 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1_in_rule__TypeLiteralWithMultiplicityCS__Group__1__Impl20669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group__0__Impl_in_rule__TypeNameExpCS__Group__020704 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group__1_in_rule__TypeNameExpCS__Group__020707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__OwnedPathNameAssignment_0_in_rule__TypeNameExpCS__Group__0__Impl20734 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group__1__Impl_in_rule__TypeNameExpCS__Group__120764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1__0_in_rule__TypeNameExpCS__Group__1__Impl20791 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1__0__Impl_in_rule__TypeNameExpCS__Group_1__020826 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1__1_in_rule__TypeNameExpCS__Group_1__020829 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0_in_rule__TypeNameExpCS__Group_1__0__Impl20856 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1__1__Impl_in_rule__TypeNameExpCS__Group_1__120886 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1_1__0_in_rule__TypeNameExpCS__Group_1__1__Impl20913 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1_1__0__Impl_in_rule__TypeNameExpCS__Group_1_1__020948 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1_1__1_in_rule__TypeNameExpCS__Group_1_1__020951 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_rule__TypeNameExpCS__Group_1_1__0__Impl20979 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1_1__1__Impl_in_rule__TypeNameExpCS__Group_1_1__121010 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1_1__2_in_rule__TypeNameExpCS__Group_1_1__121013 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1_in_rule__TypeNameExpCS__Group_1_1__1__Impl21040 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeNameExpCS__Group_1_1__2__Impl_in_rule__TypeNameExpCS__Group_1_1__221070 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_74_in_rule__TypeNameExpCS__Group_1_1__2__Impl21098 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeExpCS__Group__0__Impl_in_rule__TypeExpCS__Group__021135 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__TypeExpCS__Group__1_in_rule__TypeExpCS__Group__021138 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeExpCS__Alternatives_0_in_rule__TypeExpCS__Group__0__Impl21165 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeExpCS__Group__1__Impl_in_rule__TypeExpCS__Group__121195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeExpCS__OwnedMultiplicityAssignment_1_in_rule__TypeExpCS__Group__1__Impl21222 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExpCS__Group_0__0__Impl_in_rule__ExpCS__Group_0__021257 = new BitSet(new long[]{0x0007FFFD00060000L});
+        public static final BitSet FOLLOW_rule__ExpCS__Group_0__1_in_rule__ExpCS__Group_0__021260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrefixedPrimaryExpCS_in_rule__ExpCS__Group_0__0__Impl21287 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExpCS__Group_0__1__Impl_in_rule__ExpCS__Group_0__121316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExpCS__Group_0_1__0_in_rule__ExpCS__Group_0__1__Impl21343 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExpCS__Group_0_1__0__Impl_in_rule__ExpCS__Group_0_1__021378 = new BitSet(new long[]{0x0007FFFD00060000L});
+        public static final BitSet FOLLOW_rule__ExpCS__Group_0_1__1_in_rule__ExpCS__Group_0_1__021381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExpCS__Group_0_1__1__Impl_in_rule__ExpCS__Group_0_1__121439 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__ExpCS__Group_0_1__2_in_rule__ExpCS__Group_0_1__121442 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExpCS__NameAssignment_0_1_1_in_rule__ExpCS__Group_0_1__1__Impl21469 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExpCS__Group_0_1__2__Impl_in_rule__ExpCS__Group_0_1__221499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExpCS__OwnedRightAssignment_0_1_2_in_rule__ExpCS__Group_0_1__2__Impl21526 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PrefixedLetExpCS__Group_0__0__Impl_in_rule__PrefixedLetExpCS__Group_0__021562 = new BitSet(new long[]{0x0000000300000000L});
+        public static final BitSet FOLLOW_rule__PrefixedLetExpCS__Group_0__1_in_rule__PrefixedLetExpCS__Group_0__021565 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PrefixedLetExpCS__Group_0__1__Impl_in_rule__PrefixedLetExpCS__Group_0__121623 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__PrefixedLetExpCS__Group_0__2_in_rule__PrefixedLetExpCS__Group_0__121626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PrefixedLetExpCS__NameAssignment_0_1_in_rule__PrefixedLetExpCS__Group_0__1__Impl21653 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PrefixedLetExpCS__Group_0__2__Impl_in_rule__PrefixedLetExpCS__Group_0__221683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PrefixedLetExpCS__OwnedRightAssignment_0_2_in_rule__PrefixedLetExpCS__Group_0__2__Impl21710 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__0__Impl_in_rule__PrefixedPrimaryExpCS__Group_0__021746 = new BitSet(new long[]{0x0000000300000000L});
+        public static final BitSet FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__1_in_rule__PrefixedPrimaryExpCS__Group_0__021749 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__1__Impl_in_rule__PrefixedPrimaryExpCS__Group_0__121807 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018208E000L});
+        public static final BitSet FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__2_in_rule__PrefixedPrimaryExpCS__Group_0__121810 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PrefixedPrimaryExpCS__NameAssignment_0_1_in_rule__PrefixedPrimaryExpCS__Group_0__1__Impl21837 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PrefixedPrimaryExpCS__Group_0__2__Impl_in_rule__PrefixedPrimaryExpCS__Group_0__221867 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2_in_rule__PrefixedPrimaryExpCS__Group_0__2__Impl21894 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NameExpCS__Group__0__Impl_in_rule__NameExpCS__Group__021930 = new BitSet(new long[]{0x2000000000000000L,0x0000000200010200L});
+        public static final BitSet FOLLOW_rule__NameExpCS__Group__1_in_rule__NameExpCS__Group__021933 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NameExpCS__OwnedPathNameAssignment_0_in_rule__NameExpCS__Group__0__Impl21960 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NameExpCS__Group__1__Impl_in_rule__NameExpCS__Group__121990 = new BitSet(new long[]{0x2000000000000000L,0x0000000200010200L});
+        public static final BitSet FOLLOW_rule__NameExpCS__Group__2_in_rule__NameExpCS__Group__121993 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1_in_rule__NameExpCS__Group__1__Impl22020 = new BitSet(new long[]{0x0000000000000002L,0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__NameExpCS__Group__2__Impl_in_rule__NameExpCS__Group__222051 = new BitSet(new long[]{0x2000000000000000L,0x0000000200010200L});
+        public static final BitSet FOLLOW_rule__NameExpCS__Group__3_in_rule__NameExpCS__Group__222054 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2_in_rule__NameExpCS__Group__2__Impl22081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NameExpCS__Group__3__Impl_in_rule__NameExpCS__Group__322112 = new BitSet(new long[]{0x2000000000000000L,0x0000000200010200L});
+        public static final BitSet FOLLOW_rule__NameExpCS__Group__4_in_rule__NameExpCS__Group__322115 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3_in_rule__NameExpCS__Group__3__Impl22142 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NameExpCS__Group__4__Impl_in_rule__NameExpCS__Group__422173 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NameExpCS__Group_4__0_in_rule__NameExpCS__Group__4__Impl22200 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NameExpCS__Group_4__0__Impl_in_rule__NameExpCS__Group_4__022241 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NameExpCS__Group_4__1_in_rule__NameExpCS__Group_4__022244 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NameExpCS__IsPreAssignment_4_0_in_rule__NameExpCS__Group_4__0__Impl22271 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NameExpCS__Group_4__1__Impl_in_rule__NameExpCS__Group_4__122301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__NameExpCS__Group_4__1__Impl22329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group__0__Impl_in_rule__CurlyBracketedClauseCS__Group__022364 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group__1_in_rule__CurlyBracketedClauseCS__Group__022367 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group__1__Impl_in_rule__CurlyBracketedClauseCS__Group__122425 = new BitSet(new long[]{0x00000000003800E0L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group__2_in_rule__CurlyBracketedClauseCS__Group__122428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_rule__CurlyBracketedClauseCS__Group__1__Impl22456 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group__2__Impl_in_rule__CurlyBracketedClauseCS__Group__222487 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group__3_in_rule__CurlyBracketedClauseCS__Group__222490 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Alternatives_2_in_rule__CurlyBracketedClauseCS__Group__2__Impl22517 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group__3__Impl_in_rule__CurlyBracketedClauseCS__Group__322547 = new BitSet(new long[]{0x0000000000000002L});
     }
 
     private static class FollowSets001 {
-        public static final BitSet FOLLOW_74_in_rule__CurlyBracketedClauseCS__Group__3__Impl22576 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0__0__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0__022615 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0__1_in_rule__CurlyBracketedClauseCS__Group_2_0__022618 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0_in_rule__CurlyBracketedClauseCS__Group_2_0__0__Impl22645 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0__1__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0__122675 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__0_in_rule__CurlyBracketedClauseCS__Group_2_0__1__Impl22702 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0_1__022737 = new BitSet(new long[]{0x00000000003800C0L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__1_in_rule__CurlyBracketedClauseCS__Group_2_0_1__022740 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_64_in_rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl22768 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0_1__122799 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1_in_rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl22826 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group__0__Impl_in_rule__RoundBracketedClauseCS__Group__022860 = new BitSet(new long[]{0x2000000000000000L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group__1_in_rule__RoundBracketedClauseCS__Group__022863 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group__1__Impl_in_rule__RoundBracketedClauseCS__Group__122921 = new BitSet(new long[]{0x73F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group__2_in_rule__RoundBracketedClauseCS__Group__122924 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_61_in_rule__RoundBracketedClauseCS__Group__1__Impl22952 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group__2__Impl_in_rule__RoundBracketedClauseCS__Group__222983 = new BitSet(new long[]{0x73F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group__3_in_rule__RoundBracketedClauseCS__Group__222986 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__0_in_rule__RoundBracketedClauseCS__Group__2__Impl23013 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group__3__Impl_in_rule__RoundBracketedClauseCS__Group__323044 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_62_in_rule__RoundBracketedClauseCS__Group__3__Impl23072 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__0__Impl_in_rule__RoundBracketedClauseCS__Group_2__023111 = new BitSet(new long[]{0x0000000000000000L,0x0000000C00000001L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__1_in_rule__RoundBracketedClauseCS__Group_2__023114 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0_in_rule__RoundBracketedClauseCS__Group_2__0__Impl23141 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__1__Impl_in_rule__RoundBracketedClauseCS__Group_2__123171 = new BitSet(new long[]{0x0000000000000000L,0x0000000C00000001L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__2_in_rule__RoundBracketedClauseCS__Group_2__123174 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1_in_rule__RoundBracketedClauseCS__Group_2__1__Impl23201 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__2__Impl_in_rule__RoundBracketedClauseCS__Group_2__223232 = new BitSet(new long[]{0x0000000000000000L,0x0000000C00000001L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__3_in_rule__RoundBracketedClauseCS__Group_2__223235 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__0_in_rule__RoundBracketedClauseCS__Group_2__2__Impl23262 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__3__Impl_in_rule__RoundBracketedClauseCS__Group_2__323293 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__0_in_rule__RoundBracketedClauseCS__Group_2__3__Impl23320 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__0__Impl_in_rule__RoundBracketedClauseCS__Group_2_2__023359 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__1_in_rule__RoundBracketedClauseCS__Group_2_2__023362 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0_in_rule__RoundBracketedClauseCS__Group_2_2__0__Impl23389 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__1__Impl_in_rule__RoundBracketedClauseCS__Group_2_2__123419 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1_in_rule__RoundBracketedClauseCS__Group_2_2__1__Impl23446 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__0__Impl_in_rule__RoundBracketedClauseCS__Group_2_3__023481 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__1_in_rule__RoundBracketedClauseCS__Group_2_3__023484 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0_in_rule__RoundBracketedClauseCS__Group_2_3__0__Impl23511 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__1__Impl_in_rule__RoundBracketedClauseCS__Group_2_3__123541 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1_in_rule__RoundBracketedClauseCS__Group_2_3__1__Impl23568 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group__0__Impl_in_rule__SquareBracketedClauseCS__Group__023603 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group__1_in_rule__SquareBracketedClauseCS__Group__023606 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_80_in_rule__SquareBracketedClauseCS__Group__0__Impl23634 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group__1__Impl_in_rule__SquareBracketedClauseCS__Group__123665 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020001L});
-        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group__2_in_rule__SquareBracketedClauseCS__Group__123668 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__OwnedTermsAssignment_1_in_rule__SquareBracketedClauseCS__Group__1__Impl23695 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group__2__Impl_in_rule__SquareBracketedClauseCS__Group__223725 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020001L});
-        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group__3_in_rule__SquareBracketedClauseCS__Group__223728 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group_2__0_in_rule__SquareBracketedClauseCS__Group__2__Impl23755 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group__3__Impl_in_rule__SquareBracketedClauseCS__Group__323786 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_81_in_rule__SquareBracketedClauseCS__Group__3__Impl23814 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group_2__0__Impl_in_rule__SquareBracketedClauseCS__Group_2__023853 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group_2__1_in_rule__SquareBracketedClauseCS__Group_2__023856 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_64_in_rule__SquareBracketedClauseCS__Group_2__0__Impl23884 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group_2__1__Impl_in_rule__SquareBracketedClauseCS__Group_2__123915 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1_in_rule__SquareBracketedClauseCS__Group_2__1__Impl23942 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0__0__Impl_in_rule__NavigatingArgCS__Group_0__023976 = new BitSet(new long[]{0x1000000000000000L,0x0000000000040000L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0__1_in_rule__NavigatingArgCS__Group_0__023979 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0_in_rule__NavigatingArgCS__Group_0__0__Impl24006 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0__1__Impl_in_rule__NavigatingArgCS__Group_0__124036 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Alternatives_0_1_in_rule__NavigatingArgCS__Group_0__1__Impl24063 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0__0__Impl_in_rule__NavigatingArgCS__Group_0_1_0__024098 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0__1_in_rule__NavigatingArgCS__Group_0_1_0__024101 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_60_in_rule__NavigatingArgCS__Group_0_1_0__0__Impl24129 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0__1__Impl_in_rule__NavigatingArgCS__Group_0_1_0__124160 = new BitSet(new long[]{0x0000020000000000L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0__2_in_rule__NavigatingArgCS__Group_0_1_0__124163 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1_in_rule__NavigatingArgCS__Group_0_1_0__1__Impl24190 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0__2__Impl_in_rule__NavigatingArgCS__Group_0_1_0__224220 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__0_in_rule__NavigatingArgCS__Group_0_1_0__2__Impl24247 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__0__Impl_in_rule__NavigatingArgCS__Group_0_1_0_2__024284 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__1_in_rule__NavigatingArgCS__Group_0_1_0_2__024287 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_41_in_rule__NavigatingArgCS__Group_0_1_0_2__0__Impl24315 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__1__Impl_in_rule__NavigatingArgCS__Group_0_1_0_2__124346 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1_in_rule__NavigatingArgCS__Group_0_1_0_2__1__Impl24373 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_1__0__Impl_in_rule__NavigatingArgCS__Group_0_1_1__024407 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_1__1_in_rule__NavigatingArgCS__Group_0_1_1__024410 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_82_in_rule__NavigatingArgCS__Group_0_1_1__0__Impl24438 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_1__1__Impl_in_rule__NavigatingArgCS__Group_0_1_1__124469 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1_in_rule__NavigatingArgCS__Group_0_1_1__1__Impl24496 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_1__0__Impl_in_rule__NavigatingArgCS__Group_1__024530 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_1__1_in_rule__NavigatingArgCS__Group_1__024533 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_60_in_rule__NavigatingArgCS__Group_1__0__Impl24561 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_1__1__Impl_in_rule__NavigatingArgCS__Group_1__124592 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingArgCS__OwnedTypeAssignment_1_1_in_rule__NavigatingArgCS__Group_1__1__Impl24619 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group__0__Impl_in_rule__NavigatingBarArgCS__Group__024653 = new BitSet(new long[]{0x23F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group__1_in_rule__NavigatingBarArgCS__Group__024656 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__PrefixAssignment_0_in_rule__NavigatingBarArgCS__Group__0__Impl24683 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group__1__Impl_in_rule__NavigatingBarArgCS__Group__124713 = new BitSet(new long[]{0x1000000000000000L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group__2_in_rule__NavigatingBarArgCS__Group__124716 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1_in_rule__NavigatingBarArgCS__Group__1__Impl24743 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group__2__Impl_in_rule__NavigatingBarArgCS__Group__224773 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2__0_in_rule__NavigatingBarArgCS__Group__2__Impl24800 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2__0__Impl_in_rule__NavigatingBarArgCS__Group_2__024837 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2__1_in_rule__NavigatingBarArgCS__Group_2__024840 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_60_in_rule__NavigatingBarArgCS__Group_2__0__Impl24868 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2__1__Impl_in_rule__NavigatingBarArgCS__Group_2__124899 = new BitSet(new long[]{0x0000020000000000L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2__2_in_rule__NavigatingBarArgCS__Group_2__124902 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1_in_rule__NavigatingBarArgCS__Group_2__1__Impl24929 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2__2__Impl_in_rule__NavigatingBarArgCS__Group_2__224959 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2_2__0_in_rule__NavigatingBarArgCS__Group_2__2__Impl24986 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2_2__0__Impl_in_rule__NavigatingBarArgCS__Group_2_2__025023 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2_2__1_in_rule__NavigatingBarArgCS__Group_2_2__025026 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_41_in_rule__NavigatingBarArgCS__Group_2_2__0__Impl25054 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2_2__1__Impl_in_rule__NavigatingBarArgCS__Group_2_2__125085 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1_in_rule__NavigatingBarArgCS__Group_2_2__1__Impl25112 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group__0__Impl_in_rule__NavigatingCommaArgCS__Group__025146 = new BitSet(new long[]{0x23F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group__1_in_rule__NavigatingCommaArgCS__Group__025149 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__PrefixAssignment_0_in_rule__NavigatingCommaArgCS__Group__0__Impl25176 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group__1__Impl_in_rule__NavigatingCommaArgCS__Group__125206 = new BitSet(new long[]{0x1000000000000000L,0x0000000000040000L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group__2_in_rule__NavigatingCommaArgCS__Group__125209 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1_in_rule__NavigatingCommaArgCS__Group__1__Impl25236 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group__2__Impl_in_rule__NavigatingCommaArgCS__Group__225266 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Alternatives_2_in_rule__NavigatingCommaArgCS__Group__2__Impl25293 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__0__Impl_in_rule__NavigatingCommaArgCS__Group_2_0__025330 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__1_in_rule__NavigatingCommaArgCS__Group_2_0__025333 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_60_in_rule__NavigatingCommaArgCS__Group_2_0__0__Impl25361 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__1__Impl_in_rule__NavigatingCommaArgCS__Group_2_0__125392 = new BitSet(new long[]{0x0000020000000000L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__2_in_rule__NavigatingCommaArgCS__Group_2_0__125395 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1_in_rule__NavigatingCommaArgCS__Group_2_0__1__Impl25422 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__2__Impl_in_rule__NavigatingCommaArgCS__Group_2_0__225452 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__0_in_rule__NavigatingCommaArgCS__Group_2_0__2__Impl25479 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl_in_rule__NavigatingCommaArgCS__Group_2_0_2__025516 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__1_in_rule__NavigatingCommaArgCS__Group_2_0_2__025519 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_41_in_rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl25547 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl_in_rule__NavigatingCommaArgCS__Group_2_0_2__125578 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1_in_rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl25605 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_1__0__Impl_in_rule__NavigatingCommaArgCS__Group_2_1__025639 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_1__1_in_rule__NavigatingCommaArgCS__Group_2_1__025642 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_82_in_rule__NavigatingCommaArgCS__Group_2_1__0__Impl25670 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_1__1__Impl_in_rule__NavigatingCommaArgCS__Group_2_1__125701 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1_in_rule__NavigatingCommaArgCS__Group_2_1__1__Impl25728 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group__0__Impl_in_rule__NavigatingSemiArgCS__Group__025762 = new BitSet(new long[]{0x23F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group__1_in_rule__NavigatingSemiArgCS__Group__025765 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__PrefixAssignment_0_in_rule__NavigatingSemiArgCS__Group__0__Impl25792 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group__1__Impl_in_rule__NavigatingSemiArgCS__Group__125822 = new BitSet(new long[]{0x1000000000000000L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group__2_in_rule__NavigatingSemiArgCS__Group__125825 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1_in_rule__NavigatingSemiArgCS__Group__1__Impl25852 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group__2__Impl_in_rule__NavigatingSemiArgCS__Group__225882 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2__0_in_rule__NavigatingSemiArgCS__Group__2__Impl25909 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2__0__Impl_in_rule__NavigatingSemiArgCS__Group_2__025946 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2__1_in_rule__NavigatingSemiArgCS__Group_2__025949 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_60_in_rule__NavigatingSemiArgCS__Group_2__0__Impl25977 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2__1__Impl_in_rule__NavigatingSemiArgCS__Group_2__126008 = new BitSet(new long[]{0x0000020000000000L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2__2_in_rule__NavigatingSemiArgCS__Group_2__126011 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1_in_rule__NavigatingSemiArgCS__Group_2__1__Impl26038 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2__2__Impl_in_rule__NavigatingSemiArgCS__Group_2__226068 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__0_in_rule__NavigatingSemiArgCS__Group_2__2__Impl26095 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__0__Impl_in_rule__NavigatingSemiArgCS__Group_2_2__026132 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__1_in_rule__NavigatingSemiArgCS__Group_2_2__026135 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_41_in_rule__NavigatingSemiArgCS__Group_2_2__0__Impl26163 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__1__Impl_in_rule__NavigatingSemiArgCS__Group_2_2__126194 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1_in_rule__NavigatingSemiArgCS__Group_2_2__1__Impl26221 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__0__Impl_in_rule__IfExpCS__Group__026255 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__1_in_rule__IfExpCS__Group__026258 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_83_in_rule__IfExpCS__Group__0__Impl26286 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__1__Impl_in_rule__IfExpCS__Group__126317 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__2_in_rule__IfExpCS__Group__126320 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IfExpCS__OwnedConditionAssignment_1_in_rule__IfExpCS__Group__1__Impl26347 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__2__Impl_in_rule__IfExpCS__Group__226377 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__3_in_rule__IfExpCS__Group__226380 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_84_in_rule__IfExpCS__Group__2__Impl26408 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__3__Impl_in_rule__IfExpCS__Group__326439 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A00000L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__4_in_rule__IfExpCS__Group__326442 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IfExpCS__OwnedThenExpressionAssignment_3_in_rule__IfExpCS__Group__3__Impl26469 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__4__Impl_in_rule__IfExpCS__Group__426499 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A00000L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__5_in_rule__IfExpCS__Group__426502 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IfExpCS__OwnedIfThenExpressionsAssignment_4_in_rule__IfExpCS__Group__4__Impl26529 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__5__Impl_in_rule__IfExpCS__Group__526560 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__6_in_rule__IfExpCS__Group__526563 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_85_in_rule__IfExpCS__Group__5__Impl26591 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__6__Impl_in_rule__IfExpCS__Group__626622 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__7_in_rule__IfExpCS__Group__626625 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IfExpCS__OwnedElseExpressionAssignment_6_in_rule__IfExpCS__Group__6__Impl26652 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IfExpCS__Group__7__Impl_in_rule__IfExpCS__Group__726682 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_86_in_rule__IfExpCS__Group__7__Impl26710 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__Group__0__Impl_in_rule__ElseIfThenExpCS__Group__026757 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__Group__1_in_rule__ElseIfThenExpCS__Group__026760 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_87_in_rule__ElseIfThenExpCS__Group__0__Impl26788 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__Group__1__Impl_in_rule__ElseIfThenExpCS__Group__126819 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__Group__2_in_rule__ElseIfThenExpCS__Group__126822 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__OwnedConditionAssignment_1_in_rule__ElseIfThenExpCS__Group__1__Impl26849 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__Group__2__Impl_in_rule__ElseIfThenExpCS__Group__226879 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__Group__3_in_rule__ElseIfThenExpCS__Group__226882 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_84_in_rule__ElseIfThenExpCS__Group__2__Impl26910 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__Group__3__Impl_in_rule__ElseIfThenExpCS__Group__326941 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3_in_rule__ElseIfThenExpCS__Group__3__Impl26968 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetExpCS__Group__0__Impl_in_rule__LetExpCS__Group__027006 = new BitSet(new long[]{0x00000000003800C0L});
-        public static final BitSet FOLLOW_rule__LetExpCS__Group__1_in_rule__LetExpCS__Group__027009 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_88_in_rule__LetExpCS__Group__0__Impl27037 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetExpCS__Group__1__Impl_in_rule__LetExpCS__Group__127068 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040001L});
-        public static final BitSet FOLLOW_rule__LetExpCS__Group__2_in_rule__LetExpCS__Group__127071 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetExpCS__OwnedVariablesAssignment_1_in_rule__LetExpCS__Group__1__Impl27098 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetExpCS__Group__2__Impl_in_rule__LetExpCS__Group__227128 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040001L});
-        public static final BitSet FOLLOW_rule__LetExpCS__Group__3_in_rule__LetExpCS__Group__227131 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetExpCS__Group_2__0_in_rule__LetExpCS__Group__2__Impl27158 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__LetExpCS__Group__3__Impl_in_rule__LetExpCS__Group__327189 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__LetExpCS__Group__4_in_rule__LetExpCS__Group__327192 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_82_in_rule__LetExpCS__Group__3__Impl27220 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetExpCS__Group__4__Impl_in_rule__LetExpCS__Group__427251 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetExpCS__OwnedInExpressionAssignment_4_in_rule__LetExpCS__Group__4__Impl27278 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetExpCS__Group_2__0__Impl_in_rule__LetExpCS__Group_2__027318 = new BitSet(new long[]{0x00000000003800C0L});
-        public static final BitSet FOLLOW_rule__LetExpCS__Group_2__1_in_rule__LetExpCS__Group_2__027321 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_64_in_rule__LetExpCS__Group_2__0__Impl27349 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetExpCS__Group_2__1__Impl_in_rule__LetExpCS__Group_2__127380 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetExpCS__OwnedVariablesAssignment_2_1_in_rule__LetExpCS__Group_2__1__Impl27407 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__Group__0__Impl_in_rule__LetVariableCS__Group__027441 = new BitSet(new long[]{0x3000020000000000L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__Group__1_in_rule__LetVariableCS__Group__027444 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__NameAssignment_0_in_rule__LetVariableCS__Group__0__Impl27471 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__Group__1__Impl_in_rule__LetVariableCS__Group__127501 = new BitSet(new long[]{0x3000020000000000L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__Group__2_in_rule__LetVariableCS__Group__127504 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1_in_rule__LetVariableCS__Group__1__Impl27531 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__Group__2__Impl_in_rule__LetVariableCS__Group__227562 = new BitSet(new long[]{0x3000020000000000L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__Group__3_in_rule__LetVariableCS__Group__227565 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__Group_2__0_in_rule__LetVariableCS__Group__2__Impl27592 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__Group__3__Impl_in_rule__LetVariableCS__Group__327623 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__Group__4_in_rule__LetVariableCS__Group__327626 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_41_in_rule__LetVariableCS__Group__3__Impl27654 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__Group__4__Impl_in_rule__LetVariableCS__Group__427685 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__OwnedInitExpressionAssignment_4_in_rule__LetVariableCS__Group__4__Impl27712 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__Group_2__0__Impl_in_rule__LetVariableCS__Group_2__027752 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__Group_2__1_in_rule__LetVariableCS__Group_2__027755 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_60_in_rule__LetVariableCS__Group_2__0__Impl27783 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__Group_2__1__Impl_in_rule__LetVariableCS__Group_2__127814 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__LetVariableCS__OwnedTypeAssignment_2_1_in_rule__LetVariableCS__Group_2__1__Impl27841 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NestedExpCS__Group__0__Impl_in_rule__NestedExpCS__Group__027875 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
-        public static final BitSet FOLLOW_rule__NestedExpCS__Group__1_in_rule__NestedExpCS__Group__027878 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_61_in_rule__NestedExpCS__Group__0__Impl27906 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NestedExpCS__Group__1__Impl_in_rule__NestedExpCS__Group__127937 = new BitSet(new long[]{0x4000000000000000L});
-        public static final BitSet FOLLOW_rule__NestedExpCS__Group__2_in_rule__NestedExpCS__Group__127940 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NestedExpCS__OwnedExpressionAssignment_1_in_rule__NestedExpCS__Group__1__Impl27967 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__NestedExpCS__Group__2__Impl_in_rule__NestedExpCS__Group__227997 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_62_in_rule__NestedExpCS__Group__2__Impl28025 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SelfExpCS__Group__0__Impl_in_rule__SelfExpCS__Group__028062 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-        public static final BitSet FOLLOW_rule__SelfExpCS__Group__1_in_rule__SelfExpCS__Group__028065 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__SelfExpCS__Group__1__Impl_in_rule__SelfExpCS__Group__128123 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_89_in_rule__SelfExpCS__Group__1__Impl28151 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__Group__0__Impl_in_rule__MultiplicityBoundsCS__Group__028186 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__Group__1_in_rule__MultiplicityBoundsCS__Group__028189 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__LowerBoundAssignment_0_in_rule__MultiplicityBoundsCS__Group__0__Impl28216 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__Group__1__Impl_in_rule__MultiplicityBoundsCS__Group__128246 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__Group_1__0_in_rule__MultiplicityBoundsCS__Group__1__Impl28273 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__Group_1__0__Impl_in_rule__MultiplicityBoundsCS__Group_1__028308 = new BitSet(new long[]{0x0000000400000010L});
-        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__Group_1__1_in_rule__MultiplicityBoundsCS__Group_1__028311 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_75_in_rule__MultiplicityBoundsCS__Group_1__0__Impl28339 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__Group_1__1__Impl_in_rule__MultiplicityBoundsCS__Group_1__128370 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1_in_rule__MultiplicityBoundsCS__Group_1__1__Impl28397 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__MultiplicityCS__Group__0__Impl_in_rule__MultiplicityCS__Group__028431 = new BitSet(new long[]{0x0200001400000010L});
-        public static final BitSet FOLLOW_rule__MultiplicityCS__Group__1_in_rule__MultiplicityCS__Group__028434 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_80_in_rule__MultiplicityCS__Group__0__Impl28462 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__MultiplicityCS__Group__1__Impl_in_rule__MultiplicityCS__Group__128493 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
-        public static final BitSet FOLLOW_rule__MultiplicityCS__Group__2_in_rule__MultiplicityCS__Group__128496 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__MultiplicityCS__Alternatives_1_in_rule__MultiplicityCS__Group__1__Impl28523 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__MultiplicityCS__Group__2__Impl_in_rule__MultiplicityCS__Group__228553 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_81_in_rule__MultiplicityCS__Group__2__Impl28581 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PathNameCS__Group__0__Impl_in_rule__PathNameCS__Group__028618 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__PathNameCS__Group__1_in_rule__PathNameCS__Group__028621 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PathNameCS__OwnedPathElementsAssignment_0_in_rule__PathNameCS__Group__0__Impl28648 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PathNameCS__Group__1__Impl_in_rule__PathNameCS__Group__128678 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PathNameCS__Group_1__0_in_rule__PathNameCS__Group__1__Impl28705 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-        public static final BitSet FOLLOW_rule__PathNameCS__Group_1__0__Impl_in_rule__PathNameCS__Group_1__028740 = new BitSet(new long[]{0x01F80000FFF800C0L});
-        public static final BitSet FOLLOW_rule__PathNameCS__Group_1__1_in_rule__PathNameCS__Group_1__028743 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_72_in_rule__PathNameCS__Group_1__0__Impl28771 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PathNameCS__Group_1__1__Impl_in_rule__PathNameCS__Group_1__128802 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__PathNameCS__OwnedPathElementsAssignment_1_1_in_rule__PathNameCS__Group_1__1__Impl28829 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group__0__Impl_in_rule__TemplateBindingCS__Group__028863 = new BitSet(new long[]{0x23F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group__1_in_rule__TemplateBindingCS__Group__028866 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_61_in_rule__TemplateBindingCS__Group__0__Impl28894 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group__1__Impl_in_rule__TemplateBindingCS__Group__128925 = new BitSet(new long[]{0x4000000000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group__2_in_rule__TemplateBindingCS__Group__128928 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1_in_rule__TemplateBindingCS__Group__1__Impl28955 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group__2__Impl_in_rule__TemplateBindingCS__Group__228985 = new BitSet(new long[]{0x4000000000000000L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group__3_in_rule__TemplateBindingCS__Group__228988 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group_2__0_in_rule__TemplateBindingCS__Group__2__Impl29015 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group__3__Impl_in_rule__TemplateBindingCS__Group__329046 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_62_in_rule__TemplateBindingCS__Group__3__Impl29074 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group_2__0__Impl_in_rule__TemplateBindingCS__Group_2__029113 = new BitSet(new long[]{0x23F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group_2__1_in_rule__TemplateBindingCS__Group_2__029116 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_64_in_rule__TemplateBindingCS__Group_2__0__Impl29144 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group_2__1__Impl_in_rule__TemplateBindingCS__Group_2__129175 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1_in_rule__TemplateBindingCS__Group_2__1__Impl29202 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group__0__Impl_in_rule__TypeParameterCS__Group__029236 = new BitSet(new long[]{0x0000000000000000L,0x0000000014000000L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group__1_in_rule__TypeParameterCS__Group__029239 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__NameAssignment_0_in_rule__TypeParameterCS__Group__0__Impl29266 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group__1__Impl_in_rule__TypeParameterCS__Group__129296 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Alternatives_1_in_rule__TypeParameterCS__Group__1__Impl29323 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0__0__Impl_in_rule__TypeParameterCS__Group_1_0__029358 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0__1_in_rule__TypeParameterCS__Group_1_0__029361 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_90_in_rule__TypeParameterCS__Group_1_0__0__Impl29389 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0__1__Impl_in_rule__TypeParameterCS__Group_1_0__129420 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0__2_in_rule__TypeParameterCS__Group_1_0__129423 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1_in_rule__TypeParameterCS__Group_1_0__1__Impl29450 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0__2__Impl_in_rule__TypeParameterCS__Group_1_0__229480 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0_2__0_in_rule__TypeParameterCS__Group_1_0__2__Impl29507 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0_2__0__Impl_in_rule__TypeParameterCS__Group_1_0_2__029544 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0_2__1_in_rule__TypeParameterCS__Group_1_0_2__029547 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_91_in_rule__TypeParameterCS__Group_1_0_2__0__Impl29575 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0_2__1__Impl_in_rule__TypeParameterCS__Group_1_0_2__129606 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1_in_rule__TypeParameterCS__Group_1_0_2__1__Impl29633 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_1__0__Impl_in_rule__TypeParameterCS__Group_1_1__029667 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_1__1_in_rule__TypeParameterCS__Group_1_1__029670 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_92_in_rule__TypeParameterCS__Group_1_1__0__Impl29698 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_1__1__Impl_in_rule__TypeParameterCS__Group_1_1__129729 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypeParameterCS__OwnedSuperAssignment_1_1_1_in_rule__TypeParameterCS__Group_1_1__1__Impl29756 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypedTypeRefCS__Group__0__Impl_in_rule__TypedTypeRefCS__Group__029790 = new BitSet(new long[]{0x2000000000000000L});
-        public static final BitSet FOLLOW_rule__TypedTypeRefCS__Group__1_in_rule__TypedTypeRefCS__Group__029793 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypedTypeRefCS__OwnedPathNameAssignment_0_in_rule__TypedTypeRefCS__Group__0__Impl29820 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypedTypeRefCS__Group__1__Impl_in_rule__TypedTypeRefCS__Group__129850 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__TypedTypeRefCS__OwnedBindingAssignment_1_in_rule__TypedTypeRefCS__Group__1__Impl29877 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group__0__Impl_in_rule__WildcardTypeRefCS__Group__029912 = new BitSet(new long[]{0x23F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group__1_in_rule__WildcardTypeRefCS__Group__029915 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group__1__Impl_in_rule__WildcardTypeRefCS__Group__129973 = new BitSet(new long[]{0x0000000000000000L,0x0000000014000000L});
-        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group__2_in_rule__WildcardTypeRefCS__Group__129976 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_rule__WildcardTypeRefCS__Group__1__Impl30004 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group__2__Impl_in_rule__WildcardTypeRefCS__Group__230035 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Alternatives_2_in_rule__WildcardTypeRefCS__Group__2__Impl30062 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group_2_0__0__Impl_in_rule__WildcardTypeRefCS__Group_2_0__030099 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group_2_0__1_in_rule__WildcardTypeRefCS__Group_2_0__030102 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_90_in_rule__WildcardTypeRefCS__Group_2_0__0__Impl30130 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group_2_0__1__Impl_in_rule__WildcardTypeRefCS__Group_2_0__130161 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1_in_rule__WildcardTypeRefCS__Group_2_0__1__Impl30188 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group_2_1__0__Impl_in_rule__WildcardTypeRefCS__Group_2_1__030222 = new BitSet(new long[]{0x21F80040FFF800C0L});
-        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group_2_1__1_in_rule__WildcardTypeRefCS__Group_2_1__030225 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_92_in_rule__WildcardTypeRefCS__Group_2_1__0__Impl30253 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group_2_1__1__Impl_in_rule__WildcardTypeRefCS__Group_2_1__130284 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1_in_rule__WildcardTypeRefCS__Group_2_1__1__Impl30311 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleImportCS_in_rule__CompleteOCLDocumentCS__OwnedImportsAssignment_0_030350 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIncludeCS_in_rule__CompleteOCLDocumentCS__OwnedIncludesAssignment_0_130381 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleLibraryCS_in_rule__CompleteOCLDocumentCS__OwnedLibrariesAssignment_0_230412 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePackageDeclarationCS_in_rule__CompleteOCLDocumentCS__OwnedPackagesAssignment_1_030443 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleContextDeclCS_in_rule__CompleteOCLDocumentCS__OwnedContextsAssignment_1_130474 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTemplateSignatureCS_in_rule__ClassifierContextDeclCS__OwnedSignatureAssignment_130505 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__ClassifierContextDeclCS__SelfNameAssignment_230536 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePathNameCS_in_rule__ClassifierContextDeclCS__OwnedPathNameAssignment_330567 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleConstraintCS_in_rule__ClassifierContextDeclCS__OwnedInvariantsAssignment_4_0_130598 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleDefCS_in_rule__ClassifierContextDeclCS__OwnedDefinitionsAssignment_4_130629 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__ConstraintCS__NameAssignment_0_030660 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSpecificationCS_in_rule__ConstraintCS__OwnedMessageSpecificationAssignment_0_1_130691 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSpecificationCS_in_rule__ConstraintCS__OwnedSpecificationAssignment_230722 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_93_in_rule__DefOperationCS__IsStaticAssignment_030758 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTemplateSignatureCS_in_rule__DefOperationCS__OwnedSignatureAssignment_430797 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__DefOperationCS__NameAssignment_530828 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleDefParameterCS_in_rule__DefOperationCS__OwnedParametersAssignment_7_030859 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleDefParameterCS_in_rule__DefOperationCS__OwnedParametersAssignment_7_1_130890 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__DefOperationCS__OwnedTypeAssignment_1030921 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSpecificationCS_in_rule__DefOperationCS__OwnedSpecificationAssignment_1230952 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__DefParameterCS__NameAssignment_030983 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__DefParameterCS__OwnedTypeAssignment_231014 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_93_in_rule__DefPropertyCS__IsStaticAssignment_031050 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__DefPropertyCS__NameAssignment_431089 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__DefPropertyCS__OwnedTypeAssignment_631120 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSpecificationCS_in_rule__DefPropertyCS__OwnedSpecificationAssignment_831151 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIdentifier_in_rule__ImportCS__NameAssignment_1_031182 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleURIPathNameCS_in_rule__ImportCS__OwnedPathNameAssignment_231213 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_94_in_rule__ImportCS__IsAllAssignment_331249 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleURI_in_rule__IncludeCS__ReferredNamespaceAssignment_131292 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleURI_in_rule__LibraryCS__ReferredPackageAssignment_131331 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTemplateSignatureCS_in_rule__OperationContextDeclCS__OwnedSignatureAssignment_131366 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePathNameCS_in_rule__OperationContextDeclCS__OwnedPathNameAssignment_231397 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleParameterCS_in_rule__OperationContextDeclCS__OwnedParametersAssignment_4_031428 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleParameterCS_in_rule__OperationContextDeclCS__OwnedParametersAssignment_4_1_131459 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__OperationContextDeclCS__OwnedTypeAssignment_731490 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleConstraintCS_in_rule__OperationContextDeclCS__OwnedPreconditionsAssignment_8_0_131521 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleConstraintCS_in_rule__OperationContextDeclCS__OwnedPostconditionsAssignment_8_1_131552 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSpecificationCS_in_rule__OperationContextDeclCS__OwnedBodiesAssignment_8_2_331583 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePathNameCS_in_rule__PackageDeclarationCS__OwnedPathNameAssignment_131614 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleConstraintCS_in_rule__PackageDeclarationCS__OwnedInvariantsAssignment_2_131645 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleContextDeclCS_in_rule__PackageDeclarationCS__OwnedContextsAssignment_331676 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__ParameterCS__NameAssignment_0_031707 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__ParameterCS__OwnedTypeAssignment_131738 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePathNameCS_in_rule__PropertyContextDeclCS__OwnedPathNameAssignment_131769 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__PropertyContextDeclCS__OwnedTypeAssignment_331800 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleConstraintCS_in_rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_131831 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSpecificationCS_in_rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_231862 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__SpecificationCS__OwnedExpressionAssignment_031893 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_UNQUOTED_STRING_in_rule__SpecificationCS__ExprStringAssignment_131924 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_0_131955 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_131986 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_1_132017 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_132048 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleURIFirstPathElementCS_in_rule__URIPathNameCS__OwnedPathElementsAssignment_032080 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNextPathElementCS_in_rule__URIPathNameCS__OwnedPathElementsAssignment_1_132111 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__URIFirstPathElementCS__ReferredElementAssignment_032146 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleURI_in_rule__URIFirstPathElementCS__ReferredElementAssignment_1_132185 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrimitiveTypeIdentifier_in_rule__PrimitiveTypeCS__NameAssignment32220 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionTypeIdentifier_in_rule__CollectionTypeCS__NameAssignment_032251 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__CollectionTypeCS__OwnedTypeAssignment_1_132282 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_51_in_rule__TupleTypeCS__NameAssignment_032318 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTuplePartCS_in_rule__TupleTypeCS__OwnedPartsAssignment_1_1_032357 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTuplePartCS_in_rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_132388 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__TuplePartCS__NameAssignment_032419 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__TuplePartCS__OwnedTypeAssignment_232450 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionTypeCS_in_rule__CollectionLiteralExpCS__OwnedTypeAssignment_032481 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionLiteralPartCS_in_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_032512 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionLiteralPartCS_in_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_132543 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_032574 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_132605 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePatternExpCS_in_rule__CollectionLiteralPartCS__OwnedExpressionAssignment_132636 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionTypeCS_in_rule__CollectionPatternCS__OwnedTypeAssignment_032667 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePatternExpCS_in_rule__CollectionPatternCS__OwnedPartsAssignment_2_032698 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePatternExpCS_in_rule__CollectionPatternCS__OwnedPartsAssignment_2_1_132729 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIdentifier_in_rule__CollectionPatternCS__RestVariableNameAssignment_2_2_132760 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__ConstructorPartCS__ReferredPropertyAssignment_032795 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0_in_rule__ConstructorPartCS__OwnedInitExpressionAssignment_232830 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__PatternExpCS__PatternVariableNameAssignment_032863 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__PatternExpCS__OwnedPatternTypeAssignment_232894 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_232925 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTupleLiteralPartCS_in_rule__TupleLiteralExpCS__OwnedPartsAssignment_232956 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTupleLiteralPartCS_in_rule__TupleLiteralExpCS__OwnedPartsAssignment_3_132987 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__TupleLiteralPartCS__NameAssignment_033018 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__TupleLiteralPartCS__OwnedTypeAssignment_1_133049 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_333080 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNUMBER_LITERAL_in_rule__NumberLiteralExpCS__SymbolAssignment33111 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleStringLiteral_in_rule__StringLiteralExpCS__SegmentsAssignment33142 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_95_in_rule__BooleanLiteralExpCS__SymbolAssignment_033178 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_96_in_rule__BooleanLiteralExpCS__SymbolAssignment_133222 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleMultiplicityCS_in_rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_133261 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeLiteralWithMultiplicityCS_in_rule__TypeLiteralExpCS__OwnedTypeAssignment33292 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePathNameCS_in_rule__TypeNameExpCS__OwnedPathNameAssignment_033323 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCurlyBracketedClauseCS_in_rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_033354 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_133385 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleMultiplicityCS_in_rule__TypeExpCS__OwnedMultiplicityAssignment_133416 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleBinaryOperatorName_in_rule__ExpCS__NameAssignment_0_1_133447 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__ExpCS__OwnedRightAssignment_0_1_233478 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnaryOperatorName_in_rule__PrefixedLetExpCS__NameAssignment_0_133509 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrefixedLetExpCS_in_rule__PrefixedLetExpCS__OwnedRightAssignment_0_233540 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnaryOperatorName_in_rule__PrefixedPrimaryExpCS__NameAssignment_0_133571 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrefixedPrimaryExpCS_in_rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_233602 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePathNameCS_in_rule__NameExpCS__OwnedPathNameAssignment_033633 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSquareBracketedClauseCS_in_rule__NameExpCS__OwnedSquareBracketedClausesAssignment_133664 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleRoundBracketedClauseCS_in_rule__NameExpCS__OwnedRoundBracketedClauseAssignment_233695 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCurlyBracketedClauseCS_in_rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_333726 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_97_in_rule__NameExpCS__IsPreAssignment_4_033762 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleConstructorPartCS_in_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_033801 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleConstructorPartCS_in_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_133832 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleStringLiteral_in_rule__CurlyBracketedClauseCS__ValueAssignment_2_133863 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_033894 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingCommaArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_133925 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingSemiArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_033956 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingCommaArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_133987 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingBarArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_034018 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingCommaArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_134049 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__SquareBracketedClauseCS__OwnedTermsAssignment_134080 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_134111 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_034142 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_134173 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_134204 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_134235 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__NavigatingArgCS__OwnedTypeAssignment_1_134266 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_98_in_rule__NavigatingBarArgCS__PrefixAssignment_034302 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_134341 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__NavigatingBarArgCS__OwnedTypeAssignment_2_134372 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_134403 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_64_in_rule__NavigatingCommaArgCS__PrefixAssignment_034439 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_134478 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_134509 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_134540 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_134571 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_99_in_rule__NavigatingSemiArgCS__PrefixAssignment_034607 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_134646 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_134677 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_134708 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__IfExpCS__OwnedConditionAlternatives_1_0_in_rule__IfExpCS__OwnedConditionAssignment_134739 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__IfExpCS__OwnedThenExpressionAssignment_334772 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleElseIfThenExpCS_in_rule__IfExpCS__OwnedIfThenExpressionsAssignment_434803 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__IfExpCS__OwnedElseExpressionAssignment_634834 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__ElseIfThenExpCS__OwnedConditionAssignment_134865 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_334896 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleLetVariableCS_in_rule__LetExpCS__OwnedVariablesAssignment_134927 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleLetVariableCS_in_rule__LetExpCS__OwnedVariablesAssignment_2_134958 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__LetExpCS__OwnedInExpressionAssignment_434989 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__LetVariableCS__NameAssignment_035020 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleRoundBracketedClauseCS_in_rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_135051 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__LetVariableCS__OwnedTypeAssignment_2_135082 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__LetVariableCS__OwnedInitExpressionAssignment_435113 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_rule__NestedExpCS__OwnedExpressionAssignment_135144 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleLOWER_in_rule__MultiplicityBoundsCS__LowerBoundAssignment_035175 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUPPER_in_rule__MultiplicityBoundsCS__UpperBoundAssignment_1_135206 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rule__MultiplicityStringCS__StringBoundsAlternatives_0_in_rule__MultiplicityStringCS__StringBoundsAssignment35237 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleFirstPathElementCS_in_rule__PathNameCS__OwnedPathElementsAssignment_035270 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNextPathElementCS_in_rule__PathNameCS__OwnedPathElementsAssignment_1_135301 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__FirstPathElementCS__ReferredElementAssignment35336 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnreservedName_in_rule__NextPathElementCS__ReferredElementAssignment35375 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTemplateParameterSubstitutionCS_in_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_135410 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTemplateParameterSubstitutionCS_in_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_135441 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeRefCS_in_rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment35472 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__TypeParameterCS__NameAssignment_035503 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypedRefCS_in_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_135534 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypedRefCS_in_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_135565 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypedRefCS_in_rule__TypeParameterCS__OwnedSuperAssignment_1_1_135596 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePathNameCS_in_rule__TypedTypeRefCS__OwnedPathNameAssignment_035627 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTemplateBindingCS_in_rule__TypedTypeRefCS__OwnedBindingAssignment_135658 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypedRefCS_in_rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_135689 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypedRefCS_in_rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_135720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_74_in_rule__CurlyBracketedClauseCS__Group__3__Impl22575 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0__0__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0__022614 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0__1_in_rule__CurlyBracketedClauseCS__Group_2_0__022617 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0_in_rule__CurlyBracketedClauseCS__Group_2_0__0__Impl22644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0__1__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0__122674 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__0_in_rule__CurlyBracketedClauseCS__Group_2_0__1__Impl22701 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0_1__022736 = new BitSet(new long[]{0x00000000003800C0L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__1_in_rule__CurlyBracketedClauseCS__Group_2_0_1__022739 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl22767 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl_in_rule__CurlyBracketedClauseCS__Group_2_0_1__122798 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1_in_rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl22825 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group__0__Impl_in_rule__RoundBracketedClauseCS__Group__022859 = new BitSet(new long[]{0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group__1_in_rule__RoundBracketedClauseCS__Group__022862 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group__1__Impl_in_rule__RoundBracketedClauseCS__Group__122920 = new BitSet(new long[]{0x73F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group__2_in_rule__RoundBracketedClauseCS__Group__122923 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__RoundBracketedClauseCS__Group__1__Impl22951 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group__2__Impl_in_rule__RoundBracketedClauseCS__Group__222982 = new BitSet(new long[]{0x73F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group__3_in_rule__RoundBracketedClauseCS__Group__222985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__0_in_rule__RoundBracketedClauseCS__Group__2__Impl23012 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group__3__Impl_in_rule__RoundBracketedClauseCS__Group__323043 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__RoundBracketedClauseCS__Group__3__Impl23071 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__0__Impl_in_rule__RoundBracketedClauseCS__Group_2__023110 = new BitSet(new long[]{0x0000000000000000L,0x0000000C00000001L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__1_in_rule__RoundBracketedClauseCS__Group_2__023113 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0_in_rule__RoundBracketedClauseCS__Group_2__0__Impl23140 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__1__Impl_in_rule__RoundBracketedClauseCS__Group_2__123170 = new BitSet(new long[]{0x0000000000000000L,0x0000000C00000001L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__2_in_rule__RoundBracketedClauseCS__Group_2__123173 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1_in_rule__RoundBracketedClauseCS__Group_2__1__Impl23200 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__2__Impl_in_rule__RoundBracketedClauseCS__Group_2__223231 = new BitSet(new long[]{0x0000000000000000L,0x0000000C00000001L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__3_in_rule__RoundBracketedClauseCS__Group_2__223234 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__0_in_rule__RoundBracketedClauseCS__Group_2__2__Impl23261 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2__3__Impl_in_rule__RoundBracketedClauseCS__Group_2__323292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__0_in_rule__RoundBracketedClauseCS__Group_2__3__Impl23319 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__0__Impl_in_rule__RoundBracketedClauseCS__Group_2_2__023358 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__1_in_rule__RoundBracketedClauseCS__Group_2_2__023361 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0_in_rule__RoundBracketedClauseCS__Group_2_2__0__Impl23388 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_2__1__Impl_in_rule__RoundBracketedClauseCS__Group_2_2__123418 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1_in_rule__RoundBracketedClauseCS__Group_2_2__1__Impl23445 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__0__Impl_in_rule__RoundBracketedClauseCS__Group_2_3__023480 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__1_in_rule__RoundBracketedClauseCS__Group_2_3__023483 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0_in_rule__RoundBracketedClauseCS__Group_2_3__0__Impl23510 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__Group_2_3__1__Impl_in_rule__RoundBracketedClauseCS__Group_2_3__123540 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1_in_rule__RoundBracketedClauseCS__Group_2_3__1__Impl23567 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group__0__Impl_in_rule__SquareBracketedClauseCS__Group__023602 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group__1_in_rule__SquareBracketedClauseCS__Group__023605 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__SquareBracketedClauseCS__Group__0__Impl23633 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group__1__Impl_in_rule__SquareBracketedClauseCS__Group__123664 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020001L});
+        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group__2_in_rule__SquareBracketedClauseCS__Group__123667 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__OwnedTermsAssignment_1_in_rule__SquareBracketedClauseCS__Group__1__Impl23694 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group__2__Impl_in_rule__SquareBracketedClauseCS__Group__223724 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020001L});
+        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group__3_in_rule__SquareBracketedClauseCS__Group__223727 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group_2__0_in_rule__SquareBracketedClauseCS__Group__2__Impl23754 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group__3__Impl_in_rule__SquareBracketedClauseCS__Group__323785 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_81_in_rule__SquareBracketedClauseCS__Group__3__Impl23813 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group_2__0__Impl_in_rule__SquareBracketedClauseCS__Group_2__023852 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group_2__1_in_rule__SquareBracketedClauseCS__Group_2__023855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__SquareBracketedClauseCS__Group_2__0__Impl23883 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__Group_2__1__Impl_in_rule__SquareBracketedClauseCS__Group_2__123914 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1_in_rule__SquareBracketedClauseCS__Group_2__1__Impl23941 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0__0__Impl_in_rule__NavigatingArgCS__Group_0__023975 = new BitSet(new long[]{0x1000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0__1_in_rule__NavigatingArgCS__Group_0__023978 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0_in_rule__NavigatingArgCS__Group_0__0__Impl24005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0__1__Impl_in_rule__NavigatingArgCS__Group_0__124035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Alternatives_0_1_in_rule__NavigatingArgCS__Group_0__1__Impl24062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0__0__Impl_in_rule__NavigatingArgCS__Group_0_1_0__024097 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0__1_in_rule__NavigatingArgCS__Group_0_1_0__024100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__NavigatingArgCS__Group_0_1_0__0__Impl24128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0__1__Impl_in_rule__NavigatingArgCS__Group_0_1_0__124159 = new BitSet(new long[]{0x0000020000000000L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0__2_in_rule__NavigatingArgCS__Group_0_1_0__124162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1_in_rule__NavigatingArgCS__Group_0_1_0__1__Impl24189 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0__2__Impl_in_rule__NavigatingArgCS__Group_0_1_0__224219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__0_in_rule__NavigatingArgCS__Group_0_1_0__2__Impl24246 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__0__Impl_in_rule__NavigatingArgCS__Group_0_1_0_2__024283 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__1_in_rule__NavigatingArgCS__Group_0_1_0_2__024286 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_rule__NavigatingArgCS__Group_0_1_0_2__0__Impl24314 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_0_2__1__Impl_in_rule__NavigatingArgCS__Group_0_1_0_2__124345 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1_in_rule__NavigatingArgCS__Group_0_1_0_2__1__Impl24372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_1__0__Impl_in_rule__NavigatingArgCS__Group_0_1_1__024406 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_1__1_in_rule__NavigatingArgCS__Group_0_1_1__024409 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__NavigatingArgCS__Group_0_1_1__0__Impl24437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_0_1_1__1__Impl_in_rule__NavigatingArgCS__Group_0_1_1__124468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1_in_rule__NavigatingArgCS__Group_0_1_1__1__Impl24495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_1__0__Impl_in_rule__NavigatingArgCS__Group_1__024529 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_1__1_in_rule__NavigatingArgCS__Group_1__024532 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__NavigatingArgCS__Group_1__0__Impl24560 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__Group_1__1__Impl_in_rule__NavigatingArgCS__Group_1__124591 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingArgCS__OwnedTypeAssignment_1_1_in_rule__NavigatingArgCS__Group_1__1__Impl24618 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group__0__Impl_in_rule__NavigatingBarArgCS__Group__024652 = new BitSet(new long[]{0x23F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group__1_in_rule__NavigatingBarArgCS__Group__024655 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__PrefixAssignment_0_in_rule__NavigatingBarArgCS__Group__0__Impl24682 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group__1__Impl_in_rule__NavigatingBarArgCS__Group__124712 = new BitSet(new long[]{0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group__2_in_rule__NavigatingBarArgCS__Group__124715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1_in_rule__NavigatingBarArgCS__Group__1__Impl24742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group__2__Impl_in_rule__NavigatingBarArgCS__Group__224772 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2__0_in_rule__NavigatingBarArgCS__Group__2__Impl24799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2__0__Impl_in_rule__NavigatingBarArgCS__Group_2__024836 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2__1_in_rule__NavigatingBarArgCS__Group_2__024839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__NavigatingBarArgCS__Group_2__0__Impl24867 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2__1__Impl_in_rule__NavigatingBarArgCS__Group_2__124898 = new BitSet(new long[]{0x0000020000000000L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2__2_in_rule__NavigatingBarArgCS__Group_2__124901 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1_in_rule__NavigatingBarArgCS__Group_2__1__Impl24928 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2__2__Impl_in_rule__NavigatingBarArgCS__Group_2__224958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2_2__0_in_rule__NavigatingBarArgCS__Group_2__2__Impl24985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2_2__0__Impl_in_rule__NavigatingBarArgCS__Group_2_2__025022 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2_2__1_in_rule__NavigatingBarArgCS__Group_2_2__025025 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_rule__NavigatingBarArgCS__Group_2_2__0__Impl25053 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__Group_2_2__1__Impl_in_rule__NavigatingBarArgCS__Group_2_2__125084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1_in_rule__NavigatingBarArgCS__Group_2_2__1__Impl25111 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group__0__Impl_in_rule__NavigatingCommaArgCS__Group__025145 = new BitSet(new long[]{0x23F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group__1_in_rule__NavigatingCommaArgCS__Group__025148 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__PrefixAssignment_0_in_rule__NavigatingCommaArgCS__Group__0__Impl25175 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group__1__Impl_in_rule__NavigatingCommaArgCS__Group__125205 = new BitSet(new long[]{0x1000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group__2_in_rule__NavigatingCommaArgCS__Group__125208 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1_in_rule__NavigatingCommaArgCS__Group__1__Impl25235 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group__2__Impl_in_rule__NavigatingCommaArgCS__Group__225265 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Alternatives_2_in_rule__NavigatingCommaArgCS__Group__2__Impl25292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__0__Impl_in_rule__NavigatingCommaArgCS__Group_2_0__025329 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__1_in_rule__NavigatingCommaArgCS__Group_2_0__025332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__NavigatingCommaArgCS__Group_2_0__0__Impl25360 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__1__Impl_in_rule__NavigatingCommaArgCS__Group_2_0__125391 = new BitSet(new long[]{0x0000020000000000L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__2_in_rule__NavigatingCommaArgCS__Group_2_0__125394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1_in_rule__NavigatingCommaArgCS__Group_2_0__1__Impl25421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0__2__Impl_in_rule__NavigatingCommaArgCS__Group_2_0__225451 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__0_in_rule__NavigatingCommaArgCS__Group_2_0__2__Impl25478 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl_in_rule__NavigatingCommaArgCS__Group_2_0_2__025515 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__1_in_rule__NavigatingCommaArgCS__Group_2_0_2__025518 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl25546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl_in_rule__NavigatingCommaArgCS__Group_2_0_2__125577 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1_in_rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl25604 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_1__0__Impl_in_rule__NavigatingCommaArgCS__Group_2_1__025638 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_1__1_in_rule__NavigatingCommaArgCS__Group_2_1__025641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__NavigatingCommaArgCS__Group_2_1__0__Impl25669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__Group_2_1__1__Impl_in_rule__NavigatingCommaArgCS__Group_2_1__125700 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1_in_rule__NavigatingCommaArgCS__Group_2_1__1__Impl25727 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group__0__Impl_in_rule__NavigatingSemiArgCS__Group__025761 = new BitSet(new long[]{0x23F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group__1_in_rule__NavigatingSemiArgCS__Group__025764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__PrefixAssignment_0_in_rule__NavigatingSemiArgCS__Group__0__Impl25791 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group__1__Impl_in_rule__NavigatingSemiArgCS__Group__125821 = new BitSet(new long[]{0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group__2_in_rule__NavigatingSemiArgCS__Group__125824 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1_in_rule__NavigatingSemiArgCS__Group__1__Impl25851 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group__2__Impl_in_rule__NavigatingSemiArgCS__Group__225881 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2__0_in_rule__NavigatingSemiArgCS__Group__2__Impl25908 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2__0__Impl_in_rule__NavigatingSemiArgCS__Group_2__025945 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2__1_in_rule__NavigatingSemiArgCS__Group_2__025948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__NavigatingSemiArgCS__Group_2__0__Impl25976 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2__1__Impl_in_rule__NavigatingSemiArgCS__Group_2__126007 = new BitSet(new long[]{0x0000020000000000L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2__2_in_rule__NavigatingSemiArgCS__Group_2__126010 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1_in_rule__NavigatingSemiArgCS__Group_2__1__Impl26037 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2__2__Impl_in_rule__NavigatingSemiArgCS__Group_2__226067 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__0_in_rule__NavigatingSemiArgCS__Group_2__2__Impl26094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__0__Impl_in_rule__NavigatingSemiArgCS__Group_2_2__026131 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__1_in_rule__NavigatingSemiArgCS__Group_2_2__026134 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_rule__NavigatingSemiArgCS__Group_2_2__0__Impl26162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__Group_2_2__1__Impl_in_rule__NavigatingSemiArgCS__Group_2_2__126193 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1_in_rule__NavigatingSemiArgCS__Group_2_2__1__Impl26220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__0__Impl_in_rule__IfExpCS__Group__026254 = new BitSet(new long[]{0x31F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__1_in_rule__IfExpCS__Group__026257 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_83_in_rule__IfExpCS__Group__0__Impl26285 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__1__Impl_in_rule__IfExpCS__Group__126316 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__2_in_rule__IfExpCS__Group__126319 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfExpCS__OwnedConditionAssignment_1_in_rule__IfExpCS__Group__1__Impl26346 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__2__Impl_in_rule__IfExpCS__Group__226376 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__3_in_rule__IfExpCS__Group__226379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_84_in_rule__IfExpCS__Group__2__Impl26407 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__3__Impl_in_rule__IfExpCS__Group__326438 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A00000L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__4_in_rule__IfExpCS__Group__326441 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfExpCS__OwnedThenExpressionAssignment_3_in_rule__IfExpCS__Group__3__Impl26468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__4__Impl_in_rule__IfExpCS__Group__426498 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A00000L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__5_in_rule__IfExpCS__Group__426501 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfExpCS__OwnedIfThenExpressionsAssignment_4_in_rule__IfExpCS__Group__4__Impl26528 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__5__Impl_in_rule__IfExpCS__Group__526559 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__6_in_rule__IfExpCS__Group__526562 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__IfExpCS__Group__5__Impl26590 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__6__Impl_in_rule__IfExpCS__Group__626621 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__7_in_rule__IfExpCS__Group__626624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfExpCS__OwnedElseExpressionAssignment_6_in_rule__IfExpCS__Group__6__Impl26651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfExpCS__Group__7__Impl_in_rule__IfExpCS__Group__726681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__IfExpCS__Group__7__Impl26709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__Group__0__Impl_in_rule__ElseIfThenExpCS__Group__026756 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__Group__1_in_rule__ElseIfThenExpCS__Group__026759 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__ElseIfThenExpCS__Group__0__Impl26787 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__Group__1__Impl_in_rule__ElseIfThenExpCS__Group__126818 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__Group__2_in_rule__ElseIfThenExpCS__Group__126821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__OwnedConditionAssignment_1_in_rule__ElseIfThenExpCS__Group__1__Impl26848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__Group__2__Impl_in_rule__ElseIfThenExpCS__Group__226878 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__Group__3_in_rule__ElseIfThenExpCS__Group__226881 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_84_in_rule__ElseIfThenExpCS__Group__2__Impl26909 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__Group__3__Impl_in_rule__ElseIfThenExpCS__Group__326940 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3_in_rule__ElseIfThenExpCS__Group__3__Impl26967 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetExpCS__Group__0__Impl_in_rule__LetExpCS__Group__027005 = new BitSet(new long[]{0x00000000003800C0L});
+        public static final BitSet FOLLOW_rule__LetExpCS__Group__1_in_rule__LetExpCS__Group__027008 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__LetExpCS__Group__0__Impl27036 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetExpCS__Group__1__Impl_in_rule__LetExpCS__Group__127067 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040001L});
+        public static final BitSet FOLLOW_rule__LetExpCS__Group__2_in_rule__LetExpCS__Group__127070 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetExpCS__OwnedVariablesAssignment_1_in_rule__LetExpCS__Group__1__Impl27097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetExpCS__Group__2__Impl_in_rule__LetExpCS__Group__227127 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040001L});
+        public static final BitSet FOLLOW_rule__LetExpCS__Group__3_in_rule__LetExpCS__Group__227130 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetExpCS__Group_2__0_in_rule__LetExpCS__Group__2__Impl27157 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__LetExpCS__Group__3__Impl_in_rule__LetExpCS__Group__327188 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__LetExpCS__Group__4_in_rule__LetExpCS__Group__327191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__LetExpCS__Group__3__Impl27219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetExpCS__Group__4__Impl_in_rule__LetExpCS__Group__427250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetExpCS__OwnedInExpressionAssignment_4_in_rule__LetExpCS__Group__4__Impl27277 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetExpCS__Group_2__0__Impl_in_rule__LetExpCS__Group_2__027317 = new BitSet(new long[]{0x00000000003800C0L});
+        public static final BitSet FOLLOW_rule__LetExpCS__Group_2__1_in_rule__LetExpCS__Group_2__027320 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__LetExpCS__Group_2__0__Impl27348 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetExpCS__Group_2__1__Impl_in_rule__LetExpCS__Group_2__127379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetExpCS__OwnedVariablesAssignment_2_1_in_rule__LetExpCS__Group_2__1__Impl27406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__Group__0__Impl_in_rule__LetVariableCS__Group__027440 = new BitSet(new long[]{0x3000020000000000L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__Group__1_in_rule__LetVariableCS__Group__027443 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__NameAssignment_0_in_rule__LetVariableCS__Group__0__Impl27470 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__Group__1__Impl_in_rule__LetVariableCS__Group__127500 = new BitSet(new long[]{0x3000020000000000L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__Group__2_in_rule__LetVariableCS__Group__127503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1_in_rule__LetVariableCS__Group__1__Impl27530 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__Group__2__Impl_in_rule__LetVariableCS__Group__227561 = new BitSet(new long[]{0x3000020000000000L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__Group__3_in_rule__LetVariableCS__Group__227564 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__Group_2__0_in_rule__LetVariableCS__Group__2__Impl27591 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__Group__3__Impl_in_rule__LetVariableCS__Group__327622 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__Group__4_in_rule__LetVariableCS__Group__327625 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_rule__LetVariableCS__Group__3__Impl27653 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__Group__4__Impl_in_rule__LetVariableCS__Group__427684 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__OwnedInitExpressionAssignment_4_in_rule__LetVariableCS__Group__4__Impl27711 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__Group_2__0__Impl_in_rule__LetVariableCS__Group_2__027751 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__Group_2__1_in_rule__LetVariableCS__Group_2__027754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__LetVariableCS__Group_2__0__Impl27782 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__Group_2__1__Impl_in_rule__LetVariableCS__Group_2__127813 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LetVariableCS__OwnedTypeAssignment_2_1_in_rule__LetVariableCS__Group_2__1__Impl27840 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NestedExpCS__Group__0__Impl_in_rule__NestedExpCS__Group__027874 = new BitSet(new long[]{0x21F80047FFF800F0L,0x000000018308E000L});
+        public static final BitSet FOLLOW_rule__NestedExpCS__Group__1_in_rule__NestedExpCS__Group__027877 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__NestedExpCS__Group__0__Impl27905 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NestedExpCS__Group__1__Impl_in_rule__NestedExpCS__Group__127936 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_rule__NestedExpCS__Group__2_in_rule__NestedExpCS__Group__127939 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NestedExpCS__OwnedExpressionAssignment_1_in_rule__NestedExpCS__Group__1__Impl27966 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NestedExpCS__Group__2__Impl_in_rule__NestedExpCS__Group__227996 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__NestedExpCS__Group__2__Impl28024 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SelfExpCS__Group__0__Impl_in_rule__SelfExpCS__Group__028061 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__SelfExpCS__Group__1_in_rule__SelfExpCS__Group__028064 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SelfExpCS__Group__1__Impl_in_rule__SelfExpCS__Group__128122 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_rule__SelfExpCS__Group__1__Impl28150 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__Group__0__Impl_in_rule__MultiplicityBoundsCS__Group__028185 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__Group__1_in_rule__MultiplicityBoundsCS__Group__028188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__LowerBoundAssignment_0_in_rule__MultiplicityBoundsCS__Group__0__Impl28215 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__Group__1__Impl_in_rule__MultiplicityBoundsCS__Group__128245 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__Group_1__0_in_rule__MultiplicityBoundsCS__Group__1__Impl28272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__Group_1__0__Impl_in_rule__MultiplicityBoundsCS__Group_1__028307 = new BitSet(new long[]{0x0000000400000010L});
+        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__Group_1__1_in_rule__MultiplicityBoundsCS__Group_1__028310 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_75_in_rule__MultiplicityBoundsCS__Group_1__0__Impl28338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__Group_1__1__Impl_in_rule__MultiplicityBoundsCS__Group_1__128369 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1_in_rule__MultiplicityBoundsCS__Group_1__1__Impl28396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__MultiplicityCS__Group__0__Impl_in_rule__MultiplicityCS__Group__028430 = new BitSet(new long[]{0x0200001400000010L});
+        public static final BitSet FOLLOW_rule__MultiplicityCS__Group__1_in_rule__MultiplicityCS__Group__028433 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__MultiplicityCS__Group__0__Impl28461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__MultiplicityCS__Group__1__Impl_in_rule__MultiplicityCS__Group__128492 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__MultiplicityCS__Group__2_in_rule__MultiplicityCS__Group__128495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__MultiplicityCS__Alternatives_1_in_rule__MultiplicityCS__Group__1__Impl28522 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__MultiplicityCS__Group__2__Impl_in_rule__MultiplicityCS__Group__228552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_81_in_rule__MultiplicityCS__Group__2__Impl28580 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PathNameCS__Group__0__Impl_in_rule__PathNameCS__Group__028617 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__PathNameCS__Group__1_in_rule__PathNameCS__Group__028620 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PathNameCS__OwnedPathElementsAssignment_0_in_rule__PathNameCS__Group__0__Impl28647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PathNameCS__Group__1__Impl_in_rule__PathNameCS__Group__128677 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PathNameCS__Group_1__0_in_rule__PathNameCS__Group__1__Impl28704 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__PathNameCS__Group_1__0__Impl_in_rule__PathNameCS__Group_1__028739 = new BitSet(new long[]{0x01F80000FFF800C0L});
+        public static final BitSet FOLLOW_rule__PathNameCS__Group_1__1_in_rule__PathNameCS__Group_1__028742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_72_in_rule__PathNameCS__Group_1__0__Impl28770 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PathNameCS__Group_1__1__Impl_in_rule__PathNameCS__Group_1__128801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PathNameCS__OwnedPathElementsAssignment_1_1_in_rule__PathNameCS__Group_1__1__Impl28828 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group__0__Impl_in_rule__TemplateBindingCS__Group__028862 = new BitSet(new long[]{0x23F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group__1_in_rule__TemplateBindingCS__Group__028865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__TemplateBindingCS__Group__0__Impl28893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group__1__Impl_in_rule__TemplateBindingCS__Group__128924 = new BitSet(new long[]{0x4000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group__2_in_rule__TemplateBindingCS__Group__128927 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1_in_rule__TemplateBindingCS__Group__1__Impl28954 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group__2__Impl_in_rule__TemplateBindingCS__Group__228984 = new BitSet(new long[]{0x4000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group__3_in_rule__TemplateBindingCS__Group__228987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group_2__0_in_rule__TemplateBindingCS__Group__2__Impl29014 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group__3__Impl_in_rule__TemplateBindingCS__Group__329045 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__TemplateBindingCS__Group__3__Impl29073 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group_2__0__Impl_in_rule__TemplateBindingCS__Group_2__029112 = new BitSet(new long[]{0x23F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group_2__1_in_rule__TemplateBindingCS__Group_2__029115 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__TemplateBindingCS__Group_2__0__Impl29143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateBindingCS__Group_2__1__Impl_in_rule__TemplateBindingCS__Group_2__129174 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1_in_rule__TemplateBindingCS__Group_2__1__Impl29201 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group__0__Impl_in_rule__TypeParameterCS__Group__029235 = new BitSet(new long[]{0x0000000000000000L,0x0000000014000000L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group__1_in_rule__TypeParameterCS__Group__029238 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__NameAssignment_0_in_rule__TypeParameterCS__Group__0__Impl29265 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group__1__Impl_in_rule__TypeParameterCS__Group__129295 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Alternatives_1_in_rule__TypeParameterCS__Group__1__Impl29322 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0__0__Impl_in_rule__TypeParameterCS__Group_1_0__029357 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0__1_in_rule__TypeParameterCS__Group_1_0__029360 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__TypeParameterCS__Group_1_0__0__Impl29388 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0__1__Impl_in_rule__TypeParameterCS__Group_1_0__129419 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0__2_in_rule__TypeParameterCS__Group_1_0__129422 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1_in_rule__TypeParameterCS__Group_1_0__1__Impl29449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0__2__Impl_in_rule__TypeParameterCS__Group_1_0__229479 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0_2__0_in_rule__TypeParameterCS__Group_1_0__2__Impl29506 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0_2__0__Impl_in_rule__TypeParameterCS__Group_1_0_2__029543 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0_2__1_in_rule__TypeParameterCS__Group_1_0_2__029546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__TypeParameterCS__Group_1_0_2__0__Impl29574 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_0_2__1__Impl_in_rule__TypeParameterCS__Group_1_0_2__129605 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1_in_rule__TypeParameterCS__Group_1_0_2__1__Impl29632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_1__0__Impl_in_rule__TypeParameterCS__Group_1_1__029666 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_1__1_in_rule__TypeParameterCS__Group_1_1__029669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__TypeParameterCS__Group_1_1__0__Impl29697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__Group_1_1__1__Impl_in_rule__TypeParameterCS__Group_1_1__129728 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypeParameterCS__OwnedSuperAssignment_1_1_1_in_rule__TypeParameterCS__Group_1_1__1__Impl29755 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedTypeRefCS__Group__0__Impl_in_rule__TypedTypeRefCS__Group__029789 = new BitSet(new long[]{0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__TypedTypeRefCS__Group__1_in_rule__TypedTypeRefCS__Group__029792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedTypeRefCS__OwnedPathNameAssignment_0_in_rule__TypedTypeRefCS__Group__0__Impl29819 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedTypeRefCS__Group__1__Impl_in_rule__TypedTypeRefCS__Group__129849 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedTypeRefCS__OwnedBindingAssignment_1_in_rule__TypedTypeRefCS__Group__1__Impl29876 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group__0__Impl_in_rule__WildcardTypeRefCS__Group__029911 = new BitSet(new long[]{0x23F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group__1_in_rule__WildcardTypeRefCS__Group__029914 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group__1__Impl_in_rule__WildcardTypeRefCS__Group__129972 = new BitSet(new long[]{0x0000000000000000L,0x0000000014000000L});
+        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group__2_in_rule__WildcardTypeRefCS__Group__129975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_57_in_rule__WildcardTypeRefCS__Group__1__Impl30003 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group__2__Impl_in_rule__WildcardTypeRefCS__Group__230034 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Alternatives_2_in_rule__WildcardTypeRefCS__Group__2__Impl30061 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group_2_0__0__Impl_in_rule__WildcardTypeRefCS__Group_2_0__030098 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group_2_0__1_in_rule__WildcardTypeRefCS__Group_2_0__030101 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__WildcardTypeRefCS__Group_2_0__0__Impl30129 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group_2_0__1__Impl_in_rule__WildcardTypeRefCS__Group_2_0__130160 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1_in_rule__WildcardTypeRefCS__Group_2_0__1__Impl30187 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group_2_1__0__Impl_in_rule__WildcardTypeRefCS__Group_2_1__030221 = new BitSet(new long[]{0x21F80040FFF800C0L});
+        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group_2_1__1_in_rule__WildcardTypeRefCS__Group_2_1__030224 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__WildcardTypeRefCS__Group_2_1__0__Impl30252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__Group_2_1__1__Impl_in_rule__WildcardTypeRefCS__Group_2_1__130283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1_in_rule__WildcardTypeRefCS__Group_2_1__1__Impl30310 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleImportCS_in_rule__CompleteOCLDocumentCS__OwnedImportsAssignment_0_030349 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIncludeCS_in_rule__CompleteOCLDocumentCS__OwnedIncludesAssignment_0_130380 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLibraryCS_in_rule__CompleteOCLDocumentCS__OwnedLibrariesAssignment_0_230411 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePackageDeclarationCS_in_rule__CompleteOCLDocumentCS__OwnedPackagesAssignment_1_030442 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleContextDeclCS_in_rule__CompleteOCLDocumentCS__OwnedContextsAssignment_1_130473 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTemplateSignatureCS_in_rule__ClassifierContextDeclCS__OwnedSignatureAssignment_130504 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__ClassifierContextDeclCS__SelfNameAssignment_230535 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePathNameCS_in_rule__ClassifierContextDeclCS__OwnedPathNameAssignment_330566 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleConstraintCS_in_rule__ClassifierContextDeclCS__OwnedInvariantsAssignment_4_0_130597 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDefCS_in_rule__ClassifierContextDeclCS__OwnedDefinitionsAssignment_4_130628 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__ConstraintCS__NameAssignment_0_030659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSpecificationCS_in_rule__ConstraintCS__OwnedMessageSpecificationAssignment_0_1_130690 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSpecificationCS_in_rule__ConstraintCS__OwnedSpecificationAssignment_230721 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DefOperationCS__IsStaticAssignment_030757 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTemplateSignatureCS_in_rule__DefOperationCS__OwnedSignatureAssignment_430796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__DefOperationCS__NameAssignment_530827 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDefParameterCS_in_rule__DefOperationCS__OwnedParametersAssignment_7_030858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDefParameterCS_in_rule__DefOperationCS__OwnedParametersAssignment_7_1_130889 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__DefOperationCS__OwnedTypeAssignment_1030920 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSpecificationCS_in_rule__DefOperationCS__OwnedSpecificationAssignment_1230951 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__DefParameterCS__NameAssignment_030982 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__DefParameterCS__OwnedTypeAssignment_231013 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DefPropertyCS__IsStaticAssignment_031049 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__DefPropertyCS__NameAssignment_431088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__DefPropertyCS__OwnedTypeAssignment_631119 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSpecificationCS_in_rule__DefPropertyCS__OwnedSpecificationAssignment_831150 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIdentifier_in_rule__ImportCS__NameAssignment_1_031181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleURIPathNameCS_in_rule__ImportCS__OwnedPathNameAssignment_231212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__ImportCS__IsAllAssignment_331248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleURI_in_rule__IncludeCS__ReferredNamespaceAssignment_131291 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleURI_in_rule__LibraryCS__ReferredPackageAssignment_131330 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTemplateSignatureCS_in_rule__OperationContextDeclCS__OwnedSignatureAssignment_131365 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePathNameCS_in_rule__OperationContextDeclCS__OwnedPathNameAssignment_231396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParameterCS_in_rule__OperationContextDeclCS__OwnedParametersAssignment_4_031427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParameterCS_in_rule__OperationContextDeclCS__OwnedParametersAssignment_4_1_131458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__OperationContextDeclCS__OwnedTypeAssignment_731489 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleConstraintCS_in_rule__OperationContextDeclCS__OwnedPreconditionsAssignment_8_0_131520 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleConstraintCS_in_rule__OperationContextDeclCS__OwnedPostconditionsAssignment_8_1_131551 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSpecificationCS_in_rule__OperationContextDeclCS__OwnedBodiesAssignment_8_2_331582 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePathNameCS_in_rule__PackageDeclarationCS__OwnedPathNameAssignment_131613 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleConstraintCS_in_rule__PackageDeclarationCS__OwnedInvariantsAssignment_2_131644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleContextDeclCS_in_rule__PackageDeclarationCS__OwnedContextsAssignment_331675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__ParameterCS__NameAssignment_0_031706 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__ParameterCS__OwnedTypeAssignment_131737 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePathNameCS_in_rule__PropertyContextDeclCS__OwnedPathNameAssignment_131768 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__PropertyContextDeclCS__OwnedTypeAssignment_331799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleConstraintCS_in_rule__PropertyContextDeclCS__OwnedDerivedInvariantsAssignment_4_0_131830 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSpecificationCS_in_rule__PropertyContextDeclCS__OwnedDefaultExpressionsAssignment_4_1_231861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__SpecificationCS__OwnedExpressionAssignment_031892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_UNQUOTED_STRING_in_rule__SpecificationCS__ExprStringAssignment_131923 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_0_131954 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_131985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_1_132016 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeParameterCS_in_rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_132047 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleURIFirstPathElementCS_in_rule__URIPathNameCS__OwnedPathElementsAssignment_032079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNextPathElementCS_in_rule__URIPathNameCS__OwnedPathElementsAssignment_1_132110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__URIFirstPathElementCS__ReferredElementAssignment_032145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleURI_in_rule__URIFirstPathElementCS__ReferredElementAssignment_1_132184 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrimitiveTypeIdentifier_in_rule__PrimitiveTypeCS__NameAssignment32219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionTypeIdentifier_in_rule__CollectionTypeCS__NameAssignment_032250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__CollectionTypeCS__OwnedTypeAssignment_1_132281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__TupleTypeCS__NameAssignment_032317 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTuplePartCS_in_rule__TupleTypeCS__OwnedPartsAssignment_1_1_032356 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTuplePartCS_in_rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_132387 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__TuplePartCS__NameAssignment_032418 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__TuplePartCS__OwnedTypeAssignment_232449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionTypeCS_in_rule__CollectionLiteralExpCS__OwnedTypeAssignment_032480 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionLiteralPartCS_in_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_032511 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionLiteralPartCS_in_rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_132542 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_032573 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_132604 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePatternExpCS_in_rule__CollectionLiteralPartCS__OwnedExpressionAssignment_132635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionTypeCS_in_rule__CollectionPatternCS__OwnedTypeAssignment_032666 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePatternExpCS_in_rule__CollectionPatternCS__OwnedPartsAssignment_2_032697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePatternExpCS_in_rule__CollectionPatternCS__OwnedPartsAssignment_2_1_132728 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIdentifier_in_rule__CollectionPatternCS__RestVariableNameAssignment_2_2_132759 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__ConstructorPartCS__ReferredPropertyAssignment_032794 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0_in_rule__ConstructorPartCS__OwnedInitExpressionAssignment_232829 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__PatternExpCS__PatternVariableNameAssignment_032862 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__PatternExpCS__OwnedPatternTypeAssignment_232893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_232924 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTupleLiteralPartCS_in_rule__TupleLiteralExpCS__OwnedPartsAssignment_232955 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTupleLiteralPartCS_in_rule__TupleLiteralExpCS__OwnedPartsAssignment_3_132986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__TupleLiteralPartCS__NameAssignment_033017 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__TupleLiteralPartCS__OwnedTypeAssignment_1_133048 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_333079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNUMBER_LITERAL_in_rule__NumberLiteralExpCS__SymbolAssignment33110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_rule__StringLiteralExpCS__SegmentsAssignment33141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_95_in_rule__BooleanLiteralExpCS__SymbolAssignment_033177 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_96_in_rule__BooleanLiteralExpCS__SymbolAssignment_133221 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleMultiplicityCS_in_rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_133260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeLiteralWithMultiplicityCS_in_rule__TypeLiteralExpCS__OwnedTypeAssignment33291 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePathNameCS_in_rule__TypeNameExpCS__OwnedPathNameAssignment_033322 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCurlyBracketedClauseCS_in_rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_033353 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_133384 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleMultiplicityCS_in_rule__TypeExpCS__OwnedMultiplicityAssignment_133415 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBinaryOperatorName_in_rule__ExpCS__NameAssignment_0_1_133446 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__ExpCS__OwnedRightAssignment_0_1_233477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnaryOperatorName_in_rule__PrefixedLetExpCS__NameAssignment_0_133508 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrefixedLetExpCS_in_rule__PrefixedLetExpCS__OwnedRightAssignment_0_233539 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnaryOperatorName_in_rule__PrefixedPrimaryExpCS__NameAssignment_0_133570 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrefixedPrimaryExpCS_in_rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_233601 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePathNameCS_in_rule__NameExpCS__OwnedPathNameAssignment_033632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSquareBracketedClauseCS_in_rule__NameExpCS__OwnedSquareBracketedClausesAssignment_133663 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRoundBracketedClauseCS_in_rule__NameExpCS__OwnedRoundBracketedClauseAssignment_233694 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCurlyBracketedClauseCS_in_rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_333725 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_97_in_rule__NameExpCS__IsPreAssignment_4_033761 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleConstructorPartCS_in_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_033800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleConstructorPartCS_in_rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_133831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_rule__CurlyBracketedClauseCS__ValueAssignment_2_133862 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_033893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingCommaArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_133924 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingSemiArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_033955 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingCommaArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_133986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingBarArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_034017 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingCommaArgCS_in_rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_134048 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__SquareBracketedClauseCS__OwnedTermsAssignment_134079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_134110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_034141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_134172 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_134203 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_134234 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__NavigatingArgCS__OwnedTypeAssignment_1_134265 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_98_in_rule__NavigatingBarArgCS__PrefixAssignment_034301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_134340 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__NavigatingBarArgCS__OwnedTypeAssignment_2_134371 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_134402 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__NavigatingCommaArgCS__PrefixAssignment_034438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_134477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_134508 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_134539 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_134570 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__NavigatingSemiArgCS__PrefixAssignment_034606 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_134645 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_134676 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_134707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfExpCS__OwnedConditionAlternatives_1_0_in_rule__IfExpCS__OwnedConditionAssignment_134738 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__IfExpCS__OwnedThenExpressionAssignment_334771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleElseIfThenExpCS_in_rule__IfExpCS__OwnedIfThenExpressionsAssignment_434802 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__IfExpCS__OwnedElseExpressionAssignment_634833 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__ElseIfThenExpCS__OwnedConditionAssignment_134864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_334895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLetVariableCS_in_rule__LetExpCS__OwnedVariablesAssignment_134926 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLetVariableCS_in_rule__LetExpCS__OwnedVariablesAssignment_2_134957 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__LetExpCS__OwnedInExpressionAssignment_434988 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__LetVariableCS__NameAssignment_035019 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRoundBracketedClauseCS_in_rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_135050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rule__LetVariableCS__OwnedTypeAssignment_2_135081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__LetVariableCS__OwnedInitExpressionAssignment_435112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_rule__NestedExpCS__OwnedExpressionAssignment_135143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLOWER_in_rule__MultiplicityBoundsCS__LowerBoundAssignment_035174 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUPPER_in_rule__MultiplicityBoundsCS__UpperBoundAssignment_1_135205 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__MultiplicityStringCS__StringBoundsAlternatives_0_in_rule__MultiplicityStringCS__StringBoundsAssignment35236 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFirstPathElementCS_in_rule__PathNameCS__OwnedPathElementsAssignment_035269 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNextPathElementCS_in_rule__PathNameCS__OwnedPathElementsAssignment_1_135300 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__FirstPathElementCS__ReferredElementAssignment35335 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnreservedName_in_rule__NextPathElementCS__ReferredElementAssignment35374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTemplateParameterSubstitutionCS_in_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_135409 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTemplateParameterSubstitutionCS_in_rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_135440 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeRefCS_in_rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment35471 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rule__TypeParameterCS__NameAssignment_035502 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypedRefCS_in_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_135533 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypedRefCS_in_rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_135564 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypedRefCS_in_rule__TypeParameterCS__OwnedSuperAssignment_1_1_135595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePathNameCS_in_rule__TypedTypeRefCS__OwnedPathNameAssignment_035626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTemplateBindingCS_in_rule__TypedTypeRefCS__OwnedBindingAssignment_135657 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypedRefCS_in_rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_135688 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypedRefCS_in_rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_135719 = new BitSet(new long[]{0x0000000000000002L});
         public static final BitSet FOLLOW_rulePropertyContextDeclCS_in_synpred7_InternalCompleteOCL6074 = new BitSet(new long[]{0x0000000000000002L});
         public static final BitSet FOLLOW_ruleClassifierContextDeclCS_in_synpred8_InternalCompleteOCL6091 = new BitSet(new long[]{0x0000000000000002L});
         public static final BitSet FOLLOW_ruleTypeLiteralCS_in_synpred67_InternalCompleteOCL7964 = new BitSet(new long[]{0x0000000000000002L});
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/AbstractCompleteOCLRuntimeModule.java b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/AbstractCompleteOCLRuntimeModule.java
index 33b3131..fbc3db2 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/AbstractCompleteOCLRuntimeModule.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/AbstractCompleteOCLRuntimeModule.java
@@ -6,7 +6,6 @@
 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;
@@ -14,8 +13,8 @@
 /**
  * Manual modifications go to {org.eclipse.ocl.xtext.completeocl.CompleteOCLRuntimeModule}
  */
- @SuppressWarnings("all")
-public abstract class AbstractCompleteOCLRuntimeModule extends DefaultRuntimeModule {
+@SuppressWarnings("all")
+public abstract class AbstractCompleteOCLRuntimeModule extends org.eclipse.xtext.service.DefaultRuntimeModule {
 
 	protected Properties properties = null;
 
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/CompleteOCL.xtextbin b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/CompleteOCL.xtextbin
index 92f6292..5f20dde 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/CompleteOCL.xtextbin
+++ b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/CompleteOCL.xtextbin
Binary files differ
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/CompleteOCLStandaloneSetupGenerated.java b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/CompleteOCLStandaloneSetupGenerated.java
index 0951180..5c9ef37 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/CompleteOCLStandaloneSetupGenerated.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/CompleteOCLStandaloneSetupGenerated.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.completeocl;
 
 import org.eclipse.emf.ecore.EPackage;
@@ -16,6 +16,7 @@
 @SuppressWarnings("all")
 public class CompleteOCLStandaloneSetupGenerated implements ISetup {
 
+	@Override
 	public Injector createInjectorAndDoEMFRegistration() {
 		org.eclipse.ocl.xtext.essentialocl.EssentialOCLStandaloneSetup.doSetup();
 
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/CompleteOCLAntlrTokenFileProvider.java b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/CompleteOCLAntlrTokenFileProvider.java
index 4d5743d..308618e 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/CompleteOCLAntlrTokenFileProvider.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/CompleteOCLAntlrTokenFileProvider.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.completeocl.parser.antlr;
 
 import java.io.InputStream;
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/CompleteOCLParser.java b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/CompleteOCLParser.java
index 655a32c..b20bd4e 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/CompleteOCLParser.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/CompleteOCLParser.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.completeocl.parser.antlr;
 
 import com.google.inject.Inject;
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g
index 18d1b0f..e66ca68 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g
+++ b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g
@@ -1,6795 +1,6795 @@
-/*

-* generated by Xtext

-*/

-grammar InternalCompleteOCL;

-

-options {

-	superClass=AbstractInternalAntlrParser;

-	backtrack=true;

-	

-}

-

-@lexer::header {

-package org.eclipse.ocl.xtext.completeocl.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.ocl.xtext.completeocl.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.ocl.xtext.completeocl.services.CompleteOCLGrammarAccess;

-

-}

-

-@parser::members {

-

-/*

-  This grammar contains a lot of empty actions to work around a bug in ANTLR.

-  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.

-*/

- 

- 	private CompleteOCLGrammarAccess grammarAccess;

- 	

-    public InternalCompleteOCLParser(TokenStream input, CompleteOCLGrammarAccess grammarAccess) {

-        this(input);

-        this.grammarAccess = grammarAccess;

-        registerRules(grammarAccess.getGrammar());

-    }

-    

-    @Override

-    protected String getFirstRuleName() {

-    	return "CompleteOCLDocumentCS";	

-   	}

-   	

-   	@Override

-   	protected CompleteOCLGrammarAccess getGrammarAccess() {

-   		return grammarAccess;

-   	}

-}

-

-@rulecatch { 

-    catch (RecognitionException re) { 

-        recover(input,re); 

-        appendSkippedTokens();

-    } 

-}

-

-

-

-

-// Entry rule entryRuleCompleteOCLDocumentCS

-entryRuleCompleteOCLDocumentCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCompleteOCLDocumentCSRule()); }

-	 iv_ruleCompleteOCLDocumentCS=ruleCompleteOCLDocumentCS 

-	 { $current=$iv_ruleCompleteOCLDocumentCS.current; } 

-	 EOF 

-;

-

-// Rule CompleteOCLDocumentCS

-ruleCompleteOCLDocumentCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedImportsImportCSParserRuleCall_0_0_0()); 

-	    }

-		lv_ownedImports_0_0=ruleImportCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCompleteOCLDocumentCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedImports",

-        		lv_ownedImports_0_0, 

-        		"ImportCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedIncludesIncludeCSParserRuleCall_0_1_0()); 

-	    }

-		lv_ownedIncludes_1_0=ruleIncludeCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCompleteOCLDocumentCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedIncludes",

-        		lv_ownedIncludes_1_0, 

-        		"IncludeCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedLibrariesLibraryCSParserRuleCall_0_2_0()); 

-	    }

-		lv_ownedLibraries_2_0=ruleLibraryCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCompleteOCLDocumentCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedLibraries",

-        		lv_ownedLibraries_2_0, 

-        		"LibraryCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedPackagesPackageDeclarationCSParserRuleCall_1_0_0()); 

-	    }

-		lv_ownedPackages_3_0=rulePackageDeclarationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCompleteOCLDocumentCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPackages",

-        		lv_ownedPackages_3_0, 

-        		"PackageDeclarationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedContextsContextDeclCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedContexts_4_0=ruleContextDeclCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCompleteOCLDocumentCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedContexts",

-        		lv_ownedContexts_4_0, 

-        		"ContextDeclCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)

-;

-

-

-

-

-

-// Entry rule entryRuleCompleteOCLNavigationOperatorName

-entryRuleCompleteOCLNavigationOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCompleteOCLNavigationOperatorNameRule()); } 

-	 iv_ruleCompleteOCLNavigationOperatorName=ruleCompleteOCLNavigationOperatorName 

-	 { $current=$iv_ruleCompleteOCLNavigationOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule CompleteOCLNavigationOperatorName

-ruleCompleteOCLNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='^' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getCircumflexAccentKeyword_0()); 

-    }

-

-    |

-	kw='^^' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getCircumflexAccentCircumflexAccentKeyword_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleClassifierContextDeclCS

-entryRuleClassifierContextDeclCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getClassifierContextDeclCSRule()); }

-	 iv_ruleClassifierContextDeclCS=ruleClassifierContextDeclCS 

-	 { $current=$iv_ruleClassifierContextDeclCS.current; } 

-	 EOF 

-;

-

-// Rule ClassifierContextDeclCS

-ruleClassifierContextDeclCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='context' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getClassifierContextDeclCSAccess().getContextKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getClassifierContextDeclCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedSignature_1_0=ruleTemplateSignatureCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getClassifierContextDeclCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSignature",

-        		lv_ownedSignature_1_0, 

-        		"TemplateSignatureCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getClassifierContextDeclCSAccess().getSelfNameUnrestrictedNameParserRuleCall_2_0()); 

-	    }

-		lv_selfName_2_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getClassifierContextDeclCSRule());

-	        }

-       		set(

-       			$current, 

-       			"selfName",

-        		lv_selfName_2_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getClassifierContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedPathName_3_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getClassifierContextDeclCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_3_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((	otherlv_4='inv' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getClassifierContextDeclCSAccess().getInvKeyword_4_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getClassifierContextDeclCSAccess().getOwnedInvariantsConstraintCSParserRuleCall_4_0_1_0()); 

-	    }

-		lv_ownedInvariants_5_0=ruleConstraintCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getClassifierContextDeclCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedInvariants",

-        		lv_ownedInvariants_5_0, 

-        		"ConstraintCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getClassifierContextDeclCSAccess().getOwnedDefinitionsDefCSParserRuleCall_4_1_0()); 

-	    }

-		lv_ownedDefinitions_6_0=ruleDefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getClassifierContextDeclCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDefinitions",

-        		lv_ownedDefinitions_6_0, 

-        		"DefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))+)

-;

-

-

-

-

-

-// Entry rule entryRuleConstraintCS

-entryRuleConstraintCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getConstraintCSRule()); }

-	 iv_ruleConstraintCS=ruleConstraintCS 

-	 { $current=$iv_ruleConstraintCS.current; } 

-	 EOF 

-;

-

-// Rule ConstraintCS

-ruleConstraintCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getConstraintCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='(' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getConstraintCSAccess().getLeftParenthesisKeyword_0_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_0_1_1_0()); 

-	    }

-		lv_ownedMessageSpecification_2_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getConstraintCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMessageSpecification",

-        		lv_ownedMessageSpecification_2_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_3=')' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getConstraintCSAccess().getRightParenthesisKeyword_0_1_2());

-    }

-)?)?	otherlv_4=':' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getConstraintCSAccess().getColonKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedSpecification_5_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getConstraintCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSpecification",

-        		lv_ownedSpecification_5_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleContextDeclCS

-entryRuleContextDeclCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getContextDeclCSRule()); }

-	 iv_ruleContextDeclCS=ruleContextDeclCS 

-	 { $current=$iv_ruleContextDeclCS.current; } 

-	 EOF 

-;

-

-// Rule ContextDeclCS

-ruleContextDeclCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getContextDeclCSAccess().getPropertyContextDeclCSParserRuleCall_0()); 

-    }

-    this_PropertyContextDeclCS_0=rulePropertyContextDeclCS

-    { 

-        $current = $this_PropertyContextDeclCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getContextDeclCSAccess().getClassifierContextDeclCSParserRuleCall_1()); 

-    }

-    this_ClassifierContextDeclCS_1=ruleClassifierContextDeclCS

-    { 

-        $current = $this_ClassifierContextDeclCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getContextDeclCSAccess().getOperationContextDeclCSParserRuleCall_2()); 

-    }

-    this_OperationContextDeclCS_2=ruleOperationContextDeclCS

-    { 

-        $current = $this_OperationContextDeclCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleDefCS

-entryRuleDefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getDefCSRule()); }

-	 iv_ruleDefCS=ruleDefCS 

-	 { $current=$iv_ruleDefCS.current; } 

-	 EOF 

-;

-

-// Rule DefCS

-ruleDefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getDefCSAccess().getDefOperationCSParserRuleCall_0()); 

-    }

-    this_DefOperationCS_0=ruleDefOperationCS

-    { 

-        $current = $this_DefOperationCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getDefCSAccess().getDefPropertyCSParserRuleCall_1()); 

-    }

-    this_DefPropertyCS_1=ruleDefPropertyCS

-    { 

-        $current = $this_DefPropertyCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleDefOperationCS

-entryRuleDefOperationCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getDefOperationCSRule()); }

-	 iv_ruleDefOperationCS=ruleDefOperationCS 

-	 { $current=$iv_ruleDefOperationCS.current; } 

-	 EOF 

-;

-

-// Rule DefOperationCS

-ruleDefOperationCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_isStatic_0_0=	'static' 

-    {

-        newLeafNode(lv_isStatic_0_0, grammarAccess.getDefOperationCSAccess().getIsStaticStaticKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getDefOperationCSRule());

-	        }

-       		setWithLastConsumed($current, "isStatic", true, "static");

-	    }

-

-)

-)?	otherlv_1='def' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getDefOperationCSAccess().getDefKeyword_1());

-    }

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getDefOperationCSAccess().getUnrestrictedNameParserRuleCall_2()); 

-    }

-ruleUnrestrictedName

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)?	otherlv_3=':' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getDefOperationCSAccess().getColonKeyword_3());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDefOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedSignature_4_0=ruleTemplateSignatureCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDefOperationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSignature",

-        		lv_ownedSignature_4_0, 

-        		"TemplateSignatureCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDefOperationCSAccess().getNameUnrestrictedNameParserRuleCall_5_0()); 

-	    }

-		lv_name_5_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDefOperationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_5_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_6='(' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getDefOperationCSAccess().getLeftParenthesisKeyword_6());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDefOperationCSAccess().getOwnedParametersDefParameterCSParserRuleCall_7_0_0()); 

-	    }

-		lv_ownedParameters_7_0=ruleDefParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDefOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_7_0, 

-        		"DefParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_8=',' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getDefOperationCSAccess().getCommaKeyword_7_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDefOperationCSAccess().getOwnedParametersDefParameterCSParserRuleCall_7_1_1_0()); 

-	    }

-		lv_ownedParameters_9_0=ruleDefParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDefOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_9_0, 

-        		"DefParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_10=')' 

-    {

-    	newLeafNode(otherlv_10, grammarAccess.getDefOperationCSAccess().getRightParenthesisKeyword_8());

-    }

-	otherlv_11=':' 

-    {

-    	newLeafNode(otherlv_11, grammarAccess.getDefOperationCSAccess().getColonKeyword_9());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDefOperationCSAccess().getOwnedTypeTypeExpCSParserRuleCall_10_0()); 

-	    }

-		lv_ownedType_12_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDefOperationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_12_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_13='=' 

-    {

-    	newLeafNode(otherlv_13, grammarAccess.getDefOperationCSAccess().getEqualsSignKeyword_11());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDefOperationCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_12_0()); 

-	    }

-		lv_ownedSpecification_14_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDefOperationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSpecification",

-        		lv_ownedSpecification_14_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleDefParameterCS

-entryRuleDefParameterCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getDefParameterCSRule()); }

-	 iv_ruleDefParameterCS=ruleDefParameterCS 

-	 { $current=$iv_ruleDefParameterCS.current; } 

-	 EOF 

-;

-

-// Rule DefParameterCS

-ruleDefParameterCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDefParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDefParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getDefParameterCSAccess().getColonKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDefParameterCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDefParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleDefPropertyCS

-entryRuleDefPropertyCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getDefPropertyCSRule()); }

-	 iv_ruleDefPropertyCS=ruleDefPropertyCS 

-	 { $current=$iv_ruleDefPropertyCS.current; } 

-	 EOF 

-;

-

-// Rule DefPropertyCS

-ruleDefPropertyCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_isStatic_0_0=	'static' 

-    {

-        newLeafNode(lv_isStatic_0_0, grammarAccess.getDefPropertyCSAccess().getIsStaticStaticKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getDefPropertyCSRule());

-	        }

-       		setWithLastConsumed($current, "isStatic", true, "static");

-	    }

-

-)

-)?	otherlv_1='def' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getDefPropertyCSAccess().getDefKeyword_1());

-    }

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getDefPropertyCSAccess().getUnrestrictedNameParserRuleCall_2()); 

-    }

-ruleUnrestrictedName

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)?	otherlv_3=':' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getDefPropertyCSAccess().getColonKeyword_3());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDefPropertyCSAccess().getNameUnrestrictedNameParserRuleCall_4_0()); 

-	    }

-		lv_name_4_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDefPropertyCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_4_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_5=':' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getDefPropertyCSAccess().getColonKeyword_5());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDefPropertyCSAccess().getOwnedTypeTypeExpCSParserRuleCall_6_0()); 

-	    }

-		lv_ownedType_6_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDefPropertyCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_6_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_7='=' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getDefPropertyCSAccess().getEqualsSignKeyword_7());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDefPropertyCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_8_0()); 

-	    }

-		lv_ownedSpecification_8_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDefPropertyCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSpecification",

-        		lv_ownedSpecification_8_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleImportCS

-entryRuleImportCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getImportCSRule()); }

-	 iv_ruleImportCS=ruleImportCS 

-	 { $current=$iv_ruleImportCS.current; } 

-	 EOF 

-;

-

-// Rule ImportCS

-ruleImportCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='import' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getImportCSAccess().getImportKeyword_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getImportCSAccess().getNameIdentifierParserRuleCall_1_0_0()); 

-	    }

-		lv_name_1_0=ruleIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getImportCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"Identifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getImportCSAccess().getColonKeyword_1_1());

-    }

-)?(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getImportCSAccess().getOwnedPathNameURIPathNameCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedPathName_3_0=ruleURIPathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getImportCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_3_0, 

-        		"URIPathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		lv_isAll_4_0=	'::*' 

-    {

-        newLeafNode(lv_isAll_4_0, grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getImportCSRule());

-	        }

-       		setWithLastConsumed($current, "isAll", true, "::*");

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleIncludeCS

-entryRuleIncludeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIncludeCSRule()); }

-	 iv_ruleIncludeCS=ruleIncludeCS 

-	 { $current=$iv_ruleIncludeCS.current; } 

-	 EOF 

-;

-

-// Rule IncludeCS

-ruleIncludeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='include' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getIncludeCSAccess().getIncludeKeyword_0());

-    }

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getIncludeCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getIncludeCSAccess().getReferredNamespaceNamespaceCrossReference_1_0()); 

-	    }

-		ruleURI		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLibraryCS

-entryRuleLibraryCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLibraryCSRule()); }

-	 iv_ruleLibraryCS=ruleLibraryCS 

-	 { $current=$iv_ruleLibraryCS.current; } 

-	 EOF 

-;

-

-// Rule LibraryCS

-ruleLibraryCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='library' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLibraryCSAccess().getLibraryKeyword_0());

-    }

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibraryCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_1_0()); 

-	    }

-		ruleURI		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleOperationContextDeclCS

-entryRuleOperationContextDeclCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getOperationContextDeclCSRule()); }

-	 iv_ruleOperationContextDeclCS=ruleOperationContextDeclCS 

-	 { $current=$iv_ruleOperationContextDeclCS.current; } 

-	 EOF 

-;

-

-// Rule OperationContextDeclCS

-ruleOperationContextDeclCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='context' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getOperationContextDeclCSAccess().getContextKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedSignature_1_0=ruleTemplateSignatureCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSignature",

-        		lv_ownedSignature_1_0, 

-        		"TemplateSignatureCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedPathName_2_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_2_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_3='(' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getOperationContextDeclCSAccess().getLeftParenthesisKeyword_3());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersParameterCSParserRuleCall_4_0_0()); 

-	    }

-		lv_ownedParameters_4_0=ruleParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_4_0, 

-        		"ParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_5=',' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getOperationContextDeclCSAccess().getCommaKeyword_4_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersParameterCSParserRuleCall_4_1_1_0()); 

-	    }

-		lv_ownedParameters_6_0=ruleParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_6_0, 

-        		"ParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_7=')' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getOperationContextDeclCSAccess().getRightParenthesisKeyword_5());

-    }

-	otherlv_8=':' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getOperationContextDeclCSAccess().getColonKeyword_6());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_7_0()); 

-	    }

-		lv_ownedType_9_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_9_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?((	otherlv_10='pre' 

-    {

-    	newLeafNode(otherlv_10, grammarAccess.getOperationContextDeclCSAccess().getPreKeyword_8_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedPreconditionsConstraintCSParserRuleCall_8_0_1_0()); 

-	    }

-		lv_ownedPreconditions_11_0=ruleConstraintCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPreconditions",

-        		lv_ownedPreconditions_11_0, 

-        		"ConstraintCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |(	otherlv_12='post' 

-    {

-    	newLeafNode(otherlv_12, grammarAccess.getOperationContextDeclCSAccess().getPostKeyword_8_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedPostconditionsConstraintCSParserRuleCall_8_1_1_0()); 

-	    }

-		lv_ownedPostconditions_13_0=ruleConstraintCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPostconditions",

-        		lv_ownedPostconditions_13_0, 

-        		"ConstraintCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |(	otherlv_14='body' 

-    {

-    	newLeafNode(otherlv_14, grammarAccess.getOperationContextDeclCSAccess().getBodyKeyword_8_2_0());

-    }

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getUnrestrictedNameParserRuleCall_8_2_1()); 

-    }

-ruleUnrestrictedName

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)?	otherlv_16=':' 

-    {

-    	newLeafNode(otherlv_16, grammarAccess.getOperationContextDeclCSAccess().getColonKeyword_8_2_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedBodiesSpecificationCSParserRuleCall_8_2_3_0()); 

-	    }

-		lv_ownedBodies_17_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedBodies",

-        		lv_ownedBodies_17_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))*)

-;

-

-

-

-

-

-// Entry rule entryRulePackageDeclarationCS

-entryRulePackageDeclarationCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPackageDeclarationCSRule()); }

-	 iv_rulePackageDeclarationCS=rulePackageDeclarationCS 

-	 { $current=$iv_rulePackageDeclarationCS.current; } 

-	 EOF 

-;

-

-// Rule PackageDeclarationCS

-rulePackageDeclarationCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='package' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getPackageDeclarationCSAccess().getPackageKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageDeclarationCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedPathName_1_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageDeclarationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_1_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2='inv' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getPackageDeclarationCSAccess().getInvKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageDeclarationCSAccess().getOwnedInvariantsConstraintCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedInvariants_3_0=ruleConstraintCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageDeclarationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedInvariants",

-        		lv_ownedInvariants_3_0, 

-        		"ConstraintCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageDeclarationCSAccess().getOwnedContextsContextDeclCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedContexts_4_0=ruleContextDeclCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageDeclarationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedContexts",

-        		lv_ownedContexts_4_0, 

-        		"ContextDeclCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_5='endpackage' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getPackageDeclarationCSAccess().getEndpackageKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleParameterCS

-entryRuleParameterCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getParameterCSRule()); }

-	 iv_ruleParameterCS=ruleParameterCS 

-	 { $current=$iv_ruleParameterCS.current; } 

-	 EOF 

-;

-

-// Rule ParameterCS

-ruleParameterCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getParameterCSAccess().getColonKeyword_0_1());

-    }

-)?(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getParameterCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRulePropertyContextDeclCS

-entryRulePropertyContextDeclCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPropertyContextDeclCSRule()); }

-	 iv_rulePropertyContextDeclCS=rulePropertyContextDeclCS 

-	 { $current=$iv_rulePropertyContextDeclCS.current; } 

-	 EOF 

-;

-

-// Rule PropertyContextDeclCS

-rulePropertyContextDeclCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='context' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getPropertyContextDeclCSAccess().getContextKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPropertyContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedPathName_1_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPropertyContextDeclCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_1_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPropertyContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPropertyContextDeclCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?((	otherlv_4='derive' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getPropertyContextDeclCSAccess().getDeriveKeyword_4_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDerivedInvariantsConstraintCSParserRuleCall_4_0_1_0()); 

-	    }

-		lv_ownedDerivedInvariants_5_0=ruleConstraintCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPropertyContextDeclCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDerivedInvariants",

-        		lv_ownedDerivedInvariants_5_0, 

-        		"ConstraintCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |(	otherlv_6='init' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getPropertyContextDeclCSAccess().getInitKeyword_4_1_0());

-    }

-	otherlv_7=':' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_4_1_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_4_1_2_0()); 

-	    }

-		lv_ownedDefaultExpressions_8_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPropertyContextDeclCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDefaultExpressions",

-        		lv_ownedDefaultExpressions_8_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))*)

-;

-

-

-

-

-

-// Entry rule entryRuleSpecificationCS

-entryRuleSpecificationCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getSpecificationCSRule()); }

-	 iv_ruleSpecificationCS=ruleSpecificationCS 

-	 { $current=$iv_ruleSpecificationCS.current; } 

-	 EOF 

-;

-

-// Rule SpecificationCS

-ruleSpecificationCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedExpression_0_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getSpecificationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_0_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		lv_exprString_1_0=RULE_UNQUOTED_STRING

-		{

-			newLeafNode(lv_exprString_1_0, grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getSpecificationCSRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"exprString",

-        		lv_exprString_1_0, 

-        		"UNQUOTED_STRING");

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleTemplateSignatureCS

-entryRuleTemplateSignatureCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTemplateSignatureCSRule()); }

-	 iv_ruleTemplateSignatureCS=ruleTemplateSignatureCS 

-	 { $current=$iv_ruleTemplateSignatureCS.current; } 

-	 EOF 

-;

-

-// Rule TemplateSignatureCS

-ruleTemplateSignatureCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((	otherlv_0='(' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_1_0()); 

-	    }

-		lv_ownedParameters_1_0=ruleTypeParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_1_0, 

-        		"TypeParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_2_1_0()); 

-	    }

-		lv_ownedParameters_3_0=ruleTypeParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_3_0, 

-        		"TypeParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4=')' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3());

-    }

-)

-    |(	otherlv_5='<' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedParameters_6_0=ruleTypeParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_6_0, 

-        		"TypeParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_7=',' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_2_1_0()); 

-	    }

-		lv_ownedParameters_8_0=ruleTypeParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_8_0, 

-        		"TypeParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_9='>' 

-    {

-    	newLeafNode(otherlv_9, grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleTypedRefCS

-entryRuleTypedRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypedRefCSRule()); }

-	 iv_ruleTypedRefCS=ruleTypedRefCS 

-	 { $current=$iv_ruleTypedRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypedRefCS

-ruleTypedRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypeLiteralCSParserRuleCall_0()); 

-    }

-    this_TypeLiteralCS_0=ruleTypeLiteralCS

-    { 

-        $current = $this_TypeLiteralCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); 

-    }

-    this_TypedTypeRefCS_1=ruleTypedTypeRefCS

-    { 

-        $current = $this_TypedTypeRefCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleUnrestrictedName

-entryRuleUnrestrictedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnrestrictedNameRule()); } 

-	 iv_ruleUnrestrictedName=ruleUnrestrictedName 

-	 { $current=$iv_ruleUnrestrictedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule UnrestrictedName

-ruleUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall_0()); 

-    }

-    this_EssentialOCLUnrestrictedName_0=ruleEssentialOCLUnrestrictedName    {

-		$current.merge(this_EssentialOCLUnrestrictedName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	kw='import' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getImportKeyword_1()); 

-    }

-

-    |

-	kw='include' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getIncludeKeyword_2()); 

-    }

-

-    |

-	kw='library' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getLibraryKeyword_3()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleNavigatingArgExpCS

-entryRuleNavigatingArgExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingArgExpCSRule()); }

-	 iv_ruleNavigatingArgExpCS=ruleNavigatingArgExpCS 

-	 { $current=$iv_ruleNavigatingArgExpCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingArgExpCS

-ruleNavigatingArgExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getNavigatingArgExpCSAccess().getOCLMessageArgCSAction_0_0(),

-            $current);

-    }

-)	otherlv_1='?' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getNavigatingArgExpCSAccess().getQuestionMarkKeyword_0_1());

-    }

-)

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall_1()); 

-    }

-    this_ExpCS_2=ruleExpCS

-    { 

-        $current = $this_ExpCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigationOperatorName

-entryRuleNavigationOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigationOperatorNameRule()); } 

-	 iv_ruleNavigationOperatorName=ruleNavigationOperatorName 

-	 { $current=$iv_ruleNavigationOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule NavigationOperatorName

-ruleNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall_0()); 

-    }

-    this_EssentialOCLNavigationOperatorName_0=ruleEssentialOCLNavigationOperatorName    {

-		$current.merge(this_EssentialOCLNavigationOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getNavigationOperatorNameAccess().getCompleteOCLNavigationOperatorNameParserRuleCall_1()); 

-    }

-    this_CompleteOCLNavigationOperatorName_1=ruleCompleteOCLNavigationOperatorName    {

-		$current.merge(this_CompleteOCLNavigationOperatorName_1);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRulePrimitiveTypeIdentifier

-entryRulePrimitiveTypeIdentifier returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimitiveTypeIdentifierRule()); } 

-	 iv_rulePrimitiveTypeIdentifier=rulePrimitiveTypeIdentifier 

-	 { $current=$iv_rulePrimitiveTypeIdentifier.current.getText(); }  

-	 EOF 

-;

-

-// Rule PrimitiveTypeIdentifier

-rulePrimitiveTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='Boolean' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); 

-    }

-

-    |

-	kw='Integer' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); 

-    }

-

-    |

-	kw='Real' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); 

-    }

-

-    |

-	kw='String' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); 

-    }

-

-    |

-	kw='UnlimitedNatural' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); 

-    }

-

-    |

-	kw='OclAny' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); 

-    }

-

-    |

-	kw='OclInvalid' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); 

-    }

-

-    |

-	kw='OclMessage' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclMessageKeyword_7()); 

-    }

-

-    |

-	kw='OclState' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclStateKeyword_8()); 

-    }

-

-    |

-	kw='OclVoid' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_9()); 

-    }

-)

-    ;

-

-

-

-

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnaryOperatorName

-entryRuleEssentialOCLUnaryOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 

-	 iv_ruleEssentialOCLUnaryOperatorName=ruleEssentialOCLUnaryOperatorName 

-	 { $current=$iv_ruleEssentialOCLUnaryOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLUnaryOperatorName

-ruleEssentialOCLUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='-' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); 

-    }

-

-    |

-	kw='not' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLInfixOperatorName

-entryRuleEssentialOCLInfixOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 

-	 iv_ruleEssentialOCLInfixOperatorName=ruleEssentialOCLInfixOperatorName 

-	 { $current=$iv_ruleEssentialOCLInfixOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLInfixOperatorName

-ruleEssentialOCLInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='*' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); 

-    }

-

-    |

-	kw='/' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); 

-    }

-

-    |

-	kw='+' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); 

-    }

-

-    |

-	kw='-' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); 

-    }

-

-    |

-	kw='>' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); 

-    }

-

-    |

-	kw='<' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); 

-    }

-

-    |

-	kw='>=' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); 

-    }

-

-    |

-	kw='<=' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); 

-    }

-

-    |

-	kw='=' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); 

-    }

-

-    |

-	kw='<>' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); 

-    }

-

-    |

-	kw='and' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); 

-    }

-

-    |

-	kw='or' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); 

-    }

-

-    |

-	kw='xor' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); 

-    }

-

-    |

-	kw='implies' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLNavigationOperatorName

-entryRuleEssentialOCLNavigationOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 

-	 iv_ruleEssentialOCLNavigationOperatorName=ruleEssentialOCLNavigationOperatorName 

-	 { $current=$iv_ruleEssentialOCLNavigationOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLNavigationOperatorName

-ruleEssentialOCLNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='.' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); 

-    }

-

-    |

-	kw='->' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); 

-    }

-

-    |

-	kw='?.' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); 

-    }

-

-    |

-	kw='?->' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleBinaryOperatorName

-entryRuleBinaryOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getBinaryOperatorNameRule()); } 

-	 iv_ruleBinaryOperatorName=ruleBinaryOperatorName 

-	 { $current=$iv_ruleBinaryOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule BinaryOperatorName

-ruleBinaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); 

-    }

-    this_InfixOperatorName_0=ruleInfixOperatorName    {

-		$current.merge(this_InfixOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); 

-    }

-    this_NavigationOperatorName_1=ruleNavigationOperatorName    {

-		$current.merge(this_NavigationOperatorName_1);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleInfixOperatorName

-entryRuleInfixOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getInfixOperatorNameRule()); } 

-	 iv_ruleInfixOperatorName=ruleInfixOperatorName 

-	 { $current=$iv_ruleInfixOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule InfixOperatorName

-ruleInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); 

-    }

-    this_EssentialOCLInfixOperatorName_0=ruleEssentialOCLInfixOperatorName    {

-		$current.merge(this_EssentialOCLInfixOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleUnaryOperatorName

-entryRuleUnaryOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnaryOperatorNameRule()); } 

-	 iv_ruleUnaryOperatorName=ruleUnaryOperatorName 

-	 { $current=$iv_ruleUnaryOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule UnaryOperatorName

-ruleUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); 

-    }

-    this_EssentialOCLUnaryOperatorName_0=ruleEssentialOCLUnaryOperatorName    {

-		$current.merge(this_EssentialOCLUnaryOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnrestrictedName

-entryRuleEssentialOCLUnrestrictedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 

-	 iv_ruleEssentialOCLUnrestrictedName=ruleEssentialOCLUnrestrictedName 

-	 { $current=$iv_ruleEssentialOCLUnrestrictedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLUnrestrictedName

-ruleEssentialOCLUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); 

-    }

-    this_Identifier_0=ruleIdentifier    {

-		$current.merge(this_Identifier_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnreservedName

-entryRuleEssentialOCLUnreservedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameRule()); } 

-	 iv_ruleEssentialOCLUnreservedName=ruleEssentialOCLUnreservedName 

-	 { $current=$iv_ruleEssentialOCLUnreservedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLUnreservedName

-ruleEssentialOCLUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); 

-    }

-    this_UnrestrictedName_0=ruleUnrestrictedName    {

-		$current.merge(this_UnrestrictedName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); 

-    }

-    this_CollectionTypeIdentifier_1=ruleCollectionTypeIdentifier    {

-		$current.merge(this_CollectionTypeIdentifier_1);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); 

-    }

-    this_PrimitiveTypeIdentifier_2=rulePrimitiveTypeIdentifier    {

-		$current.merge(this_PrimitiveTypeIdentifier_2);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	kw='Tuple' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleUnreservedName

-entryRuleUnreservedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnreservedNameRule()); } 

-	 iv_ruleUnreservedName=ruleUnreservedName 

-	 { $current=$iv_ruleUnreservedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule UnreservedName

-ruleUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); 

-    }

-    this_EssentialOCLUnreservedName_0=ruleEssentialOCLUnreservedName    {

-		$current.merge(this_EssentialOCLUnreservedName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleURIPathNameCS

-entryRuleURIPathNameCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getURIPathNameCSRule()); }

-	 iv_ruleURIPathNameCS=ruleURIPathNameCS 

-	 { $current=$iv_ruleURIPathNameCS.current; } 

-	 EOF 

-;

-

-// Rule URIPathNameCS

-ruleURIPathNameCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsURIFirstPathElementCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathElements_0_0=ruleURIFirstPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getURIPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_0_0, 

-        		"URIFirstPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='::' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedPathElements_2_0=ruleNextPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getURIPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_2_0, 

-        		"NextPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)

-;

-

-

-

-

-

-// Entry rule entryRuleURIFirstPathElementCS

-entryRuleURIFirstPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getURIFirstPathElementCSRule()); }

-	 iv_ruleURIFirstPathElementCS=ruleURIFirstPathElementCS 

-	 { $current=$iv_ruleURIFirstPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule URIFirstPathElementCS

-ruleURIFirstPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0(),

-            $current);

-    }

-)(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); 

-	    }

-		ruleURI		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))

-;

-

-

-

-

-

-// Entry rule entryRulePrimitiveTypeCS

-entryRulePrimitiveTypeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimitiveTypeCSRule()); }

-	 iv_rulePrimitiveTypeCS=rulePrimitiveTypeCS 

-	 { $current=$iv_rulePrimitiveTypeCS.current; } 

-	 EOF 

-;

-

-// Rule PrimitiveTypeCS

-rulePrimitiveTypeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); 

-	    }

-		lv_name_0_0=rulePrimitiveTypeIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrimitiveTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"PrimitiveTypeIdentifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionTypeIdentifier

-entryRuleCollectionTypeIdentifier returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionTypeIdentifierRule()); } 

-	 iv_ruleCollectionTypeIdentifier=ruleCollectionTypeIdentifier 

-	 { $current=$iv_ruleCollectionTypeIdentifier.current.getText(); }  

-	 EOF 

-;

-

-// Rule CollectionTypeIdentifier

-ruleCollectionTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='Set' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); 

-    }

-

-    |

-	kw='Bag' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); 

-    }

-

-    |

-	kw='Sequence' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); 

-    }

-

-    |

-	kw='Collection' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); 

-    }

-

-    |

-	kw='OrderedSet' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleCollectionTypeCS

-entryRuleCollectionTypeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionTypeCSRule()); }

-	 iv_ruleCollectionTypeCS=ruleCollectionTypeCS 

-	 { $current=$iv_ruleCollectionTypeCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionTypeCS

-ruleCollectionTypeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleCollectionTypeIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"CollectionTypeIdentifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='(' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_3=')' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2());

-    }

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTupleTypeCS

-entryRuleTupleTypeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTupleTypeCSRule()); }

-	 iv_ruleTupleTypeCS=ruleTupleTypeCS 

-	 { $current=$iv_ruleTupleTypeCS.current; } 

-	 EOF 

-;

-

-// Rule TupleTypeCS

-ruleTupleTypeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_name_0_0=	'Tuple' 

-    {

-        newLeafNode(lv_name_0_0, grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getTupleTypeCSRule());

-	        }

-       		setWithLastConsumed($current, "name", lv_name_0_0, "Tuple");

-	    }

-

-)

-)(	otherlv_1='(' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); 

-	    }

-		lv_ownedParts_2_0=ruleTuplePartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"TuplePartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleTuplePartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"TuplePartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_5=')' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2());

-    }

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTuplePartCS

-entryRuleTuplePartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTuplePartCSRule()); }

-	 iv_ruleTuplePartCS=ruleTuplePartCS 

-	 { $current=$iv_ruleTuplePartCS.current; } 

-	 EOF 

-;

-

-// Rule TuplePartCS

-ruleTuplePartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTuplePartCSAccess().getColonKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionLiteralExpCS

-entryRuleCollectionLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionLiteralExpCSRule()); }

-	 iv_ruleCollectionLiteralExpCS=ruleCollectionLiteralExpCS 

-	 { $current=$iv_ruleCollectionLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionLiteralExpCS

-ruleCollectionLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedType_0_0=ruleCollectionTypeCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_0_0, 

-        		"CollectionTypeCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedParts_2_0=ruleCollectionLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"CollectionLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleCollectionLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"CollectionLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_5='}' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionLiteralPartCS

-entryRuleCollectionLiteralPartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionLiteralPartCSRule()); }

-	 iv_ruleCollectionLiteralPartCS=ruleCollectionLiteralPartCS 

-	 { $current=$iv_ruleCollectionLiteralPartCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionLiteralPartCS

-ruleCollectionLiteralPartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); 

-	    }

-		lv_ownedExpression_0_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_0_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='..' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); 

-	    }

-		lv_ownedLastExpression_2_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedLastExpression",

-        		lv_ownedLastExpression_2_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedExpression_3_0=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_3_0, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionPatternCS

-entryRuleCollectionPatternCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionPatternCSRule()); }

-	 iv_ruleCollectionPatternCS=ruleCollectionPatternCS 

-	 { $current=$iv_ruleCollectionPatternCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionPatternCS

-ruleCollectionPatternCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedType_0_0=ruleCollectionTypeCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_0_0, 

-        		"CollectionTypeCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedParts_2_0=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*(	otherlv_5='++' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); 

-	    }

-		lv_restVariableName_6_0=ruleIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		set(

-       			$current, 

-       			"restVariableName",

-        		lv_restVariableName_6_0, 

-        		"Identifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?	otherlv_7='}' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleConstructorPartCS

-entryRuleConstructorPartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getConstructorPartCSRule()); }

-	 iv_ruleConstructorPartCS=ruleConstructorPartCS 

-	 { $current=$iv_ruleConstructorPartCS.current; } 

-	 EOF 

-;

-

-// Rule ConstructorPartCS

-ruleConstructorPartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getConstructorPartCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1='=' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1());

-    }

-(

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedInitExpression_2_1=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_2_1, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-    |		{ 

-	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); 

-	    }

-		lv_ownedInitExpression_2_2=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_2_2, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRulePatternExpCS

-entryRulePatternExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPatternExpCSRule()); }

-	 iv_rulePatternExpCS=rulePatternExpCS 

-	 { $current=$iv_rulePatternExpCS.current; } 

-	 EOF 

-;

-

-// Rule PatternExpCS

-rulePatternExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_patternVariableName_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"patternVariableName",

-        		lv_patternVariableName_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getPatternExpCSAccess().getColonKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedPatternType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPatternType",

-        		lv_ownedPatternType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLambdaLiteralExpCS

-entryRuleLambdaLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLambdaLiteralExpCSRule()); }

-	 iv_ruleLambdaLiteralExpCS=ruleLambdaLiteralExpCS 

-	 { $current=$iv_ruleLambdaLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule LambdaLiteralExpCS

-ruleLambdaLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='Lambda' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0());

-    }

-	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedExpressionCS_2_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLambdaLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpressionCS",

-        		lv_ownedExpressionCS_2_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_3='}' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrimitiveLiteralExpCS

-entryRulePrimitiveLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSRule()); }

-	 iv_rulePrimitiveLiteralExpCS=rulePrimitiveLiteralExpCS 

-	 { $current=$iv_rulePrimitiveLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrimitiveLiteralExpCS

-rulePrimitiveLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); 

-    }

-    this_NumberLiteralExpCS_0=ruleNumberLiteralExpCS

-    { 

-        $current = $this_NumberLiteralExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); 

-    }

-    this_StringLiteralExpCS_1=ruleStringLiteralExpCS

-    { 

-        $current = $this_StringLiteralExpCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); 

-    }

-    this_BooleanLiteralExpCS_2=ruleBooleanLiteralExpCS

-    { 

-        $current = $this_BooleanLiteralExpCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); 

-    }

-    this_UnlimitedNaturalLiteralExpCS_3=ruleUnlimitedNaturalLiteralExpCS

-    { 

-        $current = $this_UnlimitedNaturalLiteralExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); 

-    }

-    this_InvalidLiteralExpCS_4=ruleInvalidLiteralExpCS

-    { 

-        $current = $this_InvalidLiteralExpCS_4.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); 

-    }

-    this_NullLiteralExpCS_5=ruleNullLiteralExpCS

-    { 

-        $current = $this_NullLiteralExpCS_5.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTupleLiteralExpCS

-entryRuleTupleLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTupleLiteralExpCSRule()); }

-	 iv_ruleTupleLiteralExpCS=ruleTupleLiteralExpCS 

-	 { $current=$iv_ruleTupleLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule TupleLiteralExpCS

-ruleTupleLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='Tuple' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0());

-    }

-	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedParts_2_0=ruleTupleLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"TupleLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleTupleLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"TupleLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_5='}' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTupleLiteralPartCS

-entryRuleTupleLiteralPartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTupleLiteralPartCSRule()); }

-	 iv_ruleTupleLiteralPartCS=ruleTupleLiteralPartCS 

-	 { $current=$iv_ruleTupleLiteralPartCS.current; } 

-	 EOF 

-;

-

-// Rule TupleLiteralPartCS

-ruleTupleLiteralPartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?	otherlv_3='=' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedInitExpression_4_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_4_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleNumberLiteralExpCS

-entryRuleNumberLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNumberLiteralExpCSRule()); }

-	 iv_ruleNumberLiteralExpCS=ruleNumberLiteralExpCS 

-	 { $current=$iv_ruleNumberLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule NumberLiteralExpCS

-ruleNumberLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); 

-	    }

-		lv_symbol_0_0=ruleNUMBER_LITERAL		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNumberLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"symbol",

-        		lv_symbol_0_0, 

-        		"NUMBER_LITERAL");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleStringLiteralExpCS

-entryRuleStringLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getStringLiteralExpCSRule()); }

-	 iv_ruleStringLiteralExpCS=ruleStringLiteralExpCS 

-	 { $current=$iv_ruleStringLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule StringLiteralExpCS

-ruleStringLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); 

-	    }

-		lv_segments_0_0=ruleStringLiteral		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getStringLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"segments",

-        		lv_segments_0_0, 

-        		"StringLiteral");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)+

-;

-

-

-

-

-

-// Entry rule entryRuleBooleanLiteralExpCS

-entryRuleBooleanLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getBooleanLiteralExpCSRule()); }

-	 iv_ruleBooleanLiteralExpCS=ruleBooleanLiteralExpCS 

-	 { $current=$iv_ruleBooleanLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule BooleanLiteralExpCS

-ruleBooleanLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_symbol_0_0=	'true' 

-    {

-        newLeafNode(lv_symbol_0_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());

-	        }

-       		setWithLastConsumed($current, "symbol", lv_symbol_0_0, "true");

-	    }

-

-)

-)

-    |(

-(

-		lv_symbol_1_0=	'false' 

-    {

-        newLeafNode(lv_symbol_1_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());

-	        }

-       		setWithLastConsumed($current, "symbol", lv_symbol_1_0, "false");

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleUnlimitedNaturalLiteralExpCS

-entryRuleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }

-	 iv_ruleUnlimitedNaturalLiteralExpCS=ruleUnlimitedNaturalLiteralExpCS 

-	 { $current=$iv_ruleUnlimitedNaturalLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule UnlimitedNaturalLiteralExpCS

-ruleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='*' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleInvalidLiteralExpCS

-entryRuleInvalidLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getInvalidLiteralExpCSRule()); }

-	 iv_ruleInvalidLiteralExpCS=ruleInvalidLiteralExpCS 

-	 { $current=$iv_ruleInvalidLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule InvalidLiteralExpCS

-ruleInvalidLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='invalid' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNullLiteralExpCS

-entryRuleNullLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNullLiteralExpCSRule()); }

-	 iv_ruleNullLiteralExpCS=ruleNullLiteralExpCS 

-	 { $current=$iv_ruleNullLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule NullLiteralExpCS

-ruleNullLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='null' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeLiteralCS

-entryRuleTypeLiteralCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeLiteralCSRule()); }

-	 iv_ruleTypeLiteralCS=ruleTypeLiteralCS 

-	 { $current=$iv_ruleTypeLiteralCS.current; } 

-	 EOF 

-;

-

-// Rule TypeLiteralCS

-ruleTypeLiteralCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); 

-    }

-    this_PrimitiveTypeCS_0=rulePrimitiveTypeCS

-    { 

-        $current = $this_PrimitiveTypeCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); 

-    }

-    this_CollectionTypeCS_1=ruleCollectionTypeCS

-    { 

-        $current = $this_CollectionTypeCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); 

-    }

-    this_TupleTypeCS_2=ruleTupleTypeCS

-    { 

-        $current = $this_TupleTypeCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeLiteralWithMultiplicityCS

-entryRuleTypeLiteralWithMultiplicityCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }

-	 iv_ruleTypeLiteralWithMultiplicityCS=ruleTypeLiteralWithMultiplicityCS 

-	 { $current=$iv_ruleTypeLiteralWithMultiplicityCS.current; } 

-	 EOF 

-;

-

-// Rule TypeLiteralWithMultiplicityCS

-ruleTypeLiteralWithMultiplicityCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); 

-    }

-    this_TypeLiteralCS_0=ruleTypeLiteralCS

-    { 

-        $current = $this_TypeLiteralCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedMultiplicity_1_0=ruleMultiplicityCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeLiteralWithMultiplicityCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMultiplicity",

-        		lv_ownedMultiplicity_1_0, 

-        		"MultiplicityCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeLiteralExpCS

-entryRuleTypeLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeLiteralExpCSRule()); }

-	 iv_ruleTypeLiteralExpCS=ruleTypeLiteralExpCS 

-	 { $current=$iv_ruleTypeLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule TypeLiteralExpCS

-ruleTypeLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); 

-	    }

-		lv_ownedType_0_0=ruleTypeLiteralWithMultiplicityCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_0_0, 

-        		"TypeLiteralWithMultiplicityCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeNameExpCS

-entryRuleTypeNameExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeNameExpCSRule()); }

-	 iv_ruleTypeNameExpCS=ruleTypeNameExpCS 

-	 { $current=$iv_ruleTypeNameExpCS.current; } 

-	 EOF 

-;

-

-// Rule TypeNameExpCS

-ruleTypeNameExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathName_0_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_0_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); 

-	    }

-		lv_ownedCurlyBracketedClause_1_0=ruleCurlyBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCurlyBracketedClause",

-        		lv_ownedCurlyBracketedClause_1_0, 

-        		"CurlyBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2='{' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); 

-	    }

-		lv_ownedPatternGuard_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPatternGuard",

-        		lv_ownedPatternGuard_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_4='}' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2());

-    }

-)?)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeExpCS

-entryRuleTypeExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeExpCSRule()); }

-	 iv_ruleTypeExpCS=ruleTypeExpCS 

-	 { $current=$iv_ruleTypeExpCS.current; } 

-	 EOF 

-;

-

-// Rule TypeExpCS

-ruleTypeExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); 

-    }

-    this_TypeNameExpCS_0=ruleTypeNameExpCS

-    { 

-        $current = $this_TypeNameExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); 

-    }

-    this_TypeLiteralCS_1=ruleTypeLiteralCS

-    { 

-        $current = $this_TypeLiteralCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); 

-    }

-    this_CollectionPatternCS_2=ruleCollectionPatternCS

-    { 

-        $current = $this_CollectionPatternCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedMultiplicity_3_0=ruleMultiplicityCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMultiplicity",

-        		lv_ownedMultiplicity_3_0, 

-        		"MultiplicityCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleExpCS

-entryRuleExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getExpCSRule()); }

-	 iv_ruleExpCS=ruleExpCS 

-	 { $current=$iv_ruleExpCS.current; } 

-	 EOF 

-;

-

-// Rule ExpCS

-ruleExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); 

-    }

-    this_PrefixedPrimaryExpCS_0=rulePrefixedPrimaryExpCS

-    { 

-        $current = $this_PrefixedPrimaryExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElementAndSet(

-            grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0(),

-            $current);

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); 

-	    }

-		lv_name_2_0=ruleBinaryOperatorName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_2_0, 

-        		"BinaryOperatorName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); 

-	    }

-		lv_ownedRight_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRight",

-        		lv_ownedRight_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); 

-    }

-    this_PrefixedLetExpCS_4=rulePrefixedLetExpCS

-    { 

-        $current = $this_PrefixedLetExpCS_4.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrefixedLetExpCS

-entryRulePrefixedLetExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrefixedLetExpCSRule()); }

-	 iv_rulePrefixedLetExpCS=rulePrefixedLetExpCS 

-	 { $current=$iv_rulePrefixedLetExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrefixedLetExpCS

-rulePrefixedLetExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0(),

-            $current);

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 

-	    }

-		lv_name_1_0=ruleUnaryOperatorName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnaryOperatorName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); 

-	    }

-		lv_ownedRight_2_0=rulePrefixedLetExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRight",

-        		lv_ownedRight_2_0, 

-        		"PrefixedLetExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); 

-    }

-    this_LetExpCS_3=ruleLetExpCS

-    { 

-        $current = $this_LetExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrefixedPrimaryExpCS

-entryRulePrefixedPrimaryExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSRule()); }

-	 iv_rulePrefixedPrimaryExpCS=rulePrefixedPrimaryExpCS 

-	 { $current=$iv_rulePrefixedPrimaryExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrefixedPrimaryExpCS

-rulePrefixedPrimaryExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0(),

-            $current);

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 

-	    }

-		lv_name_1_0=ruleUnaryOperatorName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnaryOperatorName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); 

-	    }

-		lv_ownedRight_2_0=rulePrefixedPrimaryExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRight",

-        		lv_ownedRight_2_0, 

-        		"PrefixedPrimaryExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); 

-    }

-    this_PrimaryExpCS_3=rulePrimaryExpCS

-    { 

-        $current = $this_PrimaryExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrimaryExpCS

-entryRulePrimaryExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimaryExpCSRule()); }

-	 iv_rulePrimaryExpCS=rulePrimaryExpCS 

-	 { $current=$iv_rulePrimaryExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrimaryExpCS

-rulePrimaryExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); 

-    }

-    this_NestedExpCS_0=ruleNestedExpCS

-    { 

-        $current = $this_NestedExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); 

-    }

-    this_IfExpCS_1=ruleIfExpCS

-    { 

-        $current = $this_IfExpCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); 

-    }

-    this_SelfExpCS_2=ruleSelfExpCS

-    { 

-        $current = $this_SelfExpCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); 

-    }

-    this_PrimitiveLiteralExpCS_3=rulePrimitiveLiteralExpCS

-    { 

-        $current = $this_PrimitiveLiteralExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); 

-    }

-    this_TupleLiteralExpCS_4=ruleTupleLiteralExpCS

-    { 

-        $current = $this_TupleLiteralExpCS_4.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); 

-    }

-    this_CollectionLiteralExpCS_5=ruleCollectionLiteralExpCS

-    { 

-        $current = $this_CollectionLiteralExpCS_5.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); 

-    }

-    this_LambdaLiteralExpCS_6=ruleLambdaLiteralExpCS

-    { 

-        $current = $this_LambdaLiteralExpCS_6.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); 

-    }

-    this_TypeLiteralExpCS_7=ruleTypeLiteralExpCS

-    { 

-        $current = $this_TypeLiteralExpCS_7.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); 

-    }

-    this_NameExpCS_8=ruleNameExpCS

-    { 

-        $current = $this_NameExpCS_8.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNameExpCS

-entryRuleNameExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNameExpCSRule()); }

-	 iv_ruleNameExpCS=ruleNameExpCS 

-	 { $current=$iv_ruleNameExpCS.current; } 

-	 EOF 

-;

-

-// Rule NameExpCS

-ruleNameExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathName_0_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_0_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedSquareBracketedClauses_1_0=ruleSquareBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSquareBracketedClauses",

-        		lv_ownedSquareBracketedClauses_1_0, 

-        		"SquareBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedRoundBracketedClause_2_0=ruleRoundBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRoundBracketedClause",

-        		lv_ownedRoundBracketedClause_2_0, 

-        		"RoundBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedCurlyBracketedClause_3_0=ruleCurlyBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCurlyBracketedClause",

-        		lv_ownedCurlyBracketedClause_3_0, 

-        		"CurlyBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?((

-(

-		lv_isPre_4_0=	'@' 

-    {

-        newLeafNode(lv_isPre_4_0, grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNameExpCSRule());

-	        }

-       		setWithLastConsumed($current, "isPre", true, "@");

-	    }

-

-)

-)	otherlv_5='pre' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getNameExpCSAccess().getPreKeyword_4_1());

-    }

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleCurlyBracketedClauseCS

-entryRuleCurlyBracketedClauseCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCurlyBracketedClauseCSRule()); }

-	 iv_ruleCurlyBracketedClauseCS=ruleCurlyBracketedClauseCS 

-	 { $current=$iv_ruleCurlyBracketedClauseCS.current; } 

-	 EOF 

-;

-

-// Rule CurlyBracketedClauseCS

-ruleCurlyBracketedClauseCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0(),

-            $current);

-    }

-)	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); 

-	    }

-		lv_ownedParts_2_0=ruleConstructorPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"ConstructorPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleConstructorPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"ConstructorPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); 

-	    }

-		lv_value_5_0=ruleStringLiteral		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());

-	        }

-       		set(

-       			$current, 

-       			"value",

-        		lv_value_5_0, 

-        		"StringLiteral");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))	otherlv_6='}' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleRoundBracketedClauseCS

-entryRuleRoundBracketedClauseCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getRoundBracketedClauseCSRule()); }

-	 iv_ruleRoundBracketedClauseCS=ruleRoundBracketedClauseCS 

-	 { $current=$iv_ruleRoundBracketedClauseCS.current; } 

-	 EOF 

-;

-

-// Rule RoundBracketedClauseCS

-ruleRoundBracketedClauseCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0(),

-            $current);

-    }

-)	otherlv_1='(' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedArguments_2_0=ruleNavigatingArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_2_0, 

-        		"NavigatingArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedArguments_3_0=ruleNavigatingCommaArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_3_0, 

-        		"NavigatingCommaArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); 

-	    }

-		lv_ownedArguments_4_0=ruleNavigatingSemiArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_4_0, 

-        		"NavigatingSemiArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); 

-	    }

-		lv_ownedArguments_5_0=ruleNavigatingCommaArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_5_0, 

-        		"NavigatingCommaArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*)?((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); 

-	    }

-		lv_ownedArguments_6_0=ruleNavigatingBarArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_6_0, 

-        		"NavigatingBarArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); 

-	    }

-		lv_ownedArguments_7_0=ruleNavigatingCommaArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_7_0, 

-        		"NavigatingCommaArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*)*)?	otherlv_8=')' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleSquareBracketedClauseCS

-entryRuleSquareBracketedClauseCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getSquareBracketedClauseCSRule()); }

-	 iv_ruleSquareBracketedClauseCS=ruleSquareBracketedClauseCS 

-	 { $current=$iv_ruleSquareBracketedClauseCS.current; } 

-	 EOF 

-;

-

-// Rule SquareBracketedClauseCS

-ruleSquareBracketedClauseCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='[' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedTerms_1_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedTerms",

-        		lv_ownedTerms_1_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedTerms_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedTerms",

-        		lv_ownedTerms_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4=']' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingArgCS

-entryRuleNavigatingArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingArgCSRule()); }

-	 iv_ruleNavigatingArgCS=ruleNavigatingArgCS 

-	 { $current=$iv_ruleNavigatingArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingArgCS

-ruleNavigatingArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); 

-	    }

-		lv_ownedNameExpression_0_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_0_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3='=' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); 

-	    }

-		lv_ownedInitExpression_4_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_4_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |(	otherlv_5='in' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); 

-	    }

-		lv_ownedInitExpression_6_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_6_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-    |(	otherlv_7=':' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedType_8_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_8_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingBarArgCS

-entryRuleNavigatingBarArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingBarArgCSRule()); }

-	 iv_ruleNavigatingBarArgCS=ruleNavigatingBarArgCS 

-	 { $current=$iv_ruleNavigatingBarArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingBarArgCS

-ruleNavigatingBarArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_prefix_0_0=	'|' 

-    {

-        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, "|");

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_1_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)?)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingCommaArgCS

-entryRuleNavigatingCommaArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingCommaArgCSRule()); }

-	 iv_ruleNavigatingCommaArgCS=ruleNavigatingCommaArgCS 

-	 { $current=$iv_ruleNavigatingCommaArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingCommaArgCS

-ruleNavigatingCommaArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_prefix_0_0=	',' 

-    {

-        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ",");

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_1_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |(	otherlv_6='in' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedInitExpression_7_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_7_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingSemiArgCS

-entryRuleNavigatingSemiArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingSemiArgCSRule()); }

-	 iv_ruleNavigatingSemiArgCS=ruleNavigatingSemiArgCS 

-	 { $current=$iv_ruleNavigatingSemiArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingSemiArgCS

-ruleNavigatingSemiArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_prefix_0_0=	';' 

-    {

-        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ";");

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_1_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)?)

-;

-

-

-

-

-

-// Entry rule entryRuleIfExpCS

-entryRuleIfExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIfExpCSRule()); }

-	 iv_ruleIfExpCS=ruleIfExpCS 

-	 { $current=$iv_ruleIfExpCS.current; } 

-	 EOF 

-;

-

-// Rule IfExpCS

-ruleIfExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='if' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getIfExpCSAccess().getIfKeyword_0());

-    }

-(

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); 

-	    }

-		lv_ownedCondition_1_1=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCondition",

-        		lv_ownedCondition_1_1, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-    |		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); 

-	    }

-		lv_ownedCondition_1_2=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCondition",

-        		lv_ownedCondition_1_2, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-

-)

-)	otherlv_2='then' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getIfExpCSAccess().getThenKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedThenExpression_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedThenExpression",

-        		lv_ownedThenExpression_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedIfThenExpressions_4_0=ruleElseIfThenExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedIfThenExpressions",

-        		lv_ownedIfThenExpressions_4_0, 

-        		"ElseIfThenExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_5='else' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getIfExpCSAccess().getElseKeyword_5());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); 

-	    }

-		lv_ownedElseExpression_6_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedElseExpression",

-        		lv_ownedElseExpression_6_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_7='endif' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getIfExpCSAccess().getEndifKeyword_7());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleElseIfThenExpCS

-entryRuleElseIfThenExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getElseIfThenExpCSRule()); }

-	 iv_ruleElseIfThenExpCS=ruleElseIfThenExpCS 

-	 { $current=$iv_ruleElseIfThenExpCS.current; } 

-	 EOF 

-;

-

-// Rule ElseIfThenExpCS

-ruleElseIfThenExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='elseif' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedCondition_1_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCondition",

-        		lv_ownedCondition_1_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_2='then' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedThenExpression_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedThenExpression",

-        		lv_ownedThenExpression_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLetExpCS

-entryRuleLetExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLetExpCSRule()); }

-	 iv_ruleLetExpCS=ruleLetExpCS 

-	 { $current=$iv_ruleLetExpCS.current; } 

-	 EOF 

-;

-

-// Rule LetExpCS

-ruleLetExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='let' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLetExpCSAccess().getLetKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedVariables_1_0=ruleLetVariableCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedVariables",

-        		lv_ownedVariables_1_0, 

-        		"LetVariableCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedVariables_3_0=ruleLetVariableCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedVariables",

-        		lv_ownedVariables_3_0, 

-        		"LetVariableCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4='in' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getLetExpCSAccess().getInKeyword_3());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedInExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInExpression",

-        		lv_ownedInExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLetVariableCS

-entryRuleLetVariableCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLetVariableCSRule()); }

-	 iv_ruleLetVariableCS=ruleLetVariableCS 

-	 { $current=$iv_ruleLetVariableCS.current; } 

-	 EOF 

-;

-

-// Rule LetVariableCS

-ruleLetVariableCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedRoundBracketedClause_1_0=ruleRoundBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRoundBracketedClause",

-        		lv_ownedRoundBracketedClause_1_0, 

-        		"RoundBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleNestedExpCS

-entryRuleNestedExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNestedExpCSRule()); }

-	 iv_ruleNestedExpCS=ruleNestedExpCS 

-	 { $current=$iv_ruleNestedExpCS.current; } 

-	 EOF 

-;

-

-// Rule NestedExpCS

-ruleNestedExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='(' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedExpression_1_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNestedExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_1_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_2=')' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleSelfExpCS

-entryRuleSelfExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getSelfExpCSRule()); }

-	 iv_ruleSelfExpCS=ruleSelfExpCS 

-	 { $current=$iv_ruleSelfExpCS.current; } 

-	 EOF 

-;

-

-// Rule SelfExpCS

-ruleSelfExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='self' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getSelfExpCSAccess().getSelfKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleMultiplicityBoundsCS

-entryRuleMultiplicityBoundsCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMultiplicityBoundsCSRule()); }

-	 iv_ruleMultiplicityBoundsCS=ruleMultiplicityBoundsCS 

-	 { $current=$iv_ruleMultiplicityBoundsCS.current; } 

-	 EOF 

-;

-

-// Rule MultiplicityBoundsCS

-ruleMultiplicityBoundsCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); 

-	    }

-		lv_lowerBound_0_0=ruleLOWER		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());

-	        }

-       		set(

-       			$current, 

-       			"lowerBound",

-        		lv_lowerBound_0_0, 

-        		"LOWER");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='..' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); 

-	    }

-		lv_upperBound_2_0=ruleUPPER		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());

-	        }

-       		set(

-       			$current, 

-       			"upperBound",

-        		lv_upperBound_2_0, 

-        		"UPPER");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-;

-

-

-

-

-

-// Entry rule entryRuleMultiplicityCS

-entryRuleMultiplicityCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMultiplicityCSRule()); }

-	 iv_ruleMultiplicityCS=ruleMultiplicityCS 

-	 { $current=$iv_ruleMultiplicityCS.current; } 

-	 EOF 

-;

-

-// Rule MultiplicityCS

-ruleMultiplicityCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='[' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0());

-    }

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); 

-    }

-    this_MultiplicityBoundsCS_1=ruleMultiplicityBoundsCS

-    { 

-        $current = $this_MultiplicityBoundsCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); 

-    }

-    this_MultiplicityStringCS_2=ruleMultiplicityStringCS

-    { 

-        $current = $this_MultiplicityStringCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)	otherlv_3=']' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleMultiplicityStringCS

-entryRuleMultiplicityStringCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMultiplicityStringCSRule()); }

-	 iv_ruleMultiplicityStringCS=ruleMultiplicityStringCS 

-	 { $current=$iv_ruleMultiplicityStringCS.current; } 

-	 EOF 

-;

-

-// Rule MultiplicityStringCS

-ruleMultiplicityStringCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-(

-		lv_stringBounds_0_1=	'*' 

-    {

-        newLeafNode(lv_stringBounds_0_1, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_1, null);

-	    }

-

-    |		lv_stringBounds_0_2=	'+' 

-    {

-        newLeafNode(lv_stringBounds_0_2, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_2, null);

-	    }

-

-    |		lv_stringBounds_0_3=	'?' 

-    {

-        newLeafNode(lv_stringBounds_0_3, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_3, null);

-	    }

-

-)

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRulePathNameCS

-entryRulePathNameCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPathNameCSRule()); }

-	 iv_rulePathNameCS=rulePathNameCS 

-	 { $current=$iv_rulePathNameCS.current; } 

-	 EOF 

-;

-

-// Rule PathNameCS

-rulePathNameCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathElements_0_0=ruleFirstPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_0_0, 

-        		"FirstPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='::' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedPathElements_2_0=ruleNextPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_2_0, 

-        		"NextPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)

-;

-

-

-

-

-

-// Entry rule entryRuleFirstPathElementCS

-entryRuleFirstPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getFirstPathElementCSRule()); }

-	 iv_ruleFirstPathElementCS=ruleFirstPathElementCS 

-	 { $current=$iv_ruleFirstPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule FirstPathElementCS

-ruleFirstPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getFirstPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNextPathElementCS

-entryRuleNextPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNextPathElementCSRule()); }

-	 iv_ruleNextPathElementCS=ruleNextPathElementCS 

-	 { $current=$iv_ruleNextPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule NextPathElementCS

-ruleNextPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNextPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 

-	    }

-		ruleUnreservedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTemplateBindingCS

-entryRuleTemplateBindingCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTemplateBindingCSRule()); }

-	 iv_ruleTemplateBindingCS=ruleTemplateBindingCS 

-	 { $current=$iv_ruleTemplateBindingCS.current; } 

-	 EOF 

-;

-

-// Rule TemplateBindingCS

-ruleTemplateBindingCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='(' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedSubstitutions_1_0=ruleTemplateParameterSubstitutionCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSubstitutions",

-        		lv_ownedSubstitutions_1_0, 

-        		"TemplateParameterSubstitutionCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedSubstitutions_3_0=ruleTemplateParameterSubstitutionCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSubstitutions",

-        		lv_ownedSubstitutions_3_0, 

-        		"TemplateParameterSubstitutionCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4=')' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTemplateParameterSubstitutionCS

-entryRuleTemplateParameterSubstitutionCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSRule()); }

-	 iv_ruleTemplateParameterSubstitutionCS=ruleTemplateParameterSubstitutionCS 

-	 { $current=$iv_ruleTemplateParameterSubstitutionCS.current; } 

-	 EOF 

-;

-

-// Rule TemplateParameterSubstitutionCS

-ruleTemplateParameterSubstitutionCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); 

-	    }

-		lv_ownedActualParameter_0_0=ruleTypeRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateParameterSubstitutionCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedActualParameter",

-        		lv_ownedActualParameter_0_0, 

-        		"TypeRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeParameterCS

-entryRuleTypeParameterCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeParameterCSRule()); }

-	 iv_ruleTypeParameterCS=ruleTypeParameterCS 

-	 { $current=$iv_ruleTypeParameterCS.current; } 

-	 EOF 

-;

-

-// Rule TypeParameterCS

-ruleTypeParameterCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((	otherlv_1='extends' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); 

-	    }

-		lv_ownedExtends_2_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_2_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3='&&' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); 

-	    }

-		lv_ownedExtends_4_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_4_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)

-    |(	otherlv_5='super' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); 

-	    }

-		lv_ownedSuper_6_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSuper",

-        		lv_ownedSuper_6_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeRefCS

-entryRuleTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeRefCSRule()); }

-	 iv_ruleTypeRefCS=ruleTypeRefCS 

-	 { $current=$iv_ruleTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypeRefCS

-ruleTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); 

-    }

-    this_TypedRefCS_0=ruleTypedRefCS

-    { 

-        $current = $this_TypedRefCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); 

-    }

-    this_WildcardTypeRefCS_1=ruleWildcardTypeRefCS

-    { 

-        $current = $this_WildcardTypeRefCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypedTypeRefCS

-entryRuleTypedTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypedTypeRefCSRule()); }

-	 iv_ruleTypedTypeRefCS=ruleTypedTypeRefCS 

-	 { $current=$iv_ruleTypedTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypedTypeRefCS

-ruleTypedTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathName_0_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_0_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedBinding_1_0=ruleTemplateBindingCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedBinding",

-        		lv_ownedBinding_1_0, 

-        		"TemplateBindingCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleWildcardTypeRefCS

-entryRuleWildcardTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getWildcardTypeRefCSRule()); }

-	 iv_ruleWildcardTypeRefCS=ruleWildcardTypeRefCS 

-	 { $current=$iv_ruleWildcardTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule WildcardTypeRefCS

-ruleWildcardTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0(),

-            $current);

-    }

-)	otherlv_1='?' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1());

-    }

-((	otherlv_2='extends' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); 

-	    }

-		lv_ownedExtends_3_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_3_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |(	otherlv_4='super' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedSuper_5_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSuper",

-        		lv_ownedSuper_5_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-;

-

-

-

-

-

-// Entry rule entryRuleID

-entryRuleID returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIDRule()); } 

-	 iv_ruleID=ruleID 

-	 { $current=$iv_ruleID.current.getText(); }  

-	 EOF 

-;

-

-// Rule ID

-ruleID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(    this_SIMPLE_ID_0=RULE_SIMPLE_ID    {

-		$current.merge(this_SIMPLE_ID_0);

-    }

-

-    { 

-    newLeafNode(this_SIMPLE_ID_0, grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); 

-    }

-

-    |    this_ESCAPED_ID_1=RULE_ESCAPED_ID    {

-		$current.merge(this_ESCAPED_ID_1);

-    }

-

-    { 

-    newLeafNode(this_ESCAPED_ID_1, grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleIdentifier

-entryRuleIdentifier returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIdentifierRule()); } 

-	 iv_ruleIdentifier=ruleIdentifier 

-	 { $current=$iv_ruleIdentifier.current.getText(); }  

-	 EOF 

-;

-

-// Rule Identifier

-ruleIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); 

-    }

-    this_ID_0=ruleID    {

-		$current.merge(this_ID_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleLOWER

-entryRuleLOWER returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLOWERRule()); } 

-	 iv_ruleLOWER=ruleLOWER 

-	 { $current=$iv_ruleLOWER.current.getText(); }  

-	 EOF 

-;

-

-// Rule LOWER

-ruleLOWER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_INT_0=RULE_INT    {

-		$current.merge(this_INT_0);

-    }

-

-    { 

-    newLeafNode(this_INT_0, grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleNUMBER_LITERAL

-entryRuleNUMBER_LITERAL returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNUMBER_LITERALRule()); } 

-	 iv_ruleNUMBER_LITERAL=ruleNUMBER_LITERAL 

-	 { $current=$iv_ruleNUMBER_LITERAL.current.getText(); }  

-	 EOF 

-;

-

-// Rule NUMBER_LITERAL

-ruleNUMBER_LITERAL returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_INT_0=RULE_INT    {

-		$current.merge(this_INT_0);

-    }

-

-    { 

-    newLeafNode(this_INT_0, grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleStringLiteral

-entryRuleStringLiteral returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getStringLiteralRule()); } 

-	 iv_ruleStringLiteral=ruleStringLiteral 

-	 { $current=$iv_ruleStringLiteral.current.getText(); }  

-	 EOF 

-;

-

-// Rule StringLiteral

-ruleStringLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {

-		$current.merge(this_SINGLE_QUOTED_STRING_0);

-    }

-

-    { 

-    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleUPPER

-entryRuleUPPER returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUPPERRule()); } 

-	 iv_ruleUPPER=ruleUPPER 

-	 { $current=$iv_ruleUPPER.current.getText(); }  

-	 EOF 

-;

-

-// Rule UPPER

-ruleUPPER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(    this_INT_0=RULE_INT    {

-		$current.merge(this_INT_0);

-    }

-

-    { 

-    newLeafNode(this_INT_0, grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); 

-    }

-

-    |

-	kw='*' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleURI

-entryRuleURI returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getURIRule()); } 

-	 iv_ruleURI=ruleURI 

-	 { $current=$iv_ruleURI.current.getText(); }  

-	 EOF 

-;

-

-// Rule URI

-ruleURI returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {

-		$current.merge(this_SINGLE_QUOTED_STRING_0);

-    }

-

-    { 

-    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-RULE_UNQUOTED_STRING : '\u00A3$%^\u00A3$%^';

-

-fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');

-

-fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');

-

-RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';

-

-RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';

-

-RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';

-

-RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;

-

-RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;

-

-RULE_INT : ('0'..'9')+;

-

-RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';

-

-RULE_SL_COMMENT : '--' ~(('\n'|'\r'))* ('\r'? '\n')?;

-

-RULE_WS : (' '|'\t'|'\r'|'\n')+;

-

-RULE_ANY_OTHER : .;

-

-

+/*
+ * generated by Xtext
+ */
+grammar InternalCompleteOCL;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.ocl.xtext.completeocl.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.ocl.xtext.completeocl.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.ocl.xtext.completeocl.services.CompleteOCLGrammarAccess;
+
+}
+
+@parser::members {
+
+/*
+  This grammar contains a lot of empty actions to work around a bug in ANTLR.
+  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.
+*/
+ 
+ 	private CompleteOCLGrammarAccess grammarAccess;
+ 	
+    public InternalCompleteOCLParser(TokenStream input, CompleteOCLGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "CompleteOCLDocumentCS";	
+   	}
+   	
+   	@Override
+   	protected CompleteOCLGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleCompleteOCLDocumentCS
+entryRuleCompleteOCLDocumentCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCompleteOCLDocumentCSRule()); }
+	 iv_ruleCompleteOCLDocumentCS=ruleCompleteOCLDocumentCS 
+	 { $current=$iv_ruleCompleteOCLDocumentCS.current; } 
+	 EOF 
+;
+
+// Rule CompleteOCLDocumentCS
+ruleCompleteOCLDocumentCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedImportsImportCSParserRuleCall_0_0_0()); 
+	    }
+		lv_ownedImports_0_0=ruleImportCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompleteOCLDocumentCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedImports",
+        		lv_ownedImports_0_0, 
+        		"ImportCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedIncludesIncludeCSParserRuleCall_0_1_0()); 
+	    }
+		lv_ownedIncludes_1_0=ruleIncludeCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompleteOCLDocumentCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedIncludes",
+        		lv_ownedIncludes_1_0, 
+        		"IncludeCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedLibrariesLibraryCSParserRuleCall_0_2_0()); 
+	    }
+		lv_ownedLibraries_2_0=ruleLibraryCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompleteOCLDocumentCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedLibraries",
+        		lv_ownedLibraries_2_0, 
+        		"LibraryCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedPackagesPackageDeclarationCSParserRuleCall_1_0_0()); 
+	    }
+		lv_ownedPackages_3_0=rulePackageDeclarationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompleteOCLDocumentCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPackages",
+        		lv_ownedPackages_3_0, 
+        		"PackageDeclarationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompleteOCLDocumentCSAccess().getOwnedContextsContextDeclCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedContexts_4_0=ruleContextDeclCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompleteOCLDocumentCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedContexts",
+        		lv_ownedContexts_4_0, 
+        		"ContextDeclCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleCompleteOCLNavigationOperatorName
+entryRuleCompleteOCLNavigationOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCompleteOCLNavigationOperatorNameRule()); } 
+	 iv_ruleCompleteOCLNavigationOperatorName=ruleCompleteOCLNavigationOperatorName 
+	 { $current=$iv_ruleCompleteOCLNavigationOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule CompleteOCLNavigationOperatorName
+ruleCompleteOCLNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='^' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getCircumflexAccentKeyword_0()); 
+    }
+
+    |
+	kw='^^' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCompleteOCLNavigationOperatorNameAccess().getCircumflexAccentCircumflexAccentKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleClassifierContextDeclCS
+entryRuleClassifierContextDeclCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getClassifierContextDeclCSRule()); }
+	 iv_ruleClassifierContextDeclCS=ruleClassifierContextDeclCS 
+	 { $current=$iv_ruleClassifierContextDeclCS.current; } 
+	 EOF 
+;
+
+// Rule ClassifierContextDeclCS
+ruleClassifierContextDeclCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='context' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getClassifierContextDeclCSAccess().getContextKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassifierContextDeclCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedSignature_1_0=ruleTemplateSignatureCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassifierContextDeclCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSignature",
+        		lv_ownedSignature_1_0, 
+        		"TemplateSignatureCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassifierContextDeclCSAccess().getSelfNameUnrestrictedNameParserRuleCall_2_0()); 
+	    }
+		lv_selfName_2_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassifierContextDeclCSRule());
+	        }
+       		set(
+       			$current, 
+       			"selfName",
+        		lv_selfName_2_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassifierContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedPathName_3_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassifierContextDeclCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_3_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_4='inv' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getClassifierContextDeclCSAccess().getInvKeyword_4_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassifierContextDeclCSAccess().getOwnedInvariantsConstraintCSParserRuleCall_4_0_1_0()); 
+	    }
+		lv_ownedInvariants_5_0=ruleConstraintCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassifierContextDeclCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedInvariants",
+        		lv_ownedInvariants_5_0, 
+        		"ConstraintCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassifierContextDeclCSAccess().getOwnedDefinitionsDefCSParserRuleCall_4_1_0()); 
+	    }
+		lv_ownedDefinitions_6_0=ruleDefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassifierContextDeclCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDefinitions",
+        		lv_ownedDefinitions_6_0, 
+        		"DefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))+)
+;
+
+
+
+
+
+// Entry rule entryRuleConstraintCS
+entryRuleConstraintCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getConstraintCSRule()); }
+	 iv_ruleConstraintCS=ruleConstraintCS 
+	 { $current=$iv_ruleConstraintCS.current; } 
+	 EOF 
+;
+
+// Rule ConstraintCS
+ruleConstraintCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getConstraintCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getConstraintCSAccess().getLeftParenthesisKeyword_0_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_0_1_1_0()); 
+	    }
+		lv_ownedMessageSpecification_2_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getConstraintCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMessageSpecification",
+        		lv_ownedMessageSpecification_2_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getConstraintCSAccess().getRightParenthesisKeyword_0_1_2());
+    }
+)?)?	otherlv_4=':' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getConstraintCSAccess().getColonKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedSpecification_5_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getConstraintCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSpecification",
+        		lv_ownedSpecification_5_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleContextDeclCS
+entryRuleContextDeclCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getContextDeclCSRule()); }
+	 iv_ruleContextDeclCS=ruleContextDeclCS 
+	 { $current=$iv_ruleContextDeclCS.current; } 
+	 EOF 
+;
+
+// Rule ContextDeclCS
+ruleContextDeclCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getContextDeclCSAccess().getPropertyContextDeclCSParserRuleCall_0()); 
+    }
+    this_PropertyContextDeclCS_0=rulePropertyContextDeclCS
+    { 
+        $current = $this_PropertyContextDeclCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getContextDeclCSAccess().getClassifierContextDeclCSParserRuleCall_1()); 
+    }
+    this_ClassifierContextDeclCS_1=ruleClassifierContextDeclCS
+    { 
+        $current = $this_ClassifierContextDeclCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getContextDeclCSAccess().getOperationContextDeclCSParserRuleCall_2()); 
+    }
+    this_OperationContextDeclCS_2=ruleOperationContextDeclCS
+    { 
+        $current = $this_OperationContextDeclCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDefCS
+entryRuleDefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDefCSRule()); }
+	 iv_ruleDefCS=ruleDefCS 
+	 { $current=$iv_ruleDefCS.current; } 
+	 EOF 
+;
+
+// Rule DefCS
+ruleDefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getDefCSAccess().getDefOperationCSParserRuleCall_0()); 
+    }
+    this_DefOperationCS_0=ruleDefOperationCS
+    { 
+        $current = $this_DefOperationCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getDefCSAccess().getDefPropertyCSParserRuleCall_1()); 
+    }
+    this_DefPropertyCS_1=ruleDefPropertyCS
+    { 
+        $current = $this_DefPropertyCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDefOperationCS
+entryRuleDefOperationCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDefOperationCSRule()); }
+	 iv_ruleDefOperationCS=ruleDefOperationCS 
+	 { $current=$iv_ruleDefOperationCS.current; } 
+	 EOF 
+;
+
+// Rule DefOperationCS
+ruleDefOperationCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_isStatic_0_0=	'static' 
+    {
+        newLeafNode(lv_isStatic_0_0, grammarAccess.getDefOperationCSAccess().getIsStaticStaticKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDefOperationCSRule());
+	        }
+       		setWithLastConsumed($current, "isStatic", true, "static");
+	    }
+
+)
+)?	otherlv_1='def' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDefOperationCSAccess().getDefKeyword_1());
+    }
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getDefOperationCSAccess().getUnrestrictedNameParserRuleCall_2()); 
+    }
+ruleUnrestrictedName
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)?	otherlv_3=':' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDefOperationCSAccess().getColonKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDefOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedSignature_4_0=ruleTemplateSignatureCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDefOperationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSignature",
+        		lv_ownedSignature_4_0, 
+        		"TemplateSignatureCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDefOperationCSAccess().getNameUnrestrictedNameParserRuleCall_5_0()); 
+	    }
+		lv_name_5_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDefOperationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_5_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='(' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDefOperationCSAccess().getLeftParenthesisKeyword_6());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDefOperationCSAccess().getOwnedParametersDefParameterCSParserRuleCall_7_0_0()); 
+	    }
+		lv_ownedParameters_7_0=ruleDefParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDefOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_7_0, 
+        		"DefParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_8=',' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDefOperationCSAccess().getCommaKeyword_7_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDefOperationCSAccess().getOwnedParametersDefParameterCSParserRuleCall_7_1_1_0()); 
+	    }
+		lv_ownedParameters_9_0=ruleDefParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDefOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_9_0, 
+        		"DefParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_10=')' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDefOperationCSAccess().getRightParenthesisKeyword_8());
+    }
+	otherlv_11=':' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDefOperationCSAccess().getColonKeyword_9());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDefOperationCSAccess().getOwnedTypeTypeExpCSParserRuleCall_10_0()); 
+	    }
+		lv_ownedType_12_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDefOperationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_12_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDefOperationCSAccess().getEqualsSignKeyword_11());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDefOperationCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_12_0()); 
+	    }
+		lv_ownedSpecification_14_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDefOperationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSpecification",
+        		lv_ownedSpecification_14_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDefParameterCS
+entryRuleDefParameterCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDefParameterCSRule()); }
+	 iv_ruleDefParameterCS=ruleDefParameterCS 
+	 { $current=$iv_ruleDefParameterCS.current; } 
+	 EOF 
+;
+
+// Rule DefParameterCS
+ruleDefParameterCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDefParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDefParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDefParameterCSAccess().getColonKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDefParameterCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDefParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDefPropertyCS
+entryRuleDefPropertyCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDefPropertyCSRule()); }
+	 iv_ruleDefPropertyCS=ruleDefPropertyCS 
+	 { $current=$iv_ruleDefPropertyCS.current; } 
+	 EOF 
+;
+
+// Rule DefPropertyCS
+ruleDefPropertyCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_isStatic_0_0=	'static' 
+    {
+        newLeafNode(lv_isStatic_0_0, grammarAccess.getDefPropertyCSAccess().getIsStaticStaticKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDefPropertyCSRule());
+	        }
+       		setWithLastConsumed($current, "isStatic", true, "static");
+	    }
+
+)
+)?	otherlv_1='def' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDefPropertyCSAccess().getDefKeyword_1());
+    }
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getDefPropertyCSAccess().getUnrestrictedNameParserRuleCall_2()); 
+    }
+ruleUnrestrictedName
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)?	otherlv_3=':' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDefPropertyCSAccess().getColonKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDefPropertyCSAccess().getNameUnrestrictedNameParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDefPropertyCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5=':' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDefPropertyCSAccess().getColonKeyword_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDefPropertyCSAccess().getOwnedTypeTypeExpCSParserRuleCall_6_0()); 
+	    }
+		lv_ownedType_6_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDefPropertyCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_6_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDefPropertyCSAccess().getEqualsSignKeyword_7());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDefPropertyCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_8_0()); 
+	    }
+		lv_ownedSpecification_8_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDefPropertyCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSpecification",
+        		lv_ownedSpecification_8_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleImportCS
+entryRuleImportCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getImportCSRule()); }
+	 iv_ruleImportCS=ruleImportCS 
+	 { $current=$iv_ruleImportCS.current; } 
+	 EOF 
+;
+
+// Rule ImportCS
+ruleImportCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='import' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getImportCSAccess().getImportKeyword_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getImportCSAccess().getNameIdentifierParserRuleCall_1_0_0()); 
+	    }
+		lv_name_1_0=ruleIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getImportCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"Identifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getImportCSAccess().getColonKeyword_1_1());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getImportCSAccess().getOwnedPathNameURIPathNameCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedPathName_3_0=ruleURIPathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getImportCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_3_0, 
+        		"URIPathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_isAll_4_0=	'::*' 
+    {
+        newLeafNode(lv_isAll_4_0, grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getImportCSRule());
+	        }
+       		setWithLastConsumed($current, "isAll", true, "::*");
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleIncludeCS
+entryRuleIncludeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIncludeCSRule()); }
+	 iv_ruleIncludeCS=ruleIncludeCS 
+	 { $current=$iv_ruleIncludeCS.current; } 
+	 EOF 
+;
+
+// Rule IncludeCS
+ruleIncludeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='include' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getIncludeCSAccess().getIncludeKeyword_0());
+    }
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getIncludeCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getIncludeCSAccess().getReferredNamespaceNamespaceCrossReference_1_0()); 
+	    }
+		ruleURI		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLibraryCS
+entryRuleLibraryCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLibraryCSRule()); }
+	 iv_ruleLibraryCS=ruleLibraryCS 
+	 { $current=$iv_ruleLibraryCS.current; } 
+	 EOF 
+;
+
+// Rule LibraryCS
+ruleLibraryCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='library' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLibraryCSAccess().getLibraryKeyword_0());
+    }
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibraryCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_1_0()); 
+	    }
+		ruleURI		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleOperationContextDeclCS
+entryRuleOperationContextDeclCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOperationContextDeclCSRule()); }
+	 iv_ruleOperationContextDeclCS=ruleOperationContextDeclCS 
+	 { $current=$iv_ruleOperationContextDeclCS.current; } 
+	 EOF 
+;
+
+// Rule OperationContextDeclCS
+ruleOperationContextDeclCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='context' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getOperationContextDeclCSAccess().getContextKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedSignature_1_0=ruleTemplateSignatureCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSignature",
+        		lv_ownedSignature_1_0, 
+        		"TemplateSignatureCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedPathName_2_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_2_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='(' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getOperationContextDeclCSAccess().getLeftParenthesisKeyword_3());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersParameterCSParserRuleCall_4_0_0()); 
+	    }
+		lv_ownedParameters_4_0=ruleParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_4_0, 
+        		"ParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5=',' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getOperationContextDeclCSAccess().getCommaKeyword_4_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedParametersParameterCSParserRuleCall_4_1_1_0()); 
+	    }
+		lv_ownedParameters_6_0=ruleParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_6_0, 
+        		"ParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_7=')' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getOperationContextDeclCSAccess().getRightParenthesisKeyword_5());
+    }
+	otherlv_8=':' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getOperationContextDeclCSAccess().getColonKeyword_6());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_7_0()); 
+	    }
+		lv_ownedType_9_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_9_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?((	otherlv_10='pre' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getOperationContextDeclCSAccess().getPreKeyword_8_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedPreconditionsConstraintCSParserRuleCall_8_0_1_0()); 
+	    }
+		lv_ownedPreconditions_11_0=ruleConstraintCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPreconditions",
+        		lv_ownedPreconditions_11_0, 
+        		"ConstraintCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(	otherlv_12='post' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getOperationContextDeclCSAccess().getPostKeyword_8_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedPostconditionsConstraintCSParserRuleCall_8_1_1_0()); 
+	    }
+		lv_ownedPostconditions_13_0=ruleConstraintCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPostconditions",
+        		lv_ownedPostconditions_13_0, 
+        		"ConstraintCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(	otherlv_14='body' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getOperationContextDeclCSAccess().getBodyKeyword_8_2_0());
+    }
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getUnrestrictedNameParserRuleCall_8_2_1()); 
+    }
+ruleUnrestrictedName
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)?	otherlv_16=':' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getOperationContextDeclCSAccess().getColonKeyword_8_2_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationContextDeclCSAccess().getOwnedBodiesSpecificationCSParserRuleCall_8_2_3_0()); 
+	    }
+		lv_ownedBodies_17_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationContextDeclCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedBodies",
+        		lv_ownedBodies_17_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))*)
+;
+
+
+
+
+
+// Entry rule entryRulePackageDeclarationCS
+entryRulePackageDeclarationCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPackageDeclarationCSRule()); }
+	 iv_rulePackageDeclarationCS=rulePackageDeclarationCS 
+	 { $current=$iv_rulePackageDeclarationCS.current; } 
+	 EOF 
+;
+
+// Rule PackageDeclarationCS
+rulePackageDeclarationCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='package' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPackageDeclarationCSAccess().getPackageKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageDeclarationCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedPathName_1_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageDeclarationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_1_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2='inv' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPackageDeclarationCSAccess().getInvKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageDeclarationCSAccess().getOwnedInvariantsConstraintCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedInvariants_3_0=ruleConstraintCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageDeclarationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedInvariants",
+        		lv_ownedInvariants_3_0, 
+        		"ConstraintCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageDeclarationCSAccess().getOwnedContextsContextDeclCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedContexts_4_0=ruleContextDeclCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageDeclarationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedContexts",
+        		lv_ownedContexts_4_0, 
+        		"ContextDeclCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5='endpackage' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getPackageDeclarationCSAccess().getEndpackageKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleParameterCS
+entryRuleParameterCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getParameterCSRule()); }
+	 iv_ruleParameterCS=ruleParameterCS 
+	 { $current=$iv_ruleParameterCS.current; } 
+	 EOF 
+;
+
+// Rule ParameterCS
+ruleParameterCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getParameterCSAccess().getColonKeyword_0_1());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getParameterCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRulePropertyContextDeclCS
+entryRulePropertyContextDeclCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyContextDeclCSRule()); }
+	 iv_rulePropertyContextDeclCS=rulePropertyContextDeclCS 
+	 { $current=$iv_rulePropertyContextDeclCS.current; } 
+	 EOF 
+;
+
+// Rule PropertyContextDeclCS
+rulePropertyContextDeclCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='context' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPropertyContextDeclCSAccess().getContextKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyContextDeclCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedPathName_1_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyContextDeclCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_1_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyContextDeclCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_4='derive' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getPropertyContextDeclCSAccess().getDeriveKeyword_4_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDerivedInvariantsConstraintCSParserRuleCall_4_0_1_0()); 
+	    }
+		lv_ownedDerivedInvariants_5_0=ruleConstraintCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyContextDeclCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDerivedInvariants",
+        		lv_ownedDerivedInvariants_5_0, 
+        		"ConstraintCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(	otherlv_6='init' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getPropertyContextDeclCSAccess().getInitKeyword_4_1_0());
+    }
+	otherlv_7=':' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_4_1_2_0()); 
+	    }
+		lv_ownedDefaultExpressions_8_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyContextDeclCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDefaultExpressions",
+        		lv_ownedDefaultExpressions_8_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))*)
+;
+
+
+
+
+
+// Entry rule entryRuleSpecificationCS
+entryRuleSpecificationCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSpecificationCSRule()); }
+	 iv_ruleSpecificationCS=ruleSpecificationCS 
+	 { $current=$iv_ruleSpecificationCS.current; } 
+	 EOF 
+;
+
+// Rule SpecificationCS
+ruleSpecificationCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedExpression_0_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSpecificationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_0_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		lv_exprString_1_0=RULE_UNQUOTED_STRING
+		{
+			newLeafNode(lv_exprString_1_0, grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getSpecificationCSRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"exprString",
+        		lv_exprString_1_0, 
+        		"UNQUOTED_STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleTemplateSignatureCS
+entryRuleTemplateSignatureCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTemplateSignatureCSRule()); }
+	 iv_ruleTemplateSignatureCS=ruleTemplateSignatureCS 
+	 { $current=$iv_ruleTemplateSignatureCS.current; } 
+	 EOF 
+;
+
+// Rule TemplateSignatureCS
+ruleTemplateSignatureCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_1_0()); 
+	    }
+		lv_ownedParameters_1_0=ruleTypeParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_1_0, 
+        		"TypeParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_2_1_0()); 
+	    }
+		lv_ownedParameters_3_0=ruleTypeParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_3_0, 
+        		"TypeParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3());
+    }
+)
+    |(	otherlv_5='<' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedParameters_6_0=ruleTypeParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_6_0, 
+        		"TypeParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_7=',' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_2_1_0()); 
+	    }
+		lv_ownedParameters_8_0=ruleTypeParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_8_0, 
+        		"TypeParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_9='>' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleTypedRefCS
+entryRuleTypedRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedRefCSRule()); }
+	 iv_ruleTypedRefCS=ruleTypedRefCS 
+	 { $current=$iv_ruleTypedRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypedRefCS
+ruleTypedRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypeLiteralCSParserRuleCall_0()); 
+    }
+    this_TypeLiteralCS_0=ruleTypeLiteralCS
+    { 
+        $current = $this_TypeLiteralCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); 
+    }
+    this_TypedTypeRefCS_1=ruleTypedTypeRefCS
+    { 
+        $current = $this_TypedTypeRefCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleUnrestrictedName
+entryRuleUnrestrictedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnrestrictedNameRule()); } 
+	 iv_ruleUnrestrictedName=ruleUnrestrictedName 
+	 { $current=$iv_ruleUnrestrictedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnrestrictedName
+ruleUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall_0()); 
+    }
+    this_EssentialOCLUnrestrictedName_0=ruleEssentialOCLUnrestrictedName    {
+		$current.merge(this_EssentialOCLUnrestrictedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	kw='import' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getImportKeyword_1()); 
+    }
+
+    |
+	kw='include' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getIncludeKeyword_2()); 
+    }
+
+    |
+	kw='library' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getLibraryKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleNavigatingArgExpCS
+entryRuleNavigatingArgExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingArgExpCSRule()); }
+	 iv_ruleNavigatingArgExpCS=ruleNavigatingArgExpCS 
+	 { $current=$iv_ruleNavigatingArgExpCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingArgExpCS
+ruleNavigatingArgExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getNavigatingArgExpCSAccess().getOCLMessageArgCSAction_0_0(),
+            $current);
+    }
+)	otherlv_1='?' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getNavigatingArgExpCSAccess().getQuestionMarkKeyword_0_1());
+    }
+)
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall_1()); 
+    }
+    this_ExpCS_2=ruleExpCS
+    { 
+        $current = $this_ExpCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigationOperatorName
+entryRuleNavigationOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigationOperatorNameRule()); } 
+	 iv_ruleNavigationOperatorName=ruleNavigationOperatorName 
+	 { $current=$iv_ruleNavigationOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule NavigationOperatorName
+ruleNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall_0()); 
+    }
+    this_EssentialOCLNavigationOperatorName_0=ruleEssentialOCLNavigationOperatorName    {
+		$current.merge(this_EssentialOCLNavigationOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getNavigationOperatorNameAccess().getCompleteOCLNavigationOperatorNameParserRuleCall_1()); 
+    }
+    this_CompleteOCLNavigationOperatorName_1=ruleCompleteOCLNavigationOperatorName    {
+		$current.merge(this_CompleteOCLNavigationOperatorName_1);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRulePrimitiveTypeIdentifier
+entryRulePrimitiveTypeIdentifier returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimitiveTypeIdentifierRule()); } 
+	 iv_rulePrimitiveTypeIdentifier=rulePrimitiveTypeIdentifier 
+	 { $current=$iv_rulePrimitiveTypeIdentifier.current.getText(); }  
+	 EOF 
+;
+
+// Rule PrimitiveTypeIdentifier
+rulePrimitiveTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='Boolean' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); 
+    }
+
+    |
+	kw='Integer' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); 
+    }
+
+    |
+	kw='Real' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); 
+    }
+
+    |
+	kw='String' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); 
+    }
+
+    |
+	kw='UnlimitedNatural' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); 
+    }
+
+    |
+	kw='OclAny' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); 
+    }
+
+    |
+	kw='OclInvalid' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); 
+    }
+
+    |
+	kw='OclMessage' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclMessageKeyword_7()); 
+    }
+
+    |
+	kw='OclState' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclStateKeyword_8()); 
+    }
+
+    |
+	kw='OclVoid' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_9()); 
+    }
+)
+    ;
+
+
+
+
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnaryOperatorName
+entryRuleEssentialOCLUnaryOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 
+	 iv_ruleEssentialOCLUnaryOperatorName=ruleEssentialOCLUnaryOperatorName 
+	 { $current=$iv_ruleEssentialOCLUnaryOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLUnaryOperatorName
+ruleEssentialOCLUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); 
+    }
+
+    |
+	kw='not' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLInfixOperatorName
+entryRuleEssentialOCLInfixOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 
+	 iv_ruleEssentialOCLInfixOperatorName=ruleEssentialOCLInfixOperatorName 
+	 { $current=$iv_ruleEssentialOCLInfixOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLInfixOperatorName
+ruleEssentialOCLInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); 
+    }
+
+    |
+	kw='/' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); 
+    }
+
+    |
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); 
+    }
+
+    |
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); 
+    }
+
+    |
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); 
+    }
+
+    |
+	kw='>=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); 
+    }
+
+    |
+	kw='<=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); 
+    }
+
+    |
+	kw='=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); 
+    }
+
+    |
+	kw='<>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); 
+    }
+
+    |
+	kw='and' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); 
+    }
+
+    |
+	kw='or' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); 
+    }
+
+    |
+	kw='xor' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); 
+    }
+
+    |
+	kw='implies' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLNavigationOperatorName
+entryRuleEssentialOCLNavigationOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 
+	 iv_ruleEssentialOCLNavigationOperatorName=ruleEssentialOCLNavigationOperatorName 
+	 { $current=$iv_ruleEssentialOCLNavigationOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLNavigationOperatorName
+ruleEssentialOCLNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); 
+    }
+
+    |
+	kw='->' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); 
+    }
+
+    |
+	kw='?.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); 
+    }
+
+    |
+	kw='?->' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleBinaryOperatorName
+entryRuleBinaryOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBinaryOperatorNameRule()); } 
+	 iv_ruleBinaryOperatorName=ruleBinaryOperatorName 
+	 { $current=$iv_ruleBinaryOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule BinaryOperatorName
+ruleBinaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); 
+    }
+    this_InfixOperatorName_0=ruleInfixOperatorName    {
+		$current.merge(this_InfixOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); 
+    }
+    this_NavigationOperatorName_1=ruleNavigationOperatorName    {
+		$current.merge(this_NavigationOperatorName_1);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleInfixOperatorName
+entryRuleInfixOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInfixOperatorNameRule()); } 
+	 iv_ruleInfixOperatorName=ruleInfixOperatorName 
+	 { $current=$iv_ruleInfixOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule InfixOperatorName
+ruleInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); 
+    }
+    this_EssentialOCLInfixOperatorName_0=ruleEssentialOCLInfixOperatorName    {
+		$current.merge(this_EssentialOCLInfixOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleUnaryOperatorName
+entryRuleUnaryOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnaryOperatorNameRule()); } 
+	 iv_ruleUnaryOperatorName=ruleUnaryOperatorName 
+	 { $current=$iv_ruleUnaryOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnaryOperatorName
+ruleUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); 
+    }
+    this_EssentialOCLUnaryOperatorName_0=ruleEssentialOCLUnaryOperatorName    {
+		$current.merge(this_EssentialOCLUnaryOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnrestrictedName
+entryRuleEssentialOCLUnrestrictedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 
+	 iv_ruleEssentialOCLUnrestrictedName=ruleEssentialOCLUnrestrictedName 
+	 { $current=$iv_ruleEssentialOCLUnrestrictedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLUnrestrictedName
+ruleEssentialOCLUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); 
+    }
+    this_Identifier_0=ruleIdentifier    {
+		$current.merge(this_Identifier_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnreservedName
+entryRuleEssentialOCLUnreservedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameRule()); } 
+	 iv_ruleEssentialOCLUnreservedName=ruleEssentialOCLUnreservedName 
+	 { $current=$iv_ruleEssentialOCLUnreservedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLUnreservedName
+ruleEssentialOCLUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); 
+    }
+    this_UnrestrictedName_0=ruleUnrestrictedName    {
+		$current.merge(this_UnrestrictedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); 
+    }
+    this_CollectionTypeIdentifier_1=ruleCollectionTypeIdentifier    {
+		$current.merge(this_CollectionTypeIdentifier_1);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); 
+    }
+    this_PrimitiveTypeIdentifier_2=rulePrimitiveTypeIdentifier    {
+		$current.merge(this_PrimitiveTypeIdentifier_2);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	kw='Tuple' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleUnreservedName
+entryRuleUnreservedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnreservedNameRule()); } 
+	 iv_ruleUnreservedName=ruleUnreservedName 
+	 { $current=$iv_ruleUnreservedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnreservedName
+ruleUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); 
+    }
+    this_EssentialOCLUnreservedName_0=ruleEssentialOCLUnreservedName    {
+		$current.merge(this_EssentialOCLUnreservedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleURIPathNameCS
+entryRuleURIPathNameCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getURIPathNameCSRule()); }
+	 iv_ruleURIPathNameCS=ruleURIPathNameCS 
+	 { $current=$iv_ruleURIPathNameCS.current; } 
+	 EOF 
+;
+
+// Rule URIPathNameCS
+ruleURIPathNameCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsURIFirstPathElementCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathElements_0_0=ruleURIFirstPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getURIPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_0_0, 
+        		"URIFirstPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='::' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedPathElements_2_0=ruleNextPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getURIPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_2_0, 
+        		"NextPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleURIFirstPathElementCS
+entryRuleURIFirstPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getURIFirstPathElementCSRule()); }
+	 iv_ruleURIFirstPathElementCS=ruleURIFirstPathElementCS 
+	 { $current=$iv_ruleURIFirstPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule URIFirstPathElementCS
+ruleURIFirstPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0(),
+            $current);
+    }
+)(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); 
+	    }
+		ruleURI		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRulePrimitiveTypeCS
+entryRulePrimitiveTypeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimitiveTypeCSRule()); }
+	 iv_rulePrimitiveTypeCS=rulePrimitiveTypeCS 
+	 { $current=$iv_rulePrimitiveTypeCS.current; } 
+	 EOF 
+;
+
+// Rule PrimitiveTypeCS
+rulePrimitiveTypeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); 
+	    }
+		lv_name_0_0=rulePrimitiveTypeIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrimitiveTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"PrimitiveTypeIdentifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionTypeIdentifier
+entryRuleCollectionTypeIdentifier returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionTypeIdentifierRule()); } 
+	 iv_ruleCollectionTypeIdentifier=ruleCollectionTypeIdentifier 
+	 { $current=$iv_ruleCollectionTypeIdentifier.current.getText(); }  
+	 EOF 
+;
+
+// Rule CollectionTypeIdentifier
+ruleCollectionTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='Set' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); 
+    }
+
+    |
+	kw='Bag' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); 
+    }
+
+    |
+	kw='Sequence' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); 
+    }
+
+    |
+	kw='Collection' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); 
+    }
+
+    |
+	kw='OrderedSet' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleCollectionTypeCS
+entryRuleCollectionTypeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionTypeCSRule()); }
+	 iv_ruleCollectionTypeCS=ruleCollectionTypeCS 
+	 { $current=$iv_ruleCollectionTypeCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionTypeCS
+ruleCollectionTypeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleCollectionTypeIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"CollectionTypeIdentifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTupleTypeCS
+entryRuleTupleTypeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTupleTypeCSRule()); }
+	 iv_ruleTupleTypeCS=ruleTupleTypeCS 
+	 { $current=$iv_ruleTupleTypeCS.current; } 
+	 EOF 
+;
+
+// Rule TupleTypeCS
+ruleTupleTypeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_name_0_0=	'Tuple' 
+    {
+        newLeafNode(lv_name_0_0, grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getTupleTypeCSRule());
+	        }
+       		setWithLastConsumed($current, "name", lv_name_0_0, "Tuple");
+	    }
+
+)
+)(	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); 
+	    }
+		lv_ownedParts_2_0=ruleTuplePartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"TuplePartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleTuplePartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"TuplePartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTuplePartCS
+entryRuleTuplePartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTuplePartCSRule()); }
+	 iv_ruleTuplePartCS=ruleTuplePartCS 
+	 { $current=$iv_ruleTuplePartCS.current; } 
+	 EOF 
+;
+
+// Rule TuplePartCS
+ruleTuplePartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTuplePartCSAccess().getColonKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionLiteralExpCS
+entryRuleCollectionLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionLiteralExpCSRule()); }
+	 iv_ruleCollectionLiteralExpCS=ruleCollectionLiteralExpCS 
+	 { $current=$iv_ruleCollectionLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionLiteralExpCS
+ruleCollectionLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedType_0_0=ruleCollectionTypeCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_0_0, 
+        		"CollectionTypeCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedParts_2_0=ruleCollectionLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"CollectionLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleCollectionLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"CollectionLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionLiteralPartCS
+entryRuleCollectionLiteralPartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionLiteralPartCSRule()); }
+	 iv_ruleCollectionLiteralPartCS=ruleCollectionLiteralPartCS 
+	 { $current=$iv_ruleCollectionLiteralPartCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionLiteralPartCS
+ruleCollectionLiteralPartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); 
+	    }
+		lv_ownedExpression_0_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_0_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='..' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); 
+	    }
+		lv_ownedLastExpression_2_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedLastExpression",
+        		lv_ownedLastExpression_2_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedExpression_3_0=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_3_0, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionPatternCS
+entryRuleCollectionPatternCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionPatternCSRule()); }
+	 iv_ruleCollectionPatternCS=ruleCollectionPatternCS 
+	 { $current=$iv_ruleCollectionPatternCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionPatternCS
+ruleCollectionPatternCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedType_0_0=ruleCollectionTypeCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_0_0, 
+        		"CollectionTypeCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedParts_2_0=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*(	otherlv_5='++' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); 
+	    }
+		lv_restVariableName_6_0=ruleIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		set(
+       			$current, 
+       			"restVariableName",
+        		lv_restVariableName_6_0, 
+        		"Identifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleConstructorPartCS
+entryRuleConstructorPartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getConstructorPartCSRule()); }
+	 iv_ruleConstructorPartCS=ruleConstructorPartCS 
+	 { $current=$iv_ruleConstructorPartCS.current; } 
+	 EOF 
+;
+
+// Rule ConstructorPartCS
+ruleConstructorPartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getConstructorPartCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='=' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1());
+    }
+(
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedInitExpression_2_1=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_2_1, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		{ 
+	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); 
+	    }
+		lv_ownedInitExpression_2_2=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_2_2, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRulePatternExpCS
+entryRulePatternExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPatternExpCSRule()); }
+	 iv_rulePatternExpCS=rulePatternExpCS 
+	 { $current=$iv_rulePatternExpCS.current; } 
+	 EOF 
+;
+
+// Rule PatternExpCS
+rulePatternExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_patternVariableName_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"patternVariableName",
+        		lv_patternVariableName_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPatternExpCSAccess().getColonKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedPatternType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPatternType",
+        		lv_ownedPatternType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLambdaLiteralExpCS
+entryRuleLambdaLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLambdaLiteralExpCSRule()); }
+	 iv_ruleLambdaLiteralExpCS=ruleLambdaLiteralExpCS 
+	 { $current=$iv_ruleLambdaLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule LambdaLiteralExpCS
+ruleLambdaLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Lambda' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedExpressionCS_2_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLambdaLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpressionCS",
+        		lv_ownedExpressionCS_2_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='}' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrimitiveLiteralExpCS
+entryRulePrimitiveLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSRule()); }
+	 iv_rulePrimitiveLiteralExpCS=rulePrimitiveLiteralExpCS 
+	 { $current=$iv_rulePrimitiveLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrimitiveLiteralExpCS
+rulePrimitiveLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); 
+    }
+    this_NumberLiteralExpCS_0=ruleNumberLiteralExpCS
+    { 
+        $current = $this_NumberLiteralExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); 
+    }
+    this_StringLiteralExpCS_1=ruleStringLiteralExpCS
+    { 
+        $current = $this_StringLiteralExpCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); 
+    }
+    this_BooleanLiteralExpCS_2=ruleBooleanLiteralExpCS
+    { 
+        $current = $this_BooleanLiteralExpCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); 
+    }
+    this_UnlimitedNaturalLiteralExpCS_3=ruleUnlimitedNaturalLiteralExpCS
+    { 
+        $current = $this_UnlimitedNaturalLiteralExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); 
+    }
+    this_InvalidLiteralExpCS_4=ruleInvalidLiteralExpCS
+    { 
+        $current = $this_InvalidLiteralExpCS_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); 
+    }
+    this_NullLiteralExpCS_5=ruleNullLiteralExpCS
+    { 
+        $current = $this_NullLiteralExpCS_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTupleLiteralExpCS
+entryRuleTupleLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTupleLiteralExpCSRule()); }
+	 iv_ruleTupleLiteralExpCS=ruleTupleLiteralExpCS 
+	 { $current=$iv_ruleTupleLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule TupleLiteralExpCS
+ruleTupleLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Tuple' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedParts_2_0=ruleTupleLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"TupleLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleTupleLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"TupleLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTupleLiteralPartCS
+entryRuleTupleLiteralPartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTupleLiteralPartCSRule()); }
+	 iv_ruleTupleLiteralPartCS=ruleTupleLiteralPartCS 
+	 { $current=$iv_ruleTupleLiteralPartCS.current; } 
+	 EOF 
+;
+
+// Rule TupleLiteralPartCS
+ruleTupleLiteralPartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_3='=' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedInitExpression_4_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_4_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleNumberLiteralExpCS
+entryRuleNumberLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNumberLiteralExpCSRule()); }
+	 iv_ruleNumberLiteralExpCS=ruleNumberLiteralExpCS 
+	 { $current=$iv_ruleNumberLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule NumberLiteralExpCS
+ruleNumberLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); 
+	    }
+		lv_symbol_0_0=ruleNUMBER_LITERAL		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNumberLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"symbol",
+        		lv_symbol_0_0, 
+        		"NUMBER_LITERAL");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStringLiteralExpCS
+entryRuleStringLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStringLiteralExpCSRule()); }
+	 iv_ruleStringLiteralExpCS=ruleStringLiteralExpCS 
+	 { $current=$iv_ruleStringLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule StringLiteralExpCS
+ruleStringLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); 
+	    }
+		lv_segments_0_0=ruleStringLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStringLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"segments",
+        		lv_segments_0_0, 
+        		"StringLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+
+;
+
+
+
+
+
+// Entry rule entryRuleBooleanLiteralExpCS
+entryRuleBooleanLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBooleanLiteralExpCSRule()); }
+	 iv_ruleBooleanLiteralExpCS=ruleBooleanLiteralExpCS 
+	 { $current=$iv_ruleBooleanLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule BooleanLiteralExpCS
+ruleBooleanLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_symbol_0_0=	'true' 
+    {
+        newLeafNode(lv_symbol_0_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());
+	        }
+       		setWithLastConsumed($current, "symbol", lv_symbol_0_0, "true");
+	    }
+
+)
+)
+    |(
+(
+		lv_symbol_1_0=	'false' 
+    {
+        newLeafNode(lv_symbol_1_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());
+	        }
+       		setWithLastConsumed($current, "symbol", lv_symbol_1_0, "false");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleUnlimitedNaturalLiteralExpCS
+entryRuleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }
+	 iv_ruleUnlimitedNaturalLiteralExpCS=ruleUnlimitedNaturalLiteralExpCS 
+	 { $current=$iv_ruleUnlimitedNaturalLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule UnlimitedNaturalLiteralExpCS
+ruleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='*' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleInvalidLiteralExpCS
+entryRuleInvalidLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInvalidLiteralExpCSRule()); }
+	 iv_ruleInvalidLiteralExpCS=ruleInvalidLiteralExpCS 
+	 { $current=$iv_ruleInvalidLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule InvalidLiteralExpCS
+ruleInvalidLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='invalid' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNullLiteralExpCS
+entryRuleNullLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNullLiteralExpCSRule()); }
+	 iv_ruleNullLiteralExpCS=ruleNullLiteralExpCS 
+	 { $current=$iv_ruleNullLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule NullLiteralExpCS
+ruleNullLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='null' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeLiteralCS
+entryRuleTypeLiteralCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeLiteralCSRule()); }
+	 iv_ruleTypeLiteralCS=ruleTypeLiteralCS 
+	 { $current=$iv_ruleTypeLiteralCS.current; } 
+	 EOF 
+;
+
+// Rule TypeLiteralCS
+ruleTypeLiteralCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); 
+    }
+    this_PrimitiveTypeCS_0=rulePrimitiveTypeCS
+    { 
+        $current = $this_PrimitiveTypeCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); 
+    }
+    this_CollectionTypeCS_1=ruleCollectionTypeCS
+    { 
+        $current = $this_CollectionTypeCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); 
+    }
+    this_TupleTypeCS_2=ruleTupleTypeCS
+    { 
+        $current = $this_TupleTypeCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeLiteralWithMultiplicityCS
+entryRuleTypeLiteralWithMultiplicityCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }
+	 iv_ruleTypeLiteralWithMultiplicityCS=ruleTypeLiteralWithMultiplicityCS 
+	 { $current=$iv_ruleTypeLiteralWithMultiplicityCS.current; } 
+	 EOF 
+;
+
+// Rule TypeLiteralWithMultiplicityCS
+ruleTypeLiteralWithMultiplicityCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); 
+    }
+    this_TypeLiteralCS_0=ruleTypeLiteralCS
+    { 
+        $current = $this_TypeLiteralCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedMultiplicity_1_0=ruleMultiplicityCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeLiteralWithMultiplicityCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMultiplicity",
+        		lv_ownedMultiplicity_1_0, 
+        		"MultiplicityCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeLiteralExpCS
+entryRuleTypeLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeLiteralExpCSRule()); }
+	 iv_ruleTypeLiteralExpCS=ruleTypeLiteralExpCS 
+	 { $current=$iv_ruleTypeLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule TypeLiteralExpCS
+ruleTypeLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); 
+	    }
+		lv_ownedType_0_0=ruleTypeLiteralWithMultiplicityCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_0_0, 
+        		"TypeLiteralWithMultiplicityCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeNameExpCS
+entryRuleTypeNameExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeNameExpCSRule()); }
+	 iv_ruleTypeNameExpCS=ruleTypeNameExpCS 
+	 { $current=$iv_ruleTypeNameExpCS.current; } 
+	 EOF 
+;
+
+// Rule TypeNameExpCS
+ruleTypeNameExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathName_0_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_0_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); 
+	    }
+		lv_ownedCurlyBracketedClause_1_0=ruleCurlyBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCurlyBracketedClause",
+        		lv_ownedCurlyBracketedClause_1_0, 
+        		"CurlyBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); 
+	    }
+		lv_ownedPatternGuard_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPatternGuard",
+        		lv_ownedPatternGuard_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2());
+    }
+)?)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeExpCS
+entryRuleTypeExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeExpCSRule()); }
+	 iv_ruleTypeExpCS=ruleTypeExpCS 
+	 { $current=$iv_ruleTypeExpCS.current; } 
+	 EOF 
+;
+
+// Rule TypeExpCS
+ruleTypeExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); 
+    }
+    this_TypeNameExpCS_0=ruleTypeNameExpCS
+    { 
+        $current = $this_TypeNameExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); 
+    }
+    this_TypeLiteralCS_1=ruleTypeLiteralCS
+    { 
+        $current = $this_TypeLiteralCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); 
+    }
+    this_CollectionPatternCS_2=ruleCollectionPatternCS
+    { 
+        $current = $this_CollectionPatternCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedMultiplicity_3_0=ruleMultiplicityCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMultiplicity",
+        		lv_ownedMultiplicity_3_0, 
+        		"MultiplicityCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleExpCS
+entryRuleExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExpCSRule()); }
+	 iv_ruleExpCS=ruleExpCS 
+	 { $current=$iv_ruleExpCS.current; } 
+	 EOF 
+;
+
+// Rule ExpCS
+ruleExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); 
+    }
+    this_PrefixedPrimaryExpCS_0=rulePrefixedPrimaryExpCS
+    { 
+        $current = $this_PrefixedPrimaryExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); 
+	    }
+		lv_name_2_0=ruleBinaryOperatorName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"BinaryOperatorName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); 
+	    }
+		lv_ownedRight_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRight",
+        		lv_ownedRight_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); 
+    }
+    this_PrefixedLetExpCS_4=rulePrefixedLetExpCS
+    { 
+        $current = $this_PrefixedLetExpCS_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrefixedLetExpCS
+entryRulePrefixedLetExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrefixedLetExpCSRule()); }
+	 iv_rulePrefixedLetExpCS=rulePrefixedLetExpCS 
+	 { $current=$iv_rulePrefixedLetExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrefixedLetExpCS
+rulePrefixedLetExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 
+	    }
+		lv_name_1_0=ruleUnaryOperatorName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnaryOperatorName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); 
+	    }
+		lv_ownedRight_2_0=rulePrefixedLetExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRight",
+        		lv_ownedRight_2_0, 
+        		"PrefixedLetExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); 
+    }
+    this_LetExpCS_3=ruleLetExpCS
+    { 
+        $current = $this_LetExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrefixedPrimaryExpCS
+entryRulePrefixedPrimaryExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSRule()); }
+	 iv_rulePrefixedPrimaryExpCS=rulePrefixedPrimaryExpCS 
+	 { $current=$iv_rulePrefixedPrimaryExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrefixedPrimaryExpCS
+rulePrefixedPrimaryExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 
+	    }
+		lv_name_1_0=ruleUnaryOperatorName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnaryOperatorName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); 
+	    }
+		lv_ownedRight_2_0=rulePrefixedPrimaryExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRight",
+        		lv_ownedRight_2_0, 
+        		"PrefixedPrimaryExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); 
+    }
+    this_PrimaryExpCS_3=rulePrimaryExpCS
+    { 
+        $current = $this_PrimaryExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrimaryExpCS
+entryRulePrimaryExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimaryExpCSRule()); }
+	 iv_rulePrimaryExpCS=rulePrimaryExpCS 
+	 { $current=$iv_rulePrimaryExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrimaryExpCS
+rulePrimaryExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); 
+    }
+    this_NestedExpCS_0=ruleNestedExpCS
+    { 
+        $current = $this_NestedExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); 
+    }
+    this_IfExpCS_1=ruleIfExpCS
+    { 
+        $current = $this_IfExpCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); 
+    }
+    this_SelfExpCS_2=ruleSelfExpCS
+    { 
+        $current = $this_SelfExpCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); 
+    }
+    this_PrimitiveLiteralExpCS_3=rulePrimitiveLiteralExpCS
+    { 
+        $current = $this_PrimitiveLiteralExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); 
+    }
+    this_TupleLiteralExpCS_4=ruleTupleLiteralExpCS
+    { 
+        $current = $this_TupleLiteralExpCS_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); 
+    }
+    this_CollectionLiteralExpCS_5=ruleCollectionLiteralExpCS
+    { 
+        $current = $this_CollectionLiteralExpCS_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); 
+    }
+    this_LambdaLiteralExpCS_6=ruleLambdaLiteralExpCS
+    { 
+        $current = $this_LambdaLiteralExpCS_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); 
+    }
+    this_TypeLiteralExpCS_7=ruleTypeLiteralExpCS
+    { 
+        $current = $this_TypeLiteralExpCS_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); 
+    }
+    this_NameExpCS_8=ruleNameExpCS
+    { 
+        $current = $this_NameExpCS_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNameExpCS
+entryRuleNameExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNameExpCSRule()); }
+	 iv_ruleNameExpCS=ruleNameExpCS 
+	 { $current=$iv_ruleNameExpCS.current; } 
+	 EOF 
+;
+
+// Rule NameExpCS
+ruleNameExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathName_0_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_0_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedSquareBracketedClauses_1_0=ruleSquareBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSquareBracketedClauses",
+        		lv_ownedSquareBracketedClauses_1_0, 
+        		"SquareBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedRoundBracketedClause_2_0=ruleRoundBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRoundBracketedClause",
+        		lv_ownedRoundBracketedClause_2_0, 
+        		"RoundBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedCurlyBracketedClause_3_0=ruleCurlyBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCurlyBracketedClause",
+        		lv_ownedCurlyBracketedClause_3_0, 
+        		"CurlyBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?((
+(
+		lv_isPre_4_0=	'@' 
+    {
+        newLeafNode(lv_isPre_4_0, grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNameExpCSRule());
+	        }
+       		setWithLastConsumed($current, "isPre", true, "@");
+	    }
+
+)
+)	otherlv_5='pre' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getNameExpCSAccess().getPreKeyword_4_1());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleCurlyBracketedClauseCS
+entryRuleCurlyBracketedClauseCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCurlyBracketedClauseCSRule()); }
+	 iv_ruleCurlyBracketedClauseCS=ruleCurlyBracketedClauseCS 
+	 { $current=$iv_ruleCurlyBracketedClauseCS.current; } 
+	 EOF 
+;
+
+// Rule CurlyBracketedClauseCS
+ruleCurlyBracketedClauseCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0(),
+            $current);
+    }
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); 
+	    }
+		lv_ownedParts_2_0=ruleConstructorPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"ConstructorPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleConstructorPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"ConstructorPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); 
+	    }
+		lv_value_5_0=ruleStringLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_5_0, 
+        		"StringLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleRoundBracketedClauseCS
+entryRuleRoundBracketedClauseCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRoundBracketedClauseCSRule()); }
+	 iv_ruleRoundBracketedClauseCS=ruleRoundBracketedClauseCS 
+	 { $current=$iv_ruleRoundBracketedClauseCS.current; } 
+	 EOF 
+;
+
+// Rule RoundBracketedClauseCS
+ruleRoundBracketedClauseCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0(),
+            $current);
+    }
+)	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedArguments_2_0=ruleNavigatingArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_2_0, 
+        		"NavigatingArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedArguments_3_0=ruleNavigatingCommaArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_3_0, 
+        		"NavigatingCommaArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); 
+	    }
+		lv_ownedArguments_4_0=ruleNavigatingSemiArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_4_0, 
+        		"NavigatingSemiArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); 
+	    }
+		lv_ownedArguments_5_0=ruleNavigatingCommaArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_5_0, 
+        		"NavigatingCommaArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)?((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); 
+	    }
+		lv_ownedArguments_6_0=ruleNavigatingBarArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_6_0, 
+        		"NavigatingBarArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); 
+	    }
+		lv_ownedArguments_7_0=ruleNavigatingCommaArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_7_0, 
+        		"NavigatingCommaArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)*)?	otherlv_8=')' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSquareBracketedClauseCS
+entryRuleSquareBracketedClauseCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSquareBracketedClauseCSRule()); }
+	 iv_ruleSquareBracketedClauseCS=ruleSquareBracketedClauseCS 
+	 { $current=$iv_ruleSquareBracketedClauseCS.current; } 
+	 EOF 
+;
+
+// Rule SquareBracketedClauseCS
+ruleSquareBracketedClauseCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='[' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedTerms_1_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedTerms",
+        		lv_ownedTerms_1_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedTerms_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedTerms",
+        		lv_ownedTerms_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4=']' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingArgCS
+entryRuleNavigatingArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingArgCSRule()); }
+	 iv_ruleNavigatingArgCS=ruleNavigatingArgCS 
+	 { $current=$iv_ruleNavigatingArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingArgCS
+ruleNavigatingArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); 
+	    }
+		lv_ownedNameExpression_0_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_0_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='=' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); 
+	    }
+		lv_ownedInitExpression_4_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_4_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(	otherlv_5='in' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); 
+	    }
+		lv_ownedInitExpression_6_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_6_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+    |(	otherlv_7=':' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedType_8_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_8_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingBarArgCS
+entryRuleNavigatingBarArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingBarArgCSRule()); }
+	 iv_ruleNavigatingBarArgCS=ruleNavigatingBarArgCS 
+	 { $current=$iv_ruleNavigatingBarArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingBarArgCS
+ruleNavigatingBarArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_prefix_0_0=	'|' 
+    {
+        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, "|");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_1_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)?)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingCommaArgCS
+entryRuleNavigatingCommaArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingCommaArgCSRule()); }
+	 iv_ruleNavigatingCommaArgCS=ruleNavigatingCommaArgCS 
+	 { $current=$iv_ruleNavigatingCommaArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingCommaArgCS
+ruleNavigatingCommaArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_prefix_0_0=	',' 
+    {
+        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ",");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_1_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(	otherlv_6='in' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedInitExpression_7_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_7_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingSemiArgCS
+entryRuleNavigatingSemiArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingSemiArgCSRule()); }
+	 iv_ruleNavigatingSemiArgCS=ruleNavigatingSemiArgCS 
+	 { $current=$iv_ruleNavigatingSemiArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingSemiArgCS
+ruleNavigatingSemiArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_prefix_0_0=	';' 
+    {
+        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ";");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_1_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)?)
+;
+
+
+
+
+
+// Entry rule entryRuleIfExpCS
+entryRuleIfExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIfExpCSRule()); }
+	 iv_ruleIfExpCS=ruleIfExpCS 
+	 { $current=$iv_ruleIfExpCS.current; } 
+	 EOF 
+;
+
+// Rule IfExpCS
+ruleIfExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='if' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getIfExpCSAccess().getIfKeyword_0());
+    }
+(
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); 
+	    }
+		lv_ownedCondition_1_1=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCondition",
+        		lv_ownedCondition_1_1, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); 
+	    }
+		lv_ownedCondition_1_2=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCondition",
+        		lv_ownedCondition_1_2, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+
+)
+)	otherlv_2='then' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getIfExpCSAccess().getThenKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedThenExpression_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedThenExpression",
+        		lv_ownedThenExpression_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedIfThenExpressions_4_0=ruleElseIfThenExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedIfThenExpressions",
+        		lv_ownedIfThenExpressions_4_0, 
+        		"ElseIfThenExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5='else' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getIfExpCSAccess().getElseKeyword_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); 
+	    }
+		lv_ownedElseExpression_6_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedElseExpression",
+        		lv_ownedElseExpression_6_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='endif' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getIfExpCSAccess().getEndifKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleElseIfThenExpCS
+entryRuleElseIfThenExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getElseIfThenExpCSRule()); }
+	 iv_ruleElseIfThenExpCS=ruleElseIfThenExpCS 
+	 { $current=$iv_ruleElseIfThenExpCS.current; } 
+	 EOF 
+;
+
+// Rule ElseIfThenExpCS
+ruleElseIfThenExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='elseif' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedCondition_1_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCondition",
+        		lv_ownedCondition_1_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='then' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedThenExpression_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedThenExpression",
+        		lv_ownedThenExpression_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLetExpCS
+entryRuleLetExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLetExpCSRule()); }
+	 iv_ruleLetExpCS=ruleLetExpCS 
+	 { $current=$iv_ruleLetExpCS.current; } 
+	 EOF 
+;
+
+// Rule LetExpCS
+ruleLetExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='let' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLetExpCSAccess().getLetKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedVariables_1_0=ruleLetVariableCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedVariables",
+        		lv_ownedVariables_1_0, 
+        		"LetVariableCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedVariables_3_0=ruleLetVariableCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedVariables",
+        		lv_ownedVariables_3_0, 
+        		"LetVariableCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4='in' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getLetExpCSAccess().getInKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedInExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInExpression",
+        		lv_ownedInExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLetVariableCS
+entryRuleLetVariableCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLetVariableCSRule()); }
+	 iv_ruleLetVariableCS=ruleLetVariableCS 
+	 { $current=$iv_ruleLetVariableCS.current; } 
+	 EOF 
+;
+
+// Rule LetVariableCS
+ruleLetVariableCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedRoundBracketedClause_1_0=ruleRoundBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRoundBracketedClause",
+        		lv_ownedRoundBracketedClause_1_0, 
+        		"RoundBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleNestedExpCS
+entryRuleNestedExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNestedExpCSRule()); }
+	 iv_ruleNestedExpCS=ruleNestedExpCS 
+	 { $current=$iv_ruleNestedExpCS.current; } 
+	 EOF 
+;
+
+// Rule NestedExpCS
+ruleNestedExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedExpression_1_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNestedExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_1_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2=')' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSelfExpCS
+entryRuleSelfExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSelfExpCSRule()); }
+	 iv_ruleSelfExpCS=ruleSelfExpCS 
+	 { $current=$iv_ruleSelfExpCS.current; } 
+	 EOF 
+;
+
+// Rule SelfExpCS
+ruleSelfExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='self' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getSelfExpCSAccess().getSelfKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleMultiplicityBoundsCS
+entryRuleMultiplicityBoundsCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityBoundsCSRule()); }
+	 iv_ruleMultiplicityBoundsCS=ruleMultiplicityBoundsCS 
+	 { $current=$iv_ruleMultiplicityBoundsCS.current; } 
+	 EOF 
+;
+
+// Rule MultiplicityBoundsCS
+ruleMultiplicityBoundsCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); 
+	    }
+		lv_lowerBound_0_0=ruleLOWER		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());
+	        }
+       		set(
+       			$current, 
+       			"lowerBound",
+        		lv_lowerBound_0_0, 
+        		"LOWER");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='..' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); 
+	    }
+		lv_upperBound_2_0=ruleUPPER		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());
+	        }
+       		set(
+       			$current, 
+       			"upperBound",
+        		lv_upperBound_2_0, 
+        		"UPPER");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleMultiplicityCS
+entryRuleMultiplicityCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityCSRule()); }
+	 iv_ruleMultiplicityCS=ruleMultiplicityCS 
+	 { $current=$iv_ruleMultiplicityCS.current; } 
+	 EOF 
+;
+
+// Rule MultiplicityCS
+ruleMultiplicityCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='[' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0());
+    }
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); 
+    }
+    this_MultiplicityBoundsCS_1=ruleMultiplicityBoundsCS
+    { 
+        $current = $this_MultiplicityBoundsCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); 
+    }
+    this_MultiplicityStringCS_2=ruleMultiplicityStringCS
+    { 
+        $current = $this_MultiplicityStringCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)	otherlv_3=']' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleMultiplicityStringCS
+entryRuleMultiplicityStringCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityStringCSRule()); }
+	 iv_ruleMultiplicityStringCS=ruleMultiplicityStringCS 
+	 { $current=$iv_ruleMultiplicityStringCS.current; } 
+	 EOF 
+;
+
+// Rule MultiplicityStringCS
+ruleMultiplicityStringCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+(
+		lv_stringBounds_0_1=	'*' 
+    {
+        newLeafNode(lv_stringBounds_0_1, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_1, null);
+	    }
+
+    |		lv_stringBounds_0_2=	'+' 
+    {
+        newLeafNode(lv_stringBounds_0_2, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_2, null);
+	    }
+
+    |		lv_stringBounds_0_3=	'?' 
+    {
+        newLeafNode(lv_stringBounds_0_3, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_3, null);
+	    }
+
+)
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRulePathNameCS
+entryRulePathNameCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPathNameCSRule()); }
+	 iv_rulePathNameCS=rulePathNameCS 
+	 { $current=$iv_rulePathNameCS.current; } 
+	 EOF 
+;
+
+// Rule PathNameCS
+rulePathNameCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathElements_0_0=ruleFirstPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_0_0, 
+        		"FirstPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='::' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedPathElements_2_0=ruleNextPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_2_0, 
+        		"NextPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleFirstPathElementCS
+entryRuleFirstPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFirstPathElementCSRule()); }
+	 iv_ruleFirstPathElementCS=ruleFirstPathElementCS 
+	 { $current=$iv_ruleFirstPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule FirstPathElementCS
+ruleFirstPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFirstPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNextPathElementCS
+entryRuleNextPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNextPathElementCSRule()); }
+	 iv_ruleNextPathElementCS=ruleNextPathElementCS 
+	 { $current=$iv_ruleNextPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule NextPathElementCS
+ruleNextPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNextPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 
+	    }
+		ruleUnreservedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTemplateBindingCS
+entryRuleTemplateBindingCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTemplateBindingCSRule()); }
+	 iv_ruleTemplateBindingCS=ruleTemplateBindingCS 
+	 { $current=$iv_ruleTemplateBindingCS.current; } 
+	 EOF 
+;
+
+// Rule TemplateBindingCS
+ruleTemplateBindingCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedSubstitutions_1_0=ruleTemplateParameterSubstitutionCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSubstitutions",
+        		lv_ownedSubstitutions_1_0, 
+        		"TemplateParameterSubstitutionCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedSubstitutions_3_0=ruleTemplateParameterSubstitutionCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSubstitutions",
+        		lv_ownedSubstitutions_3_0, 
+        		"TemplateParameterSubstitutionCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTemplateParameterSubstitutionCS
+entryRuleTemplateParameterSubstitutionCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSRule()); }
+	 iv_ruleTemplateParameterSubstitutionCS=ruleTemplateParameterSubstitutionCS 
+	 { $current=$iv_ruleTemplateParameterSubstitutionCS.current; } 
+	 EOF 
+;
+
+// Rule TemplateParameterSubstitutionCS
+ruleTemplateParameterSubstitutionCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); 
+	    }
+		lv_ownedActualParameter_0_0=ruleTypeRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateParameterSubstitutionCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedActualParameter",
+        		lv_ownedActualParameter_0_0, 
+        		"TypeRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeParameterCS
+entryRuleTypeParameterCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeParameterCSRule()); }
+	 iv_ruleTypeParameterCS=ruleTypeParameterCS 
+	 { $current=$iv_ruleTypeParameterCS.current; } 
+	 EOF 
+;
+
+// Rule TypeParameterCS
+ruleTypeParameterCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_1='extends' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); 
+	    }
+		lv_ownedExtends_2_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_2_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='&&' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); 
+	    }
+		lv_ownedExtends_4_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_4_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+    |(	otherlv_5='super' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); 
+	    }
+		lv_ownedSuper_6_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSuper",
+        		lv_ownedSuper_6_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeRefCS
+entryRuleTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeRefCSRule()); }
+	 iv_ruleTypeRefCS=ruleTypeRefCS 
+	 { $current=$iv_ruleTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypeRefCS
+ruleTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); 
+    }
+    this_TypedRefCS_0=ruleTypedRefCS
+    { 
+        $current = $this_TypedRefCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); 
+    }
+    this_WildcardTypeRefCS_1=ruleWildcardTypeRefCS
+    { 
+        $current = $this_WildcardTypeRefCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypedTypeRefCS
+entryRuleTypedTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedTypeRefCSRule()); }
+	 iv_ruleTypedTypeRefCS=ruleTypedTypeRefCS 
+	 { $current=$iv_ruleTypedTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypedTypeRefCS
+ruleTypedTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathName_0_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_0_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedBinding_1_0=ruleTemplateBindingCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedBinding",
+        		lv_ownedBinding_1_0, 
+        		"TemplateBindingCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleWildcardTypeRefCS
+entryRuleWildcardTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getWildcardTypeRefCSRule()); }
+	 iv_ruleWildcardTypeRefCS=ruleWildcardTypeRefCS 
+	 { $current=$iv_ruleWildcardTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule WildcardTypeRefCS
+ruleWildcardTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0(),
+            $current);
+    }
+)	otherlv_1='?' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1());
+    }
+((	otherlv_2='extends' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); 
+	    }
+		lv_ownedExtends_3_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_3_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(	otherlv_4='super' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedSuper_5_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSuper",
+        		lv_ownedSuper_5_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleID
+entryRuleID returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIDRule()); } 
+	 iv_ruleID=ruleID 
+	 { $current=$iv_ruleID.current.getText(); }  
+	 EOF 
+;
+
+// Rule ID
+ruleID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_SIMPLE_ID_0=RULE_SIMPLE_ID    {
+		$current.merge(this_SIMPLE_ID_0);
+    }
+
+    { 
+    newLeafNode(this_SIMPLE_ID_0, grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); 
+    }
+
+    |    this_ESCAPED_ID_1=RULE_ESCAPED_ID    {
+		$current.merge(this_ESCAPED_ID_1);
+    }
+
+    { 
+    newLeafNode(this_ESCAPED_ID_1, grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleIdentifier
+entryRuleIdentifier returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIdentifierRule()); } 
+	 iv_ruleIdentifier=ruleIdentifier 
+	 { $current=$iv_ruleIdentifier.current.getText(); }  
+	 EOF 
+;
+
+// Rule Identifier
+ruleIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); 
+    }
+    this_ID_0=ruleID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleLOWER
+entryRuleLOWER returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLOWERRule()); } 
+	 iv_ruleLOWER=ruleLOWER 
+	 { $current=$iv_ruleLOWER.current.getText(); }  
+	 EOF 
+;
+
+// Rule LOWER
+ruleLOWER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleNUMBER_LITERAL
+entryRuleNUMBER_LITERAL returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNUMBER_LITERALRule()); } 
+	 iv_ruleNUMBER_LITERAL=ruleNUMBER_LITERAL 
+	 { $current=$iv_ruleNUMBER_LITERAL.current.getText(); }  
+	 EOF 
+;
+
+// Rule NUMBER_LITERAL
+ruleNUMBER_LITERAL returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleStringLiteral
+entryRuleStringLiteral returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStringLiteralRule()); } 
+	 iv_ruleStringLiteral=ruleStringLiteral 
+	 { $current=$iv_ruleStringLiteral.current.getText(); }  
+	 EOF 
+;
+
+// Rule StringLiteral
+ruleStringLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {
+		$current.merge(this_SINGLE_QUOTED_STRING_0);
+    }
+
+    { 
+    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleUPPER
+entryRuleUPPER returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUPPERRule()); } 
+	 iv_ruleUPPER=ruleUPPER 
+	 { $current=$iv_ruleUPPER.current.getText(); }  
+	 EOF 
+;
+
+// Rule UPPER
+ruleUPPER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); 
+    }
+
+    |
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleURI
+entryRuleURI returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getURIRule()); } 
+	 iv_ruleURI=ruleURI 
+	 { $current=$iv_ruleURI.current.getText(); }  
+	 EOF 
+;
+
+// Rule URI
+ruleURI returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {
+		$current.merge(this_SINGLE_QUOTED_STRING_0);
+    }
+
+    { 
+    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+RULE_UNQUOTED_STRING : '\u00A3$%^\u00A3$%^';
+
+fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');
+
+fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');
+
+RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';
+
+RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';
+
+RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';
+
+RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;
+
+RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;
+
+RULE_INT : ('0'..'9')+;
+
+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/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.tokens b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.tokens
index ce02352..db5e200 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.tokens
+++ b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.tokens
@@ -1,179 +1,179 @@
-'&&'=98

-'('=21

-')'=22

-'*'=54

-'+'=56

-'++'=78

-','=26

-'-'=52

-'->'=65

-'.'=64

-'..'=77

-'/'=55

-':'=23

-'::'=69

-'::*'=29

-';'=89

-'<'=39

-'<='=58

-'<>'=59

-'='=27

-'>'=40

-'>='=57

-'?'=41

-'?->'=67

-'?.'=66

-'@'=84

-'Bag'=71

-'Boolean'=42

-'Collection'=73

-'Integer'=43

-'Lambda'=79

-'OclAny'=47

-'OclInvalid'=48

-'OclMessage'=49

-'OclState'=50

-'OclVoid'=51

-'OrderedSet'=74

-'Real'=44

-'Sequence'=72

-'Set'=70

-'String'=45

-'Tuple'=68

-'UnlimitedNatural'=46

-'['=85

-']'=86

-'^'=17

-'^^'=18

-'and'=60

-'body'=34

-'context'=19

-'def'=25

-'derive'=37

-'else'=92

-'elseif'=94

-'endif'=93

-'endpackage'=36

-'extends'=97

-'false'=81

-'if'=90

-'implies'=63

-'import'=28

-'in'=87

-'include'=30

-'init'=38

-'inv'=20

-'invalid'=82

-'let'=95

-'library'=31

-'not'=53

-'null'=83

-'or'=61

-'package'=35

-'post'=33

-'pre'=32

-'self'=96

-'static'=24

-'super'=99

-'then'=91

-'true'=80

-'xor'=62

-'{'=75

-'|'=88

-'}'=76

-RULE_ANY_OTHER=16

-RULE_DOUBLE_QUOTED_STRING=11

-RULE_ESCAPED_CHARACTER=9

-RULE_ESCAPED_ID=6

-RULE_INT=7

-RULE_LETTER_CHARACTER=10

-RULE_ML_COMMENT=13

-RULE_ML_SINGLE_QUOTED_STRING=12

-RULE_SIMPLE_ID=5

-RULE_SINGLE_QUOTED_STRING=8

-RULE_SL_COMMENT=14

-RULE_UNQUOTED_STRING=4

-RULE_WS=15

-T__17=17

-T__18=18

-T__19=19

-T__20=20

-T__21=21

-T__22=22

-T__23=23

-T__24=24

-T__25=25

-T__26=26

-T__27=27

-T__28=28

-T__29=29

-T__30=30

-T__31=31

-T__32=32

-T__33=33

-T__34=34

-T__35=35

-T__36=36

-T__37=37

-T__38=38

-T__39=39

-T__40=40

-T__41=41

-T__42=42

-T__43=43

-T__44=44

-T__45=45

-T__46=46

-T__47=47

-T__48=48

-T__49=49

-T__50=50

-T__51=51

-T__52=52

-T__53=53

-T__54=54

-T__55=55

-T__56=56

-T__57=57

-T__58=58

-T__59=59

-T__60=60

-T__61=61

-T__62=62

-T__63=63

-T__64=64

-T__65=65

-T__66=66

-T__67=67

-T__68=68

-T__69=69

-T__70=70

-T__71=71

-T__72=72

-T__73=73

-T__74=74

-T__75=75

-T__76=76

-T__77=77

-T__78=78

-T__79=79

-T__80=80

-T__81=81

-T__82=82

-T__83=83

-T__84=84

-T__85=85

-T__86=86

-T__87=87

-T__88=88

-T__89=89

-T__90=90

-T__91=91

-T__92=92

-T__93=93

-T__94=94

-T__95=95

-T__96=96

-T__97=97

-T__98=98

-T__99=99

+'&&'=98
+'('=21
+')'=22
+'*'=54
+'+'=56
+'++'=78
+','=26
+'-'=52
+'->'=65
+'.'=64
+'..'=77
+'/'=55
+':'=23
+'::'=69
+'::*'=29
+';'=89
+'<'=39
+'<='=58
+'<>'=59
+'='=27
+'>'=40
+'>='=57
+'?'=41
+'?->'=67
+'?.'=66
+'@'=84
+'Bag'=71
+'Boolean'=42
+'Collection'=73
+'Integer'=43
+'Lambda'=79
+'OclAny'=47
+'OclInvalid'=48
+'OclMessage'=49
+'OclState'=50
+'OclVoid'=51
+'OrderedSet'=74
+'Real'=44
+'Sequence'=72
+'Set'=70
+'String'=45
+'Tuple'=68
+'UnlimitedNatural'=46
+'['=85
+']'=86
+'^'=17
+'^^'=18
+'and'=60
+'body'=34
+'context'=19
+'def'=25
+'derive'=37
+'else'=92
+'elseif'=94
+'endif'=93
+'endpackage'=36
+'extends'=97
+'false'=81
+'if'=90
+'implies'=63
+'import'=28
+'in'=87
+'include'=30
+'init'=38
+'inv'=20
+'invalid'=82
+'let'=95
+'library'=31
+'not'=53
+'null'=83
+'or'=61
+'package'=35
+'post'=33
+'pre'=32
+'self'=96
+'static'=24
+'super'=99
+'then'=91
+'true'=80
+'xor'=62
+'{'=75
+'|'=88
+'}'=76
+RULE_ANY_OTHER=16
+RULE_DOUBLE_QUOTED_STRING=11
+RULE_ESCAPED_CHARACTER=9
+RULE_ESCAPED_ID=6
+RULE_INT=7
+RULE_LETTER_CHARACTER=10
+RULE_ML_COMMENT=13
+RULE_ML_SINGLE_QUOTED_STRING=12
+RULE_SIMPLE_ID=5
+RULE_SINGLE_QUOTED_STRING=8
+RULE_SL_COMMENT=14
+RULE_UNQUOTED_STRING=4
+RULE_WS=15
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCLParser.java b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCLParser.java
index 41ad14f..34909ce 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCLParser.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCLParser.java
@@ -4109,7 +4109,7 @@
 
 
     // $ANTLR start "rulePropertyContextDeclCS"
-    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1431:1: rulePropertyContextDeclCS returns [EObject current=null] : (otherlv_0= 'context' ( (lv_ownedPathName_1_0= rulePathNameCS ) ) otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) )? ( (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) ) | (otherlv_6= 'init' otherlv_7= ':' ( (lv_ownedDefaultExpressions_8_0= ruleSpecificationCS ) ) ) )* ) ;
+    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1431:1: rulePropertyContextDeclCS returns [EObject current=null] : (otherlv_0= 'context' ( (lv_ownedPathName_1_0= rulePathNameCS ) ) otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) ) ( (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) ) | (otherlv_6= 'init' otherlv_7= ':' ( (lv_ownedDefaultExpressions_8_0= ruleSpecificationCS ) ) ) )* ) ;
     public final EObject rulePropertyContextDeclCS() throws RecognitionException {
         EObject current = null;
 
@@ -4130,11 +4130,11 @@
          enterRule(); 
             
         try {
-            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1434:28: ( (otherlv_0= 'context' ( (lv_ownedPathName_1_0= rulePathNameCS ) ) otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) )? ( (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) ) | (otherlv_6= 'init' otherlv_7= ':' ( (lv_ownedDefaultExpressions_8_0= ruleSpecificationCS ) ) ) )* ) )
-            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1435:1: (otherlv_0= 'context' ( (lv_ownedPathName_1_0= rulePathNameCS ) ) otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) )? ( (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) ) | (otherlv_6= 'init' otherlv_7= ':' ( (lv_ownedDefaultExpressions_8_0= ruleSpecificationCS ) ) ) )* )
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1434:28: ( (otherlv_0= 'context' ( (lv_ownedPathName_1_0= rulePathNameCS ) ) otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) ) ( (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) ) | (otherlv_6= 'init' otherlv_7= ':' ( (lv_ownedDefaultExpressions_8_0= ruleSpecificationCS ) ) ) )* ) )
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1435:1: (otherlv_0= 'context' ( (lv_ownedPathName_1_0= rulePathNameCS ) ) otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) ) ( (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) ) | (otherlv_6= 'init' otherlv_7= ':' ( (lv_ownedDefaultExpressions_8_0= ruleSpecificationCS ) ) ) )* )
             {
-            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1435:1: (otherlv_0= 'context' ( (lv_ownedPathName_1_0= rulePathNameCS ) ) otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) )? ( (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) ) | (otherlv_6= 'init' otherlv_7= ':' ( (lv_ownedDefaultExpressions_8_0= ruleSpecificationCS ) ) ) )* )
-            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1435:3: otherlv_0= 'context' ( (lv_ownedPathName_1_0= rulePathNameCS ) ) otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) )? ( (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) ) | (otherlv_6= 'init' otherlv_7= ':' ( (lv_ownedDefaultExpressions_8_0= ruleSpecificationCS ) ) ) )*
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1435:1: (otherlv_0= 'context' ( (lv_ownedPathName_1_0= rulePathNameCS ) ) otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) ) ( (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) ) | (otherlv_6= 'init' otherlv_7= ':' ( (lv_ownedDefaultExpressions_8_0= ruleSpecificationCS ) ) ) )* )
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1435:3: otherlv_0= 'context' ( (lv_ownedPathName_1_0= rulePathNameCS ) ) otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) ) ( (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) ) | (otherlv_6= 'init' otherlv_7= ':' ( (lv_ownedDefaultExpressions_8_0= ruleSpecificationCS ) ) ) )*
             {
             otherlv_0=(Token)match(input,19,FollowSets000.FOLLOW_19_in_rulePropertyContextDeclCS2899); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -4183,74 +4183,63 @@
                   	newLeafNode(otherlv_2, grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_2());
                   
             }
-            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1461:1: ( (lv_ownedType_3_0= ruleTypeExpCS ) )?
-            int alt30=2;
-            int LA30_0 = input.LA(1);
-
-            if ( ((LA30_0>=RULE_SIMPLE_ID && LA30_0<=RULE_ESCAPED_ID)||LA30_0==28||(LA30_0>=30 && LA30_0<=31)||(LA30_0>=42 && LA30_0<=51)||LA30_0==68||(LA30_0>=70 && LA30_0<=74)) ) {
-                alt30=1;
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1461:1: ( (lv_ownedType_3_0= ruleTypeExpCS ) )
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1462:1: (lv_ownedType_3_0= ruleTypeExpCS )
+            {
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1462:1: (lv_ownedType_3_0= ruleTypeExpCS )
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1463:3: lv_ownedType_3_0= ruleTypeExpCS
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getPropertyContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_3_0()); 
+              	    
             }
-            switch (alt30) {
-                case 1 :
-                    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1462:1: (lv_ownedType_3_0= ruleTypeExpCS )
-                    {
-                    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1462:1: (lv_ownedType_3_0= ruleTypeExpCS )
-                    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1463:3: lv_ownedType_3_0= ruleTypeExpCS
-                    {
-                    if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getPropertyContextDeclCSAccess().getOwnedTypeTypeExpCSParserRuleCall_3_0()); 
-                      	    
-                    }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_rulePropertyContextDeclCS2953);
-                    lv_ownedType_3_0=ruleTypeExpCS();
+            pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_rulePropertyContextDeclCS2953);
+            lv_ownedType_3_0=ruleTypeExpCS();
 
-                    state._fsp--;
-                    if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getPropertyContextDeclCSRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"ownedType",
-                              		lv_ownedType_3_0, 
-                              		"TypeExpCS");
-                      	        afterParserOrEnumRuleCall();
-                      	    
-                    }
-
-                    }
-
-
-                    }
-                    break;
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getPropertyContextDeclCSRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"ownedType",
+                      		lv_ownedType_3_0, 
+                      		"TypeExpCS");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
 
             }
 
-            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1479:3: ( (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) ) | (otherlv_6= 'init' otherlv_7= ':' ( (lv_ownedDefaultExpressions_8_0= ruleSpecificationCS ) ) ) )*
-            loop31:
+
+            }
+
+            // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1479:2: ( (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) ) | (otherlv_6= 'init' otherlv_7= ':' ( (lv_ownedDefaultExpressions_8_0= ruleSpecificationCS ) ) ) )*
+            loop30:
             do {
-                int alt31=3;
-                int LA31_0 = input.LA(1);
+                int alt30=3;
+                int LA30_0 = input.LA(1);
 
-                if ( (LA31_0==37) ) {
-                    alt31=1;
+                if ( (LA30_0==37) ) {
+                    alt30=1;
                 }
-                else if ( (LA31_0==38) ) {
-                    alt31=2;
+                else if ( (LA30_0==38) ) {
+                    alt30=2;
                 }
 
 
-                switch (alt31) {
+                switch (alt30) {
             	case 1 :
-            	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1479:4: (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) )
+            	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1479:3: (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) )
             	    {
-            	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1479:4: (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) )
-            	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1479:6: otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) )
+            	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1479:3: (otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) ) )
+            	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1479:5: otherlv_4= 'derive' ( (lv_ownedDerivedInvariants_5_0= ruleConstraintCS ) )
             	    {
-            	    otherlv_4=(Token)match(input,37,FollowSets000.FOLLOW_37_in_rulePropertyContextDeclCS2968); if (state.failed) return current;
+            	    otherlv_4=(Token)match(input,37,FollowSets000.FOLLOW_37_in_rulePropertyContextDeclCS2967); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	          	newLeafNode(otherlv_4, grammarAccess.getPropertyContextDeclCSAccess().getDeriveKeyword_4_0_0());
@@ -4267,7 +4256,7 @@
             	      	        newCompositeNode(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDerivedInvariantsConstraintCSParserRuleCall_4_0_1_0()); 
             	      	    
             	    }
-            	    pushFollow(FollowSets000.FOLLOW_ruleConstraintCS_in_rulePropertyContextDeclCS2989);
+            	    pushFollow(FollowSets000.FOLLOW_ruleConstraintCS_in_rulePropertyContextDeclCS2988);
             	    lv_ownedDerivedInvariants_5_0=ruleConstraintCS();
 
             	    state._fsp--;
@@ -4303,13 +4292,13 @@
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1502:6: (otherlv_6= 'init' otherlv_7= ':' ( (lv_ownedDefaultExpressions_8_0= ruleSpecificationCS ) ) )
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1502:8: otherlv_6= 'init' otherlv_7= ':' ( (lv_ownedDefaultExpressions_8_0= ruleSpecificationCS ) )
             	    {
-            	    otherlv_6=(Token)match(input,38,FollowSets000.FOLLOW_38_in_rulePropertyContextDeclCS3009); if (state.failed) return current;
+            	    otherlv_6=(Token)match(input,38,FollowSets000.FOLLOW_38_in_rulePropertyContextDeclCS3008); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	          	newLeafNode(otherlv_6, grammarAccess.getPropertyContextDeclCSAccess().getInitKeyword_4_1_0());
             	          
             	    }
-            	    otherlv_7=(Token)match(input,23,FollowSets000.FOLLOW_23_in_rulePropertyContextDeclCS3021); if (state.failed) return current;
+            	    otherlv_7=(Token)match(input,23,FollowSets000.FOLLOW_23_in_rulePropertyContextDeclCS3020); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	          	newLeafNode(otherlv_7, grammarAccess.getPropertyContextDeclCSAccess().getColonKeyword_4_1_1());
@@ -4326,7 +4315,7 @@
             	      	        newCompositeNode(grammarAccess.getPropertyContextDeclCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_4_1_2_0()); 
             	      	    
             	    }
-            	    pushFollow(FollowSets000.FOLLOW_ruleSpecificationCS_in_rulePropertyContextDeclCS3042);
+            	    pushFollow(FollowSets000.FOLLOW_ruleSpecificationCS_in_rulePropertyContextDeclCS3041);
             	    lv_ownedDefaultExpressions_8_0=ruleSpecificationCS();
 
             	    state._fsp--;
@@ -4358,7 +4347,7 @@
             	    break;
 
             	default :
-            	    break loop31;
+            	    break loop30;
                 }
             } while (true);
 
@@ -4399,7 +4388,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getSpecificationCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleSpecificationCS_in_entryRuleSpecificationCS3081);
+            pushFollow(FollowSets000.FOLLOW_ruleSpecificationCS_in_entryRuleSpecificationCS3080);
             iv_ruleSpecificationCS=ruleSpecificationCS();
 
             state._fsp--;
@@ -4407,7 +4396,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleSpecificationCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSpecificationCS3091); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSpecificationCS3090); if (state.failed) return current;
 
             }
 
@@ -4440,23 +4429,23 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1549:1: ( ( (lv_ownedExpression_0_0= ruleExpCS ) ) | ( (lv_exprString_1_0= RULE_UNQUOTED_STRING ) ) )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1549:1: ( ( (lv_ownedExpression_0_0= ruleExpCS ) ) | ( (lv_exprString_1_0= RULE_UNQUOTED_STRING ) ) )
-            int alt32=2;
-            int LA32_0 = input.LA(1);
+            int alt31=2;
+            int LA31_0 = input.LA(1);
 
-            if ( ((LA32_0>=RULE_SIMPLE_ID && LA32_0<=RULE_SINGLE_QUOTED_STRING)||LA32_0==21||LA32_0==28||(LA32_0>=30 && LA32_0<=31)||(LA32_0>=42 && LA32_0<=54)||LA32_0==68||(LA32_0>=70 && LA32_0<=74)||(LA32_0>=79 && LA32_0<=83)||LA32_0==90||(LA32_0>=95 && LA32_0<=96)) ) {
-                alt32=1;
+            if ( ((LA31_0>=RULE_SIMPLE_ID && LA31_0<=RULE_SINGLE_QUOTED_STRING)||LA31_0==21||LA31_0==28||(LA31_0>=30 && LA31_0<=31)||(LA31_0>=42 && LA31_0<=54)||LA31_0==68||(LA31_0>=70 && LA31_0<=74)||(LA31_0>=79 && LA31_0<=83)||LA31_0==90||(LA31_0>=95 && LA31_0<=96)) ) {
+                alt31=1;
             }
-            else if ( (LA32_0==RULE_UNQUOTED_STRING) ) {
-                alt32=2;
+            else if ( (LA31_0==RULE_UNQUOTED_STRING) ) {
+                alt31=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 32, 0, input);
+                    new NoViableAltException("", 31, 0, input);
 
                 throw nvae;
             }
-            switch (alt32) {
+            switch (alt31) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1549:2: ( (lv_ownedExpression_0_0= ruleExpCS ) )
                     {
@@ -4471,7 +4460,7 @@
                       	        newCompositeNode(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleSpecificationCS3137);
+                    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleSpecificationCS3136);
                     lv_ownedExpression_0_0=ruleExpCS();
 
                     state._fsp--;
@@ -4507,7 +4496,7 @@
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1569:1: (lv_exprString_1_0= RULE_UNQUOTED_STRING )
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1570:3: lv_exprString_1_0= RULE_UNQUOTED_STRING
                     {
-                    lv_exprString_1_0=(Token)match(input,RULE_UNQUOTED_STRING,FollowSets000.FOLLOW_RULE_UNQUOTED_STRING_in_ruleSpecificationCS3160); if (state.failed) return current;
+                    lv_exprString_1_0=(Token)match(input,RULE_UNQUOTED_STRING,FollowSets000.FOLLOW_RULE_UNQUOTED_STRING_in_ruleSpecificationCS3159); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			newLeafNode(lv_exprString_1_0, grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); 
@@ -4571,7 +4560,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTemplateSignatureCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTemplateSignatureCS_in_entryRuleTemplateSignatureCS3201);
+            pushFollow(FollowSets000.FOLLOW_ruleTemplateSignatureCS_in_entryRuleTemplateSignatureCS3200);
             iv_ruleTemplateSignatureCS=ruleTemplateSignatureCS();
 
             state._fsp--;
@@ -4579,7 +4568,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTemplateSignatureCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTemplateSignatureCS3211); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTemplateSignatureCS3210); if (state.failed) return current;
 
             }
 
@@ -4623,30 +4612,30 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1607:1: ( (otherlv_0= '(' ( (lv_ownedParameters_1_0= ruleTypeParameterCS ) ) (otherlv_2= ',' ( (lv_ownedParameters_3_0= ruleTypeParameterCS ) ) )* otherlv_4= ')' ) | (otherlv_5= '<' ( (lv_ownedParameters_6_0= ruleTypeParameterCS ) ) (otherlv_7= ',' ( (lv_ownedParameters_8_0= ruleTypeParameterCS ) ) )* otherlv_9= '>' ) )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1607:1: ( (otherlv_0= '(' ( (lv_ownedParameters_1_0= ruleTypeParameterCS ) ) (otherlv_2= ',' ( (lv_ownedParameters_3_0= ruleTypeParameterCS ) ) )* otherlv_4= ')' ) | (otherlv_5= '<' ( (lv_ownedParameters_6_0= ruleTypeParameterCS ) ) (otherlv_7= ',' ( (lv_ownedParameters_8_0= ruleTypeParameterCS ) ) )* otherlv_9= '>' ) )
-            int alt35=2;
-            int LA35_0 = input.LA(1);
+            int alt34=2;
+            int LA34_0 = input.LA(1);
 
-            if ( (LA35_0==21) ) {
-                alt35=1;
+            if ( (LA34_0==21) ) {
+                alt34=1;
             }
-            else if ( (LA35_0==39) ) {
-                alt35=2;
+            else if ( (LA34_0==39) ) {
+                alt34=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 35, 0, input);
+                    new NoViableAltException("", 34, 0, input);
 
                 throw nvae;
             }
-            switch (alt35) {
+            switch (alt34) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1607:2: (otherlv_0= '(' ( (lv_ownedParameters_1_0= ruleTypeParameterCS ) ) (otherlv_2= ',' ( (lv_ownedParameters_3_0= ruleTypeParameterCS ) ) )* otherlv_4= ')' )
                     {
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1607:2: (otherlv_0= '(' ( (lv_ownedParameters_1_0= ruleTypeParameterCS ) ) (otherlv_2= ',' ( (lv_ownedParameters_3_0= ruleTypeParameterCS ) ) )* otherlv_4= ')' )
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1607:4: otherlv_0= '(' ( (lv_ownedParameters_1_0= ruleTypeParameterCS ) ) (otherlv_2= ',' ( (lv_ownedParameters_3_0= ruleTypeParameterCS ) ) )* otherlv_4= ')'
                     {
-                    otherlv_0=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleTemplateSignatureCS3249); if (state.failed) return current;
+                    otherlv_0=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleTemplateSignatureCS3248); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_0, grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0());
@@ -4663,7 +4652,7 @@
                       	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3270);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3269);
                     lv_ownedParameters_1_0=ruleTypeParameterCS();
 
                     state._fsp--;
@@ -4688,21 +4677,21 @@
                     }
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1629:2: (otherlv_2= ',' ( (lv_ownedParameters_3_0= ruleTypeParameterCS ) ) )*
-                    loop33:
+                    loop32:
                     do {
-                        int alt33=2;
-                        int LA33_0 = input.LA(1);
+                        int alt32=2;
+                        int LA32_0 = input.LA(1);
 
-                        if ( (LA33_0==26) ) {
-                            alt33=1;
+                        if ( (LA32_0==26) ) {
+                            alt32=1;
                         }
 
 
-                        switch (alt33) {
+                        switch (alt32) {
                     	case 1 :
                     	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1629:4: otherlv_2= ',' ( (lv_ownedParameters_3_0= ruleTypeParameterCS ) )
                     	    {
-                    	    otherlv_2=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleTemplateSignatureCS3283); if (state.failed) return current;
+                    	    otherlv_2=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleTemplateSignatureCS3282); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	          	newLeafNode(otherlv_2, grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0());
@@ -4719,7 +4708,7 @@
                     	      	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_2_1_0()); 
                     	      	    
                     	    }
-                    	    pushFollow(FollowSets000.FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3304);
+                    	    pushFollow(FollowSets000.FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3303);
                     	    lv_ownedParameters_3_0=ruleTypeParameterCS();
 
                     	    state._fsp--;
@@ -4748,11 +4737,11 @@
                     	    break;
 
                     	default :
-                    	    break loop33;
+                    	    break loop32;
                         }
                     } while (true);
 
-                    otherlv_4=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleTemplateSignatureCS3318); if (state.failed) return current;
+                    otherlv_4=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleTemplateSignatureCS3317); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_4, grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3());
@@ -4770,7 +4759,7 @@
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1656:6: (otherlv_5= '<' ( (lv_ownedParameters_6_0= ruleTypeParameterCS ) ) (otherlv_7= ',' ( (lv_ownedParameters_8_0= ruleTypeParameterCS ) ) )* otherlv_9= '>' )
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1656:8: otherlv_5= '<' ( (lv_ownedParameters_6_0= ruleTypeParameterCS ) ) (otherlv_7= ',' ( (lv_ownedParameters_8_0= ruleTypeParameterCS ) ) )* otherlv_9= '>'
                     {
-                    otherlv_5=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleTemplateSignatureCS3338); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleTemplateSignatureCS3337); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_5, grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0());
@@ -4787,7 +4776,7 @@
                       	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3359);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3358);
                     lv_ownedParameters_6_0=ruleTypeParameterCS();
 
                     state._fsp--;
@@ -4812,21 +4801,21 @@
                     }
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1678:2: (otherlv_7= ',' ( (lv_ownedParameters_8_0= ruleTypeParameterCS ) ) )*
-                    loop34:
+                    loop33:
                     do {
-                        int alt34=2;
-                        int LA34_0 = input.LA(1);
+                        int alt33=2;
+                        int LA33_0 = input.LA(1);
 
-                        if ( (LA34_0==26) ) {
-                            alt34=1;
+                        if ( (LA33_0==26) ) {
+                            alt33=1;
                         }
 
 
-                        switch (alt34) {
+                        switch (alt33) {
                     	case 1 :
                     	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1678:4: otherlv_7= ',' ( (lv_ownedParameters_8_0= ruleTypeParameterCS ) )
                     	    {
-                    	    otherlv_7=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleTemplateSignatureCS3372); if (state.failed) return current;
+                    	    otherlv_7=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleTemplateSignatureCS3371); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	          	newLeafNode(otherlv_7, grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0());
@@ -4843,7 +4832,7 @@
                     	      	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_2_1_0()); 
                     	      	    
                     	    }
-                    	    pushFollow(FollowSets000.FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3393);
+                    	    pushFollow(FollowSets000.FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3392);
                     	    lv_ownedParameters_8_0=ruleTypeParameterCS();
 
                     	    state._fsp--;
@@ -4872,11 +4861,11 @@
                     	    break;
 
                     	default :
-                    	    break loop34;
+                    	    break loop33;
                         }
                     } while (true);
 
-                    otherlv_9=(Token)match(input,40,FollowSets000.FOLLOW_40_in_ruleTemplateSignatureCS3407); if (state.failed) return current;
+                    otherlv_9=(Token)match(input,40,FollowSets000.FOLLOW_40_in_ruleTemplateSignatureCS3406); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_9, grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3());
@@ -4925,7 +4914,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTypedRefCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypedRefCS_in_entryRuleTypedRefCS3444);
+            pushFollow(FollowSets000.FOLLOW_ruleTypedRefCS_in_entryRuleTypedRefCS3443);
             iv_ruleTypedRefCS=ruleTypedRefCS();
 
             state._fsp--;
@@ -4933,7 +4922,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTypedRefCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypedRefCS3454); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypedRefCS3453); if (state.failed) return current;
 
             }
 
@@ -4967,23 +4956,23 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1725:1: (this_TypeLiteralCS_0= ruleTypeLiteralCS | this_TypedTypeRefCS_1= ruleTypedTypeRefCS )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1725:1: (this_TypeLiteralCS_0= ruleTypeLiteralCS | this_TypedTypeRefCS_1= ruleTypedTypeRefCS )
-            int alt36=2;
-            int LA36_0 = input.LA(1);
+            int alt35=2;
+            int LA35_0 = input.LA(1);
 
-            if ( ((LA36_0>=42 && LA36_0<=51)||LA36_0==68||(LA36_0>=70 && LA36_0<=74)) ) {
-                alt36=1;
+            if ( ((LA35_0>=42 && LA35_0<=51)||LA35_0==68||(LA35_0>=70 && LA35_0<=74)) ) {
+                alt35=1;
             }
-            else if ( ((LA36_0>=RULE_SIMPLE_ID && LA36_0<=RULE_ESCAPED_ID)||LA36_0==28||(LA36_0>=30 && LA36_0<=31)) ) {
-                alt36=2;
+            else if ( ((LA35_0>=RULE_SIMPLE_ID && LA35_0<=RULE_ESCAPED_ID)||LA35_0==28||(LA35_0>=30 && LA35_0<=31)) ) {
+                alt35=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 36, 0, input);
+                    new NoViableAltException("", 35, 0, input);
 
                 throw nvae;
             }
-            switch (alt36) {
+            switch (alt35) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1726:2: this_TypeLiteralCS_0= ruleTypeLiteralCS
                     {
@@ -4997,7 +4986,7 @@
                               newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypeLiteralCSParserRuleCall_0()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralCS_in_ruleTypedRefCS3504);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralCS_in_ruleTypedRefCS3503);
                     this_TypeLiteralCS_0=ruleTypeLiteralCS();
 
                     state._fsp--;
@@ -5024,7 +5013,7 @@
                               newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypedTypeRefCS_in_ruleTypedRefCS3534);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypedTypeRefCS_in_ruleTypedRefCS3533);
                     this_TypedTypeRefCS_1=ruleTypedTypeRefCS();
 
                     state._fsp--;
@@ -5075,7 +5064,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getUnrestrictedNameRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_entryRuleUnrestrictedName3570);
+            pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_entryRuleUnrestrictedName3569);
             iv_ruleUnrestrictedName=ruleUnrestrictedName();
 
             state._fsp--;
@@ -5083,7 +5072,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleUnrestrictedName.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUnrestrictedName3581); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUnrestrictedName3580); if (state.failed) return current;
 
             }
 
@@ -5116,38 +5105,38 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1771:1: (this_EssentialOCLUnrestrictedName_0= ruleEssentialOCLUnrestrictedName | kw= 'import' | kw= 'include' | kw= 'library' )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1771:1: (this_EssentialOCLUnrestrictedName_0= ruleEssentialOCLUnrestrictedName | kw= 'import' | kw= 'include' | kw= 'library' )
-            int alt37=4;
+            int alt36=4;
             switch ( input.LA(1) ) {
             case RULE_SIMPLE_ID:
             case RULE_ESCAPED_ID:
                 {
-                alt37=1;
+                alt36=1;
                 }
                 break;
             case 28:
                 {
-                alt37=2;
+                alt36=2;
                 }
                 break;
             case 30:
                 {
-                alt37=3;
+                alt36=3;
                 }
                 break;
             case 31:
                 {
-                alt37=4;
+                alt36=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 37, 0, input);
+                    new NoViableAltException("", 36, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt37) {
+            switch (alt36) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1772:5: this_EssentialOCLUnrestrictedName_0= ruleEssentialOCLUnrestrictedName
                     {
@@ -5156,7 +5145,7 @@
                               newCompositeNode(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall_0()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLUnrestrictedName_in_ruleUnrestrictedName3628);
+                    pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLUnrestrictedName_in_ruleUnrestrictedName3627);
                     this_EssentialOCLUnrestrictedName_0=ruleEssentialOCLUnrestrictedName();
 
                     state._fsp--;
@@ -5177,7 +5166,7 @@
                 case 2 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1784:2: kw= 'import'
                     {
-                    kw=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleUnrestrictedName3652); if (state.failed) return current;
+                    kw=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleUnrestrictedName3651); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5190,7 +5179,7 @@
                 case 3 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1791:2: kw= 'include'
                     {
-                    kw=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleUnrestrictedName3671); if (state.failed) return current;
+                    kw=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleUnrestrictedName3670); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5203,7 +5192,7 @@
                 case 4 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1798:2: kw= 'library'
                     {
-                    kw=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleUnrestrictedName3690); if (state.failed) return current;
+                    kw=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleUnrestrictedName3689); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5250,7 +5239,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNavigatingArgExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNavigatingArgExpCS_in_entryRuleNavigatingArgExpCS3730);
+            pushFollow(FollowSets000.FOLLOW_ruleNavigatingArgExpCS_in_entryRuleNavigatingArgExpCS3729);
             iv_ruleNavigatingArgExpCS=ruleNavigatingArgExpCS();
 
             state._fsp--;
@@ -5258,7 +5247,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleNavigatingArgExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNavigatingArgExpCS3740); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNavigatingArgExpCS3739); if (state.failed) return current;
 
             }
 
@@ -5291,23 +5280,23 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1824:1: ( ( () otherlv_1= '?' ) | this_ExpCS_2= ruleExpCS )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1824:1: ( ( () otherlv_1= '?' ) | this_ExpCS_2= ruleExpCS )
-            int alt38=2;
-            int LA38_0 = input.LA(1);
+            int alt37=2;
+            int LA37_0 = input.LA(1);
 
-            if ( (LA38_0==41) ) {
-                alt38=1;
+            if ( (LA37_0==41) ) {
+                alt37=1;
             }
-            else if ( ((LA38_0>=RULE_SIMPLE_ID && LA38_0<=RULE_SINGLE_QUOTED_STRING)||LA38_0==21||LA38_0==28||(LA38_0>=30 && LA38_0<=31)||(LA38_0>=42 && LA38_0<=54)||LA38_0==68||(LA38_0>=70 && LA38_0<=74)||(LA38_0>=79 && LA38_0<=83)||LA38_0==90||(LA38_0>=95 && LA38_0<=96)) ) {
-                alt38=2;
+            else if ( ((LA37_0>=RULE_SIMPLE_ID && LA37_0<=RULE_SINGLE_QUOTED_STRING)||LA37_0==21||LA37_0==28||(LA37_0>=30 && LA37_0<=31)||(LA37_0>=42 && LA37_0<=54)||LA37_0==68||(LA37_0>=70 && LA37_0<=74)||(LA37_0>=79 && LA37_0<=83)||LA37_0==90||(LA37_0>=95 && LA37_0<=96)) ) {
+                alt37=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 38, 0, input);
+                    new NoViableAltException("", 37, 0, input);
 
                 throw nvae;
             }
-            switch (alt38) {
+            switch (alt37) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1824:2: ( () otherlv_1= '?' )
                     {
@@ -5332,7 +5321,7 @@
 
                     }
 
-                    otherlv_1=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleNavigatingArgExpCS3790); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleNavigatingArgExpCS3789); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_1, grammarAccess.getNavigatingArgExpCSAccess().getQuestionMarkKeyword_0_1());
@@ -5357,7 +5346,7 @@
                               newCompositeNode(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall_1()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNavigatingArgExpCS3822);
+                    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNavigatingArgExpCS3821);
                     this_ExpCS_2=ruleExpCS();
 
                     state._fsp--;
@@ -5408,7 +5397,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNavigationOperatorNameRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNavigationOperatorName_in_entryRuleNavigationOperatorName3858);
+            pushFollow(FollowSets000.FOLLOW_ruleNavigationOperatorName_in_entryRuleNavigationOperatorName3857);
             iv_ruleNavigationOperatorName=ruleNavigationOperatorName();
 
             state._fsp--;
@@ -5416,7 +5405,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleNavigationOperatorName.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNavigationOperatorName3869); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNavigationOperatorName3868); if (state.failed) return current;
 
             }
 
@@ -5450,23 +5439,23 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1871:1: (this_EssentialOCLNavigationOperatorName_0= ruleEssentialOCLNavigationOperatorName | this_CompleteOCLNavigationOperatorName_1= ruleCompleteOCLNavigationOperatorName )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1871:1: (this_EssentialOCLNavigationOperatorName_0= ruleEssentialOCLNavigationOperatorName | this_CompleteOCLNavigationOperatorName_1= ruleCompleteOCLNavigationOperatorName )
-            int alt39=2;
-            int LA39_0 = input.LA(1);
+            int alt38=2;
+            int LA38_0 = input.LA(1);
 
-            if ( ((LA39_0>=64 && LA39_0<=67)) ) {
-                alt39=1;
+            if ( ((LA38_0>=64 && LA38_0<=67)) ) {
+                alt38=1;
             }
-            else if ( ((LA39_0>=17 && LA39_0<=18)) ) {
-                alt39=2;
+            else if ( ((LA38_0>=17 && LA38_0<=18)) ) {
+                alt38=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 39, 0, input);
+                    new NoViableAltException("", 38, 0, input);
 
                 throw nvae;
             }
-            switch (alt39) {
+            switch (alt38) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1872:5: this_EssentialOCLNavigationOperatorName_0= ruleEssentialOCLNavigationOperatorName
                     {
@@ -5475,7 +5464,7 @@
                               newCompositeNode(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall_0()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLNavigationOperatorName_in_ruleNavigationOperatorName3916);
+                    pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLNavigationOperatorName_in_ruleNavigationOperatorName3915);
                     this_EssentialOCLNavigationOperatorName_0=ruleEssentialOCLNavigationOperatorName();
 
                     state._fsp--;
@@ -5501,7 +5490,7 @@
                               newCompositeNode(grammarAccess.getNavigationOperatorNameAccess().getCompleteOCLNavigationOperatorNameParserRuleCall_1()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleCompleteOCLNavigationOperatorName_in_ruleNavigationOperatorName3949);
+                    pushFollow(FollowSets000.FOLLOW_ruleCompleteOCLNavigationOperatorName_in_ruleNavigationOperatorName3948);
                     this_CompleteOCLNavigationOperatorName_1=ruleCompleteOCLNavigationOperatorName();
 
                     state._fsp--;
@@ -5556,7 +5545,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPrimitiveTypeIdentifierRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_rulePrimitiveTypeIdentifier_in_entryRulePrimitiveTypeIdentifier3995);
+            pushFollow(FollowSets000.FOLLOW_rulePrimitiveTypeIdentifier_in_entryRulePrimitiveTypeIdentifier3994);
             iv_rulePrimitiveTypeIdentifier=rulePrimitiveTypeIdentifier();
 
             state._fsp--;
@@ -5564,7 +5553,7 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePrimitiveTypeIdentifier.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePrimitiveTypeIdentifier4006); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePrimitiveTypeIdentifier4005); if (state.failed) return current;
 
             }
 
@@ -5595,71 +5584,71 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1915:1: (kw= 'Boolean' | kw= 'Integer' | kw= 'Real' | kw= 'String' | kw= 'UnlimitedNatural' | kw= 'OclAny' | kw= 'OclInvalid' | kw= 'OclMessage' | kw= 'OclState' | kw= 'OclVoid' )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1915:1: (kw= 'Boolean' | kw= 'Integer' | kw= 'Real' | kw= 'String' | kw= 'UnlimitedNatural' | kw= 'OclAny' | kw= 'OclInvalid' | kw= 'OclMessage' | kw= 'OclState' | kw= 'OclVoid' )
-            int alt40=10;
+            int alt39=10;
             switch ( input.LA(1) ) {
             case 42:
                 {
-                alt40=1;
+                alt39=1;
                 }
                 break;
             case 43:
                 {
-                alt40=2;
+                alt39=2;
                 }
                 break;
             case 44:
                 {
-                alt40=3;
+                alt39=3;
                 }
                 break;
             case 45:
                 {
-                alt40=4;
+                alt39=4;
                 }
                 break;
             case 46:
                 {
-                alt40=5;
+                alt39=5;
                 }
                 break;
             case 47:
                 {
-                alt40=6;
+                alt39=6;
                 }
                 break;
             case 48:
                 {
-                alt40=7;
+                alt39=7;
                 }
                 break;
             case 49:
                 {
-                alt40=8;
+                alt39=8;
                 }
                 break;
             case 50:
                 {
-                alt40=9;
+                alt39=9;
                 }
                 break;
             case 51:
                 {
-                alt40=10;
+                alt39=10;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 40, 0, input);
+                    new NoViableAltException("", 39, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt40) {
+            switch (alt39) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1916:2: kw= 'Boolean'
                     {
-                    kw=(Token)match(input,42,FollowSets000.FOLLOW_42_in_rulePrimitiveTypeIdentifier4044); if (state.failed) return current;
+                    kw=(Token)match(input,42,FollowSets000.FOLLOW_42_in_rulePrimitiveTypeIdentifier4043); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5672,7 +5661,7 @@
                 case 2 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1923:2: kw= 'Integer'
                     {
-                    kw=(Token)match(input,43,FollowSets000.FOLLOW_43_in_rulePrimitiveTypeIdentifier4063); if (state.failed) return current;
+                    kw=(Token)match(input,43,FollowSets000.FOLLOW_43_in_rulePrimitiveTypeIdentifier4062); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5685,7 +5674,7 @@
                 case 3 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1930:2: kw= 'Real'
                     {
-                    kw=(Token)match(input,44,FollowSets000.FOLLOW_44_in_rulePrimitiveTypeIdentifier4082); if (state.failed) return current;
+                    kw=(Token)match(input,44,FollowSets000.FOLLOW_44_in_rulePrimitiveTypeIdentifier4081); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5698,7 +5687,7 @@
                 case 4 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1937:2: kw= 'String'
                     {
-                    kw=(Token)match(input,45,FollowSets000.FOLLOW_45_in_rulePrimitiveTypeIdentifier4101); if (state.failed) return current;
+                    kw=(Token)match(input,45,FollowSets000.FOLLOW_45_in_rulePrimitiveTypeIdentifier4100); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5711,7 +5700,7 @@
                 case 5 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1944:2: kw= 'UnlimitedNatural'
                     {
-                    kw=(Token)match(input,46,FollowSets000.FOLLOW_46_in_rulePrimitiveTypeIdentifier4120); if (state.failed) return current;
+                    kw=(Token)match(input,46,FollowSets000.FOLLOW_46_in_rulePrimitiveTypeIdentifier4119); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5724,7 +5713,7 @@
                 case 6 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1951:2: kw= 'OclAny'
                     {
-                    kw=(Token)match(input,47,FollowSets000.FOLLOW_47_in_rulePrimitiveTypeIdentifier4139); if (state.failed) return current;
+                    kw=(Token)match(input,47,FollowSets000.FOLLOW_47_in_rulePrimitiveTypeIdentifier4138); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5737,7 +5726,7 @@
                 case 7 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1958:2: kw= 'OclInvalid'
                     {
-                    kw=(Token)match(input,48,FollowSets000.FOLLOW_48_in_rulePrimitiveTypeIdentifier4158); if (state.failed) return current;
+                    kw=(Token)match(input,48,FollowSets000.FOLLOW_48_in_rulePrimitiveTypeIdentifier4157); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5750,7 +5739,7 @@
                 case 8 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1965:2: kw= 'OclMessage'
                     {
-                    kw=(Token)match(input,49,FollowSets000.FOLLOW_49_in_rulePrimitiveTypeIdentifier4177); if (state.failed) return current;
+                    kw=(Token)match(input,49,FollowSets000.FOLLOW_49_in_rulePrimitiveTypeIdentifier4176); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5763,7 +5752,7 @@
                 case 9 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1972:2: kw= 'OclState'
                     {
-                    kw=(Token)match(input,50,FollowSets000.FOLLOW_50_in_rulePrimitiveTypeIdentifier4196); if (state.failed) return current;
+                    kw=(Token)match(input,50,FollowSets000.FOLLOW_50_in_rulePrimitiveTypeIdentifier4195); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5776,7 +5765,7 @@
                 case 10 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:1979:2: kw= 'OclVoid'
                     {
-                    kw=(Token)match(input,51,FollowSets000.FOLLOW_51_in_rulePrimitiveTypeIdentifier4215); if (state.failed) return current;
+                    kw=(Token)match(input,51,FollowSets000.FOLLOW_51_in_rulePrimitiveTypeIdentifier4214); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5823,7 +5812,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLUnaryOperatorName_in_entryRuleEssentialOCLUnaryOperatorName4260);
+            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLUnaryOperatorName_in_entryRuleEssentialOCLUnaryOperatorName4259);
             iv_ruleEssentialOCLUnaryOperatorName=ruleEssentialOCLUnaryOperatorName();
 
             state._fsp--;
@@ -5831,7 +5820,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleEssentialOCLUnaryOperatorName.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEssentialOCLUnaryOperatorName4271); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEssentialOCLUnaryOperatorName4270); if (state.failed) return current;
 
             }
 
@@ -5862,27 +5851,27 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2009:1: (kw= '-' | kw= 'not' )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2009:1: (kw= '-' | kw= 'not' )
-            int alt41=2;
-            int LA41_0 = input.LA(1);
+            int alt40=2;
+            int LA40_0 = input.LA(1);
 
-            if ( (LA41_0==52) ) {
-                alt41=1;
+            if ( (LA40_0==52) ) {
+                alt40=1;
             }
-            else if ( (LA41_0==53) ) {
-                alt41=2;
+            else if ( (LA40_0==53) ) {
+                alt40=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 41, 0, input);
+                    new NoViableAltException("", 40, 0, input);
 
                 throw nvae;
             }
-            switch (alt41) {
+            switch (alt40) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2010:2: kw= '-'
                     {
-                    kw=(Token)match(input,52,FollowSets000.FOLLOW_52_in_ruleEssentialOCLUnaryOperatorName4309); if (state.failed) return current;
+                    kw=(Token)match(input,52,FollowSets000.FOLLOW_52_in_ruleEssentialOCLUnaryOperatorName4308); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5895,7 +5884,7 @@
                 case 2 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2017:2: kw= 'not'
                     {
-                    kw=(Token)match(input,53,FollowSets000.FOLLOW_53_in_ruleEssentialOCLUnaryOperatorName4328); if (state.failed) return current;
+                    kw=(Token)match(input,53,FollowSets000.FOLLOW_53_in_ruleEssentialOCLUnaryOperatorName4327); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -5942,7 +5931,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getEssentialOCLInfixOperatorNameRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLInfixOperatorName_in_entryRuleEssentialOCLInfixOperatorName4369);
+            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLInfixOperatorName_in_entryRuleEssentialOCLInfixOperatorName4368);
             iv_ruleEssentialOCLInfixOperatorName=ruleEssentialOCLInfixOperatorName();
 
             state._fsp--;
@@ -5950,7 +5939,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleEssentialOCLInfixOperatorName.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEssentialOCLInfixOperatorName4380); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEssentialOCLInfixOperatorName4379); if (state.failed) return current;
 
             }
 
@@ -5981,91 +5970,91 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2043:1: (kw= '*' | kw= '/' | kw= '+' | kw= '-' | kw= '>' | kw= '<' | kw= '>=' | kw= '<=' | kw= '=' | kw= '<>' | kw= 'and' | kw= 'or' | kw= 'xor' | kw= 'implies' )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2043:1: (kw= '*' | kw= '/' | kw= '+' | kw= '-' | kw= '>' | kw= '<' | kw= '>=' | kw= '<=' | kw= '=' | kw= '<>' | kw= 'and' | kw= 'or' | kw= 'xor' | kw= 'implies' )
-            int alt42=14;
+            int alt41=14;
             switch ( input.LA(1) ) {
             case 54:
                 {
-                alt42=1;
+                alt41=1;
                 }
                 break;
             case 55:
                 {
-                alt42=2;
+                alt41=2;
                 }
                 break;
             case 56:
                 {
-                alt42=3;
+                alt41=3;
                 }
                 break;
             case 52:
                 {
-                alt42=4;
+                alt41=4;
                 }
                 break;
             case 40:
                 {
-                alt42=5;
+                alt41=5;
                 }
                 break;
             case 39:
                 {
-                alt42=6;
+                alt41=6;
                 }
                 break;
             case 57:
                 {
-                alt42=7;
+                alt41=7;
                 }
                 break;
             case 58:
                 {
-                alt42=8;
+                alt41=8;
                 }
                 break;
             case 27:
                 {
-                alt42=9;
+                alt41=9;
                 }
                 break;
             case 59:
                 {
-                alt42=10;
+                alt41=10;
                 }
                 break;
             case 60:
                 {
-                alt42=11;
+                alt41=11;
                 }
                 break;
             case 61:
                 {
-                alt42=12;
+                alt41=12;
                 }
                 break;
             case 62:
                 {
-                alt42=13;
+                alt41=13;
                 }
                 break;
             case 63:
                 {
-                alt42=14;
+                alt41=14;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 42, 0, input);
+                    new NoViableAltException("", 41, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt42) {
+            switch (alt41) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2044:2: kw= '*'
                     {
-                    kw=(Token)match(input,54,FollowSets000.FOLLOW_54_in_ruleEssentialOCLInfixOperatorName4418); if (state.failed) return current;
+                    kw=(Token)match(input,54,FollowSets000.FOLLOW_54_in_ruleEssentialOCLInfixOperatorName4417); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6078,7 +6067,7 @@
                 case 2 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2051:2: kw= '/'
                     {
-                    kw=(Token)match(input,55,FollowSets000.FOLLOW_55_in_ruleEssentialOCLInfixOperatorName4437); if (state.failed) return current;
+                    kw=(Token)match(input,55,FollowSets000.FOLLOW_55_in_ruleEssentialOCLInfixOperatorName4436); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6091,7 +6080,7 @@
                 case 3 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2058:2: kw= '+'
                     {
-                    kw=(Token)match(input,56,FollowSets000.FOLLOW_56_in_ruleEssentialOCLInfixOperatorName4456); if (state.failed) return current;
+                    kw=(Token)match(input,56,FollowSets000.FOLLOW_56_in_ruleEssentialOCLInfixOperatorName4455); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6104,7 +6093,7 @@
                 case 4 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2065:2: kw= '-'
                     {
-                    kw=(Token)match(input,52,FollowSets000.FOLLOW_52_in_ruleEssentialOCLInfixOperatorName4475); if (state.failed) return current;
+                    kw=(Token)match(input,52,FollowSets000.FOLLOW_52_in_ruleEssentialOCLInfixOperatorName4474); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6117,7 +6106,7 @@
                 case 5 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2072:2: kw= '>'
                     {
-                    kw=(Token)match(input,40,FollowSets000.FOLLOW_40_in_ruleEssentialOCLInfixOperatorName4494); if (state.failed) return current;
+                    kw=(Token)match(input,40,FollowSets000.FOLLOW_40_in_ruleEssentialOCLInfixOperatorName4493); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6130,7 +6119,7 @@
                 case 6 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2079:2: kw= '<'
                     {
-                    kw=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleEssentialOCLInfixOperatorName4513); if (state.failed) return current;
+                    kw=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleEssentialOCLInfixOperatorName4512); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6143,7 +6132,7 @@
                 case 7 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2086:2: kw= '>='
                     {
-                    kw=(Token)match(input,57,FollowSets000.FOLLOW_57_in_ruleEssentialOCLInfixOperatorName4532); if (state.failed) return current;
+                    kw=(Token)match(input,57,FollowSets000.FOLLOW_57_in_ruleEssentialOCLInfixOperatorName4531); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6156,7 +6145,7 @@
                 case 8 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2093:2: kw= '<='
                     {
-                    kw=(Token)match(input,58,FollowSets000.FOLLOW_58_in_ruleEssentialOCLInfixOperatorName4551); if (state.failed) return current;
+                    kw=(Token)match(input,58,FollowSets000.FOLLOW_58_in_ruleEssentialOCLInfixOperatorName4550); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6169,7 +6158,7 @@
                 case 9 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2100:2: kw= '='
                     {
-                    kw=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleEssentialOCLInfixOperatorName4570); if (state.failed) return current;
+                    kw=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleEssentialOCLInfixOperatorName4569); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6182,7 +6171,7 @@
                 case 10 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2107:2: kw= '<>'
                     {
-                    kw=(Token)match(input,59,FollowSets000.FOLLOW_59_in_ruleEssentialOCLInfixOperatorName4589); if (state.failed) return current;
+                    kw=(Token)match(input,59,FollowSets000.FOLLOW_59_in_ruleEssentialOCLInfixOperatorName4588); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6195,7 +6184,7 @@
                 case 11 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2114:2: kw= 'and'
                     {
-                    kw=(Token)match(input,60,FollowSets000.FOLLOW_60_in_ruleEssentialOCLInfixOperatorName4608); if (state.failed) return current;
+                    kw=(Token)match(input,60,FollowSets000.FOLLOW_60_in_ruleEssentialOCLInfixOperatorName4607); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6208,7 +6197,7 @@
                 case 12 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2121:2: kw= 'or'
                     {
-                    kw=(Token)match(input,61,FollowSets000.FOLLOW_61_in_ruleEssentialOCLInfixOperatorName4627); if (state.failed) return current;
+                    kw=(Token)match(input,61,FollowSets000.FOLLOW_61_in_ruleEssentialOCLInfixOperatorName4626); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6221,7 +6210,7 @@
                 case 13 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2128:2: kw= 'xor'
                     {
-                    kw=(Token)match(input,62,FollowSets000.FOLLOW_62_in_ruleEssentialOCLInfixOperatorName4646); if (state.failed) return current;
+                    kw=(Token)match(input,62,FollowSets000.FOLLOW_62_in_ruleEssentialOCLInfixOperatorName4645); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6234,7 +6223,7 @@
                 case 14 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2135:2: kw= 'implies'
                     {
-                    kw=(Token)match(input,63,FollowSets000.FOLLOW_63_in_ruleEssentialOCLInfixOperatorName4665); if (state.failed) return current;
+                    kw=(Token)match(input,63,FollowSets000.FOLLOW_63_in_ruleEssentialOCLInfixOperatorName4664); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6281,7 +6270,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLNavigationOperatorName_in_entryRuleEssentialOCLNavigationOperatorName4706);
+            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLNavigationOperatorName_in_entryRuleEssentialOCLNavigationOperatorName4705);
             iv_ruleEssentialOCLNavigationOperatorName=ruleEssentialOCLNavigationOperatorName();
 
             state._fsp--;
@@ -6289,7 +6278,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleEssentialOCLNavigationOperatorName.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEssentialOCLNavigationOperatorName4717); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEssentialOCLNavigationOperatorName4716); if (state.failed) return current;
 
             }
 
@@ -6320,41 +6309,41 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2161:1: (kw= '.' | kw= '->' | kw= '?.' | kw= '?->' )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2161:1: (kw= '.' | kw= '->' | kw= '?.' | kw= '?->' )
-            int alt43=4;
+            int alt42=4;
             switch ( input.LA(1) ) {
             case 64:
                 {
-                alt43=1;
+                alt42=1;
                 }
                 break;
             case 65:
                 {
-                alt43=2;
+                alt42=2;
                 }
                 break;
             case 66:
                 {
-                alt43=3;
+                alt42=3;
                 }
                 break;
             case 67:
                 {
-                alt43=4;
+                alt42=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 43, 0, input);
+                    new NoViableAltException("", 42, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt43) {
+            switch (alt42) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2162:2: kw= '.'
                     {
-                    kw=(Token)match(input,64,FollowSets000.FOLLOW_64_in_ruleEssentialOCLNavigationOperatorName4755); if (state.failed) return current;
+                    kw=(Token)match(input,64,FollowSets000.FOLLOW_64_in_ruleEssentialOCLNavigationOperatorName4754); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6367,7 +6356,7 @@
                 case 2 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2169:2: kw= '->'
                     {
-                    kw=(Token)match(input,65,FollowSets000.FOLLOW_65_in_ruleEssentialOCLNavigationOperatorName4774); if (state.failed) return current;
+                    kw=(Token)match(input,65,FollowSets000.FOLLOW_65_in_ruleEssentialOCLNavigationOperatorName4773); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6380,7 +6369,7 @@
                 case 3 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2176:2: kw= '?.'
                     {
-                    kw=(Token)match(input,66,FollowSets000.FOLLOW_66_in_ruleEssentialOCLNavigationOperatorName4793); if (state.failed) return current;
+                    kw=(Token)match(input,66,FollowSets000.FOLLOW_66_in_ruleEssentialOCLNavigationOperatorName4792); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6393,7 +6382,7 @@
                 case 4 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2183:2: kw= '?->'
                     {
-                    kw=(Token)match(input,67,FollowSets000.FOLLOW_67_in_ruleEssentialOCLNavigationOperatorName4812); if (state.failed) return current;
+                    kw=(Token)match(input,67,FollowSets000.FOLLOW_67_in_ruleEssentialOCLNavigationOperatorName4811); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -6440,7 +6429,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getBinaryOperatorNameRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleBinaryOperatorName_in_entryRuleBinaryOperatorName4853);
+            pushFollow(FollowSets000.FOLLOW_ruleBinaryOperatorName_in_entryRuleBinaryOperatorName4852);
             iv_ruleBinaryOperatorName=ruleBinaryOperatorName();
 
             state._fsp--;
@@ -6448,7 +6437,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleBinaryOperatorName.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBinaryOperatorName4864); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBinaryOperatorName4863); if (state.failed) return current;
 
             }
 
@@ -6482,23 +6471,23 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2209:1: (this_InfixOperatorName_0= ruleInfixOperatorName | this_NavigationOperatorName_1= ruleNavigationOperatorName )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2209:1: (this_InfixOperatorName_0= ruleInfixOperatorName | this_NavigationOperatorName_1= ruleNavigationOperatorName )
-            int alt44=2;
-            int LA44_0 = input.LA(1);
+            int alt43=2;
+            int LA43_0 = input.LA(1);
 
-            if ( (LA44_0==27||(LA44_0>=39 && LA44_0<=40)||LA44_0==52||(LA44_0>=54 && LA44_0<=63)) ) {
-                alt44=1;
+            if ( (LA43_0==27||(LA43_0>=39 && LA43_0<=40)||LA43_0==52||(LA43_0>=54 && LA43_0<=63)) ) {
+                alt43=1;
             }
-            else if ( ((LA44_0>=17 && LA44_0<=18)||(LA44_0>=64 && LA44_0<=67)) ) {
-                alt44=2;
+            else if ( ((LA43_0>=17 && LA43_0<=18)||(LA43_0>=64 && LA43_0<=67)) ) {
+                alt43=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 44, 0, input);
+                    new NoViableAltException("", 43, 0, input);
 
                 throw nvae;
             }
-            switch (alt44) {
+            switch (alt43) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2210:5: this_InfixOperatorName_0= ruleInfixOperatorName
                     {
@@ -6507,7 +6496,7 @@
                               newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleInfixOperatorName_in_ruleBinaryOperatorName4911);
+                    pushFollow(FollowSets000.FOLLOW_ruleInfixOperatorName_in_ruleBinaryOperatorName4910);
                     this_InfixOperatorName_0=ruleInfixOperatorName();
 
                     state._fsp--;
@@ -6533,7 +6522,7 @@
                               newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleNavigationOperatorName_in_ruleBinaryOperatorName4944);
+                    pushFollow(FollowSets000.FOLLOW_ruleNavigationOperatorName_in_ruleBinaryOperatorName4943);
                     this_NavigationOperatorName_1=ruleNavigationOperatorName();
 
                     state._fsp--;
@@ -6588,7 +6577,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getInfixOperatorNameRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleInfixOperatorName_in_entryRuleInfixOperatorName4990);
+            pushFollow(FollowSets000.FOLLOW_ruleInfixOperatorName_in_entryRuleInfixOperatorName4989);
             iv_ruleInfixOperatorName=ruleInfixOperatorName();
 
             state._fsp--;
@@ -6596,7 +6585,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleInfixOperatorName.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInfixOperatorName5001); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInfixOperatorName5000); if (state.failed) return current;
 
             }
 
@@ -6632,7 +6621,7 @@
                       newCompositeNode(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); 
                   
             }
-            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLInfixOperatorName_in_ruleInfixOperatorName5047);
+            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLInfixOperatorName_in_ruleInfixOperatorName5046);
             this_EssentialOCLInfixOperatorName_0=ruleEssentialOCLInfixOperatorName();
 
             state._fsp--;
@@ -6681,7 +6670,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getUnaryOperatorNameRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleUnaryOperatorName_in_entryRuleUnaryOperatorName5092);
+            pushFollow(FollowSets000.FOLLOW_ruleUnaryOperatorName_in_entryRuleUnaryOperatorName5091);
             iv_ruleUnaryOperatorName=ruleUnaryOperatorName();
 
             state._fsp--;
@@ -6689,7 +6678,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleUnaryOperatorName.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUnaryOperatorName5103); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUnaryOperatorName5102); if (state.failed) return current;
 
             }
 
@@ -6725,7 +6714,7 @@
                       newCompositeNode(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); 
                   
             }
-            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLUnaryOperatorName_in_ruleUnaryOperatorName5149);
+            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLUnaryOperatorName_in_ruleUnaryOperatorName5148);
             this_EssentialOCLUnaryOperatorName_0=ruleEssentialOCLUnaryOperatorName();
 
             state._fsp--;
@@ -6774,7 +6763,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLUnrestrictedName_in_entryRuleEssentialOCLUnrestrictedName5194);
+            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLUnrestrictedName_in_entryRuleEssentialOCLUnrestrictedName5193);
             iv_ruleEssentialOCLUnrestrictedName=ruleEssentialOCLUnrestrictedName();
 
             state._fsp--;
@@ -6782,7 +6771,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleEssentialOCLUnrestrictedName.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEssentialOCLUnrestrictedName5205); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEssentialOCLUnrestrictedName5204); if (state.failed) return current;
 
             }
 
@@ -6818,7 +6807,7 @@
                       newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); 
                   
             }
-            pushFollow(FollowSets000.FOLLOW_ruleIdentifier_in_ruleEssentialOCLUnrestrictedName5251);
+            pushFollow(FollowSets000.FOLLOW_ruleIdentifier_in_ruleEssentialOCLUnrestrictedName5250);
             this_Identifier_0=ruleIdentifier();
 
             state._fsp--;
@@ -6867,7 +6856,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLUnreservedName_in_entryRuleEssentialOCLUnreservedName5296);
+            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLUnreservedName_in_entryRuleEssentialOCLUnreservedName5295);
             iv_ruleEssentialOCLUnreservedName=ruleEssentialOCLUnreservedName();
 
             state._fsp--;
@@ -6875,7 +6864,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleEssentialOCLUnreservedName.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEssentialOCLUnreservedName5307); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEssentialOCLUnreservedName5306); if (state.failed) return current;
 
             }
 
@@ -6912,7 +6901,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2349:1: (this_UnrestrictedName_0= ruleUnrestrictedName | this_CollectionTypeIdentifier_1= ruleCollectionTypeIdentifier | this_PrimitiveTypeIdentifier_2= rulePrimitiveTypeIdentifier | kw= 'Tuple' )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2349:1: (this_UnrestrictedName_0= ruleUnrestrictedName | this_CollectionTypeIdentifier_1= ruleCollectionTypeIdentifier | this_PrimitiveTypeIdentifier_2= rulePrimitiveTypeIdentifier | kw= 'Tuple' )
-            int alt45=4;
+            int alt44=4;
             switch ( input.LA(1) ) {
             case RULE_SIMPLE_ID:
             case RULE_ESCAPED_ID:
@@ -6920,7 +6909,7 @@
             case 30:
             case 31:
                 {
-                alt45=1;
+                alt44=1;
                 }
                 break;
             case 70:
@@ -6929,7 +6918,7 @@
             case 73:
             case 74:
                 {
-                alt45=2;
+                alt44=2;
                 }
                 break;
             case 42:
@@ -6943,23 +6932,23 @@
             case 50:
             case 51:
                 {
-                alt45=3;
+                alt44=3;
                 }
                 break;
             case 68:
                 {
-                alt45=4;
+                alt44=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 45, 0, input);
+                    new NoViableAltException("", 44, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt45) {
+            switch (alt44) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2350:5: this_UnrestrictedName_0= ruleUnrestrictedName
                     {
@@ -6968,7 +6957,7 @@
                               newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleEssentialOCLUnreservedName5354);
+                    pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleEssentialOCLUnreservedName5353);
                     this_UnrestrictedName_0=ruleUnrestrictedName();
 
                     state._fsp--;
@@ -6994,7 +6983,7 @@
                               newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleCollectionTypeIdentifier_in_ruleEssentialOCLUnreservedName5387);
+                    pushFollow(FollowSets000.FOLLOW_ruleCollectionTypeIdentifier_in_ruleEssentialOCLUnreservedName5386);
                     this_CollectionTypeIdentifier_1=ruleCollectionTypeIdentifier();
 
                     state._fsp--;
@@ -7020,7 +7009,7 @@
                               newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_rulePrimitiveTypeIdentifier_in_ruleEssentialOCLUnreservedName5420);
+                    pushFollow(FollowSets000.FOLLOW_rulePrimitiveTypeIdentifier_in_ruleEssentialOCLUnreservedName5419);
                     this_PrimitiveTypeIdentifier_2=rulePrimitiveTypeIdentifier();
 
                     state._fsp--;
@@ -7041,7 +7030,7 @@
                 case 4 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2386:2: kw= 'Tuple'
                     {
-                    kw=(Token)match(input,68,FollowSets000.FOLLOW_68_in_ruleEssentialOCLUnreservedName5444); if (state.failed) return current;
+                    kw=(Token)match(input,68,FollowSets000.FOLLOW_68_in_ruleEssentialOCLUnreservedName5443); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -7088,7 +7077,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getUnreservedNameRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleUnreservedName_in_entryRuleUnreservedName5485);
+            pushFollow(FollowSets000.FOLLOW_ruleUnreservedName_in_entryRuleUnreservedName5484);
             iv_ruleUnreservedName=ruleUnreservedName();
 
             state._fsp--;
@@ -7096,7 +7085,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleUnreservedName.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUnreservedName5496); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUnreservedName5495); if (state.failed) return current;
 
             }
 
@@ -7132,7 +7121,7 @@
                       newCompositeNode(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); 
                   
             }
-            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLUnreservedName_in_ruleUnreservedName5542);
+            pushFollow(FollowSets000.FOLLOW_ruleEssentialOCLUnreservedName_in_ruleUnreservedName5541);
             this_EssentialOCLUnreservedName_0=ruleEssentialOCLUnreservedName();
 
             state._fsp--;
@@ -7181,7 +7170,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getURIPathNameCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleURIPathNameCS_in_entryRuleURIPathNameCS5586);
+            pushFollow(FollowSets000.FOLLOW_ruleURIPathNameCS_in_entryRuleURIPathNameCS5585);
             iv_ruleURIPathNameCS=ruleURIPathNameCS();
 
             state._fsp--;
@@ -7189,7 +7178,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleURIPathNameCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleURIPathNameCS5596); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleURIPathNameCS5595); if (state.failed) return current;
 
             }
 
@@ -7237,7 +7226,7 @@
               	        newCompositeNode(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsURIFirstPathElementCSParserRuleCall_0_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleURIFirstPathElementCS_in_ruleURIPathNameCS5642);
+            pushFollow(FollowSets000.FOLLOW_ruleURIFirstPathElementCS_in_ruleURIPathNameCS5641);
             lv_ownedPathElements_0_0=ruleURIFirstPathElementCS();
 
             state._fsp--;
@@ -7262,21 +7251,21 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2462:2: (otherlv_1= '::' ( (lv_ownedPathElements_2_0= ruleNextPathElementCS ) ) )*
-            loop46:
+            loop45:
             do {
-                int alt46=2;
-                int LA46_0 = input.LA(1);
+                int alt45=2;
+                int LA45_0 = input.LA(1);
 
-                if ( (LA46_0==69) ) {
-                    alt46=1;
+                if ( (LA45_0==69) ) {
+                    alt45=1;
                 }
 
 
-                switch (alt46) {
+                switch (alt45) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2462:4: otherlv_1= '::' ( (lv_ownedPathElements_2_0= ruleNextPathElementCS ) )
             	    {
-            	    otherlv_1=(Token)match(input,69,FollowSets000.FOLLOW_69_in_ruleURIPathNameCS5655); if (state.failed) return current;
+            	    otherlv_1=(Token)match(input,69,FollowSets000.FOLLOW_69_in_ruleURIPathNameCS5654); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	          	newLeafNode(otherlv_1, grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0());
@@ -7293,7 +7282,7 @@
             	      	        newCompositeNode(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 
             	      	    
             	    }
-            	    pushFollow(FollowSets000.FOLLOW_ruleNextPathElementCS_in_ruleURIPathNameCS5676);
+            	    pushFollow(FollowSets000.FOLLOW_ruleNextPathElementCS_in_ruleURIPathNameCS5675);
             	    lv_ownedPathElements_2_0=ruleNextPathElementCS();
 
             	    state._fsp--;
@@ -7322,7 +7311,7 @@
             	    break;
 
             	default :
-            	    break loop46;
+            	    break loop45;
                 }
             } while (true);
 
@@ -7363,7 +7352,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getURIFirstPathElementCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleURIFirstPathElementCS_in_entryRuleURIFirstPathElementCS5714);
+            pushFollow(FollowSets000.FOLLOW_ruleURIFirstPathElementCS_in_entryRuleURIFirstPathElementCS5713);
             iv_ruleURIFirstPathElementCS=ruleURIFirstPathElementCS();
 
             state._fsp--;
@@ -7371,7 +7360,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleURIFirstPathElementCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleURIFirstPathElementCS5724); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleURIFirstPathElementCS5723); if (state.failed) return current;
 
             }
 
@@ -7400,23 +7389,23 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2505:1: ( ( ( ruleUnrestrictedName ) ) | ( () ( ( ruleURI ) ) ) )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2505:1: ( ( ( ruleUnrestrictedName ) ) | ( () ( ( ruleURI ) ) ) )
-            int alt47=2;
-            int LA47_0 = input.LA(1);
+            int alt46=2;
+            int LA46_0 = input.LA(1);
 
-            if ( ((LA47_0>=RULE_SIMPLE_ID && LA47_0<=RULE_ESCAPED_ID)||LA47_0==28||(LA47_0>=30 && LA47_0<=31)) ) {
-                alt47=1;
+            if ( ((LA46_0>=RULE_SIMPLE_ID && LA46_0<=RULE_ESCAPED_ID)||LA46_0==28||(LA46_0>=30 && LA46_0<=31)) ) {
+                alt46=1;
             }
-            else if ( (LA47_0==RULE_SINGLE_QUOTED_STRING) ) {
-                alt47=2;
+            else if ( (LA46_0==RULE_SINGLE_QUOTED_STRING) ) {
+                alt46=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 47, 0, input);
+                    new NoViableAltException("", 46, 0, input);
 
                 throw nvae;
             }
-            switch (alt47) {
+            switch (alt46) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2505:2: ( ( ruleUnrestrictedName ) )
                     {
@@ -7443,7 +7432,7 @@
                       	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleURIFirstPathElementCS5776);
+                    pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleURIFirstPathElementCS5775);
                     ruleUnrestrictedName();
 
                     state._fsp--;
@@ -7509,7 +7498,7 @@
                       	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleURI_in_ruleURIFirstPathElementCS5822);
+                    pushFollow(FollowSets000.FOLLOW_ruleURI_in_ruleURIFirstPathElementCS5821);
                     ruleURI();
 
                     state._fsp--;
@@ -7568,7 +7557,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPrimitiveTypeCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_rulePrimitiveTypeCS_in_entryRulePrimitiveTypeCS5859);
+            pushFollow(FollowSets000.FOLLOW_rulePrimitiveTypeCS_in_entryRulePrimitiveTypeCS5858);
             iv_rulePrimitiveTypeCS=rulePrimitiveTypeCS();
 
             state._fsp--;
@@ -7576,7 +7565,7 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePrimitiveTypeCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePrimitiveTypeCS5869); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePrimitiveTypeCS5868); if (state.failed) return current;
 
             }
 
@@ -7618,7 +7607,7 @@
               	        newCompositeNode(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_rulePrimitiveTypeIdentifier_in_rulePrimitiveTypeCS5914);
+            pushFollow(FollowSets000.FOLLOW_rulePrimitiveTypeIdentifier_in_rulePrimitiveTypeCS5913);
             lv_name_0_0=rulePrimitiveTypeIdentifier();
 
             state._fsp--;
@@ -7676,7 +7665,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCollectionTypeIdentifierRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleCollectionTypeIdentifier_in_entryRuleCollectionTypeIdentifier5950);
+            pushFollow(FollowSets000.FOLLOW_ruleCollectionTypeIdentifier_in_entryRuleCollectionTypeIdentifier5949);
             iv_ruleCollectionTypeIdentifier=ruleCollectionTypeIdentifier();
 
             state._fsp--;
@@ -7684,7 +7673,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCollectionTypeIdentifier.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCollectionTypeIdentifier5961); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCollectionTypeIdentifier5960); if (state.failed) return current;
 
             }
 
@@ -7715,46 +7704,46 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2611:1: (kw= 'Set' | kw= 'Bag' | kw= 'Sequence' | kw= 'Collection' | kw= 'OrderedSet' )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2611:1: (kw= 'Set' | kw= 'Bag' | kw= 'Sequence' | kw= 'Collection' | kw= 'OrderedSet' )
-            int alt48=5;
+            int alt47=5;
             switch ( input.LA(1) ) {
             case 70:
                 {
-                alt48=1;
+                alt47=1;
                 }
                 break;
             case 71:
                 {
-                alt48=2;
+                alt47=2;
                 }
                 break;
             case 72:
                 {
-                alt48=3;
+                alt47=3;
                 }
                 break;
             case 73:
                 {
-                alt48=4;
+                alt47=4;
                 }
                 break;
             case 74:
                 {
-                alt48=5;
+                alt47=5;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 48, 0, input);
+                    new NoViableAltException("", 47, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt48) {
+            switch (alt47) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2612:2: kw= 'Set'
                     {
-                    kw=(Token)match(input,70,FollowSets000.FOLLOW_70_in_ruleCollectionTypeIdentifier5999); if (state.failed) return current;
+                    kw=(Token)match(input,70,FollowSets000.FOLLOW_70_in_ruleCollectionTypeIdentifier5998); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -7767,7 +7756,7 @@
                 case 2 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2619:2: kw= 'Bag'
                     {
-                    kw=(Token)match(input,71,FollowSets000.FOLLOW_71_in_ruleCollectionTypeIdentifier6018); if (state.failed) return current;
+                    kw=(Token)match(input,71,FollowSets000.FOLLOW_71_in_ruleCollectionTypeIdentifier6017); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -7780,7 +7769,7 @@
                 case 3 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2626:2: kw= 'Sequence'
                     {
-                    kw=(Token)match(input,72,FollowSets000.FOLLOW_72_in_ruleCollectionTypeIdentifier6037); if (state.failed) return current;
+                    kw=(Token)match(input,72,FollowSets000.FOLLOW_72_in_ruleCollectionTypeIdentifier6036); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -7793,7 +7782,7 @@
                 case 4 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2633:2: kw= 'Collection'
                     {
-                    kw=(Token)match(input,73,FollowSets000.FOLLOW_73_in_ruleCollectionTypeIdentifier6056); if (state.failed) return current;
+                    kw=(Token)match(input,73,FollowSets000.FOLLOW_73_in_ruleCollectionTypeIdentifier6055); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -7806,7 +7795,7 @@
                 case 5 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2640:2: kw= 'OrderedSet'
                     {
-                    kw=(Token)match(input,74,FollowSets000.FOLLOW_74_in_ruleCollectionTypeIdentifier6075); if (state.failed) return current;
+                    kw=(Token)match(input,74,FollowSets000.FOLLOW_74_in_ruleCollectionTypeIdentifier6074); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -7853,7 +7842,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCollectionTypeCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleCollectionTypeCS_in_entryRuleCollectionTypeCS6115);
+            pushFollow(FollowSets000.FOLLOW_ruleCollectionTypeCS_in_entryRuleCollectionTypeCS6114);
             iv_ruleCollectionTypeCS=ruleCollectionTypeCS();
 
             state._fsp--;
@@ -7861,7 +7850,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCollectionTypeCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCollectionTypeCS6125); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCollectionTypeCS6124); if (state.failed) return current;
 
             }
 
@@ -7910,7 +7899,7 @@
               	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleCollectionTypeIdentifier_in_ruleCollectionTypeCS6171);
+            pushFollow(FollowSets000.FOLLOW_ruleCollectionTypeIdentifier_in_ruleCollectionTypeCS6170);
             lv_name_0_0=ruleCollectionTypeIdentifier();
 
             state._fsp--;
@@ -7935,17 +7924,17 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2684:2: (otherlv_1= '(' ( (lv_ownedType_2_0= ruleTypeExpCS ) ) otherlv_3= ')' )?
-            int alt49=2;
-            int LA49_0 = input.LA(1);
+            int alt48=2;
+            int LA48_0 = input.LA(1);
 
-            if ( (LA49_0==21) ) {
-                alt49=1;
+            if ( (LA48_0==21) ) {
+                alt48=1;
             }
-            switch (alt49) {
+            switch (alt48) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2684:4: otherlv_1= '(' ( (lv_ownedType_2_0= ruleTypeExpCS ) ) otherlv_3= ')'
                     {
-                    otherlv_1=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleCollectionTypeCS6184); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleCollectionTypeCS6183); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_1, grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0());
@@ -7962,7 +7951,7 @@
                       	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleCollectionTypeCS6205);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleCollectionTypeCS6204);
                     lv_ownedType_2_0=ruleTypeExpCS();
 
                     state._fsp--;
@@ -7986,7 +7975,7 @@
 
                     }
 
-                    otherlv_3=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleCollectionTypeCS6217); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleCollectionTypeCS6216); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_3, grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2());
@@ -8035,7 +8024,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTupleTypeCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTupleTypeCS_in_entryRuleTupleTypeCS6255);
+            pushFollow(FollowSets000.FOLLOW_ruleTupleTypeCS_in_entryRuleTupleTypeCS6254);
             iv_ruleTupleTypeCS=ruleTupleTypeCS();
 
             state._fsp--;
@@ -8043,7 +8032,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTupleTypeCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTupleTypeCS6265); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTupleTypeCS6264); if (state.failed) return current;
 
             }
 
@@ -8089,7 +8078,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2732:1: (lv_name_0_0= 'Tuple' )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2733:3: lv_name_0_0= 'Tuple'
             {
-            lv_name_0_0=(Token)match(input,68,FollowSets000.FOLLOW_68_in_ruleTupleTypeCS6308); if (state.failed) return current;
+            lv_name_0_0=(Token)match(input,68,FollowSets000.FOLLOW_68_in_ruleTupleTypeCS6307); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                       newLeafNode(lv_name_0_0, grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0());
@@ -8110,30 +8099,30 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2746:2: (otherlv_1= '(' ( ( (lv_ownedParts_2_0= ruleTuplePartCS ) ) (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleTuplePartCS ) ) )* )? otherlv_5= ')' )?
-            int alt52=2;
-            int LA52_0 = input.LA(1);
+            int alt51=2;
+            int LA51_0 = input.LA(1);
 
-            if ( (LA52_0==21) ) {
-                alt52=1;
+            if ( (LA51_0==21) ) {
+                alt51=1;
             }
-            switch (alt52) {
+            switch (alt51) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2746:4: otherlv_1= '(' ( ( (lv_ownedParts_2_0= ruleTuplePartCS ) ) (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleTuplePartCS ) ) )* )? otherlv_5= ')'
                     {
-                    otherlv_1=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleTupleTypeCS6334); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleTupleTypeCS6333); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_1, grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0());
                           
                     }
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2750:1: ( ( (lv_ownedParts_2_0= ruleTuplePartCS ) ) (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleTuplePartCS ) ) )* )?
-                    int alt51=2;
-                    int LA51_0 = input.LA(1);
+                    int alt50=2;
+                    int LA50_0 = input.LA(1);
 
-                    if ( ((LA51_0>=RULE_SIMPLE_ID && LA51_0<=RULE_ESCAPED_ID)||LA51_0==28||(LA51_0>=30 && LA51_0<=31)) ) {
-                        alt51=1;
+                    if ( ((LA50_0>=RULE_SIMPLE_ID && LA50_0<=RULE_ESCAPED_ID)||LA50_0==28||(LA50_0>=30 && LA50_0<=31)) ) {
+                        alt50=1;
                     }
-                    switch (alt51) {
+                    switch (alt50) {
                         case 1 :
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2750:2: ( (lv_ownedParts_2_0= ruleTuplePartCS ) ) (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleTuplePartCS ) ) )*
                             {
@@ -8148,7 +8137,7 @@
                               	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); 
                               	    
                             }
-                            pushFollow(FollowSets000.FOLLOW_ruleTuplePartCS_in_ruleTupleTypeCS6356);
+                            pushFollow(FollowSets000.FOLLOW_ruleTuplePartCS_in_ruleTupleTypeCS6355);
                             lv_ownedParts_2_0=ruleTuplePartCS();
 
                             state._fsp--;
@@ -8173,21 +8162,21 @@
                             }
 
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2768:2: (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleTuplePartCS ) ) )*
-                            loop50:
+                            loop49:
                             do {
-                                int alt50=2;
-                                int LA50_0 = input.LA(1);
+                                int alt49=2;
+                                int LA49_0 = input.LA(1);
 
-                                if ( (LA50_0==26) ) {
-                                    alt50=1;
+                                if ( (LA49_0==26) ) {
+                                    alt49=1;
                                 }
 
 
-                                switch (alt50) {
+                                switch (alt49) {
                             	case 1 :
                             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2768:4: otherlv_3= ',' ( (lv_ownedParts_4_0= ruleTuplePartCS ) )
                             	    {
-                            	    otherlv_3=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleTupleTypeCS6369); if (state.failed) return current;
+                            	    otherlv_3=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleTupleTypeCS6368); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	          	newLeafNode(otherlv_3, grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0());
@@ -8204,7 +8193,7 @@
                             	      	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); 
                             	      	    
                             	    }
-                            	    pushFollow(FollowSets000.FOLLOW_ruleTuplePartCS_in_ruleTupleTypeCS6390);
+                            	    pushFollow(FollowSets000.FOLLOW_ruleTuplePartCS_in_ruleTupleTypeCS6389);
                             	    lv_ownedParts_4_0=ruleTuplePartCS();
 
                             	    state._fsp--;
@@ -8233,7 +8222,7 @@
                             	    break;
 
                             	default :
-                            	    break loop50;
+                            	    break loop49;
                                 }
                             } while (true);
 
@@ -8243,7 +8232,7 @@
 
                     }
 
-                    otherlv_5=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleTupleTypeCS6406); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleTupleTypeCS6405); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_5, grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2());
@@ -8292,7 +8281,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTuplePartCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTuplePartCS_in_entryRuleTuplePartCS6444);
+            pushFollow(FollowSets000.FOLLOW_ruleTuplePartCS_in_entryRuleTuplePartCS6443);
             iv_ruleTuplePartCS=ruleTuplePartCS();
 
             state._fsp--;
@@ -8300,7 +8289,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTuplePartCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTuplePartCS6454); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTuplePartCS6453); if (state.failed) return current;
 
             }
 
@@ -8348,7 +8337,7 @@
               	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleTuplePartCS6500);
+            pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleTuplePartCS6499);
             lv_name_0_0=ruleUnrestrictedName();
 
             state._fsp--;
@@ -8372,7 +8361,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleTuplePartCS6512); if (state.failed) return current;
+            otherlv_1=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleTuplePartCS6511); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_1, grammarAccess.getTuplePartCSAccess().getColonKeyword_1());
@@ -8389,7 +8378,7 @@
               	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleTuplePartCS6533);
+            pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleTuplePartCS6532);
             lv_ownedType_2_0=ruleTypeExpCS();
 
             state._fsp--;
@@ -8450,7 +8439,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCollectionLiteralExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleCollectionLiteralExpCS_in_entryRuleCollectionLiteralExpCS6569);
+            pushFollow(FollowSets000.FOLLOW_ruleCollectionLiteralExpCS_in_entryRuleCollectionLiteralExpCS6568);
             iv_ruleCollectionLiteralExpCS=ruleCollectionLiteralExpCS();
 
             state._fsp--;
@@ -8458,7 +8447,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCollectionLiteralExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCollectionLiteralExpCS6579); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCollectionLiteralExpCS6578); if (state.failed) return current;
 
             }
 
@@ -8510,7 +8499,7 @@
               	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleCollectionTypeCS_in_ruleCollectionLiteralExpCS6625);
+            pushFollow(FollowSets000.FOLLOW_ruleCollectionTypeCS_in_ruleCollectionLiteralExpCS6624);
             lv_ownedType_0_0=ruleCollectionTypeCS();
 
             state._fsp--;
@@ -8534,20 +8523,20 @@
 
             }
 
-            otherlv_1=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleCollectionLiteralExpCS6637); if (state.failed) return current;
+            otherlv_1=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleCollectionLiteralExpCS6636); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
                   
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2898:1: ( ( (lv_ownedParts_2_0= ruleCollectionLiteralPartCS ) ) (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleCollectionLiteralPartCS ) ) )* )?
-            int alt54=2;
-            int LA54_0 = input.LA(1);
+            int alt53=2;
+            int LA53_0 = input.LA(1);
 
-            if ( ((LA54_0>=RULE_SIMPLE_ID && LA54_0<=RULE_SINGLE_QUOTED_STRING)||LA54_0==21||LA54_0==23||LA54_0==28||(LA54_0>=30 && LA54_0<=31)||(LA54_0>=42 && LA54_0<=54)||LA54_0==68||(LA54_0>=70 && LA54_0<=74)||(LA54_0>=79 && LA54_0<=83)||LA54_0==90||(LA54_0>=95 && LA54_0<=96)) ) {
-                alt54=1;
+            if ( ((LA53_0>=RULE_SIMPLE_ID && LA53_0<=RULE_SINGLE_QUOTED_STRING)||LA53_0==21||LA53_0==23||LA53_0==28||(LA53_0>=30 && LA53_0<=31)||(LA53_0>=42 && LA53_0<=54)||LA53_0==68||(LA53_0>=70 && LA53_0<=74)||(LA53_0>=79 && LA53_0<=83)||LA53_0==90||(LA53_0>=95 && LA53_0<=96)) ) {
+                alt53=1;
             }
-            switch (alt54) {
+            switch (alt53) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2898:2: ( (lv_ownedParts_2_0= ruleCollectionLiteralPartCS ) ) (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleCollectionLiteralPartCS ) ) )*
                     {
@@ -8562,7 +8551,7 @@
                       	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleCollectionLiteralPartCS_in_ruleCollectionLiteralExpCS6659);
+                    pushFollow(FollowSets000.FOLLOW_ruleCollectionLiteralPartCS_in_ruleCollectionLiteralExpCS6658);
                     lv_ownedParts_2_0=ruleCollectionLiteralPartCS();
 
                     state._fsp--;
@@ -8587,21 +8576,21 @@
                     }
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2916:2: (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleCollectionLiteralPartCS ) ) )*
-                    loop53:
+                    loop52:
                     do {
-                        int alt53=2;
-                        int LA53_0 = input.LA(1);
+                        int alt52=2;
+                        int LA52_0 = input.LA(1);
 
-                        if ( (LA53_0==26) ) {
-                            alt53=1;
+                        if ( (LA52_0==26) ) {
+                            alt52=1;
                         }
 
 
-                        switch (alt53) {
+                        switch (alt52) {
                     	case 1 :
                     	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2916:4: otherlv_3= ',' ( (lv_ownedParts_4_0= ruleCollectionLiteralPartCS ) )
                     	    {
-                    	    otherlv_3=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleCollectionLiteralExpCS6672); if (state.failed) return current;
+                    	    otherlv_3=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleCollectionLiteralExpCS6671); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	          	newLeafNode(otherlv_3, grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0());
@@ -8618,7 +8607,7 @@
                     	      	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); 
                     	      	    
                     	    }
-                    	    pushFollow(FollowSets000.FOLLOW_ruleCollectionLiteralPartCS_in_ruleCollectionLiteralExpCS6693);
+                    	    pushFollow(FollowSets000.FOLLOW_ruleCollectionLiteralPartCS_in_ruleCollectionLiteralExpCS6692);
                     	    lv_ownedParts_4_0=ruleCollectionLiteralPartCS();
 
                     	    state._fsp--;
@@ -8647,7 +8636,7 @@
                     	    break;
 
                     	default :
-                    	    break loop53;
+                    	    break loop52;
                         }
                     } while (true);
 
@@ -8657,7 +8646,7 @@
 
             }
 
-            otherlv_5=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleCollectionLiteralExpCS6709); if (state.failed) return current;
+            otherlv_5=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleCollectionLiteralExpCS6708); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_5, grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3());
@@ -8700,7 +8689,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCollectionLiteralPartCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleCollectionLiteralPartCS_in_entryRuleCollectionLiteralPartCS6745);
+            pushFollow(FollowSets000.FOLLOW_ruleCollectionLiteralPartCS_in_entryRuleCollectionLiteralPartCS6744);
             iv_ruleCollectionLiteralPartCS=ruleCollectionLiteralPartCS();
 
             state._fsp--;
@@ -8708,7 +8697,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCollectionLiteralPartCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCollectionLiteralPartCS6755); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCollectionLiteralPartCS6754); if (state.failed) return current;
 
             }
 
@@ -8745,7 +8734,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2963:1: ( ( ( (lv_ownedExpression_0_0= ruleExpCS ) ) (otherlv_1= '..' ( (lv_ownedLastExpression_2_0= ruleExpCS ) ) )? ) | ( (lv_ownedExpression_3_0= rulePatternExpCS ) ) )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2963:1: ( ( ( (lv_ownedExpression_0_0= ruleExpCS ) ) (otherlv_1= '..' ( (lv_ownedLastExpression_2_0= ruleExpCS ) ) )? ) | ( (lv_ownedExpression_3_0= rulePatternExpCS ) ) )
-            int alt56=2;
+            int alt55=2;
             switch ( input.LA(1) ) {
             case RULE_INT:
             case RULE_SINGLE_QUOTED_STRING:
@@ -8778,23 +8767,23 @@
             case 95:
             case 96:
                 {
-                alt56=1;
+                alt55=1;
                 }
                 break;
             case RULE_SIMPLE_ID:
                 {
-                int LA56_2 = input.LA(2);
+                int LA55_2 = input.LA(2);
 
-                if ( (LA56_2==23) ) {
-                    alt56=2;
+                if ( (LA55_2==23) ) {
+                    alt55=2;
                 }
-                else if ( (LA56_2==EOF||(LA56_2>=17 && LA56_2<=18)||LA56_2==21||(LA56_2>=26 && LA56_2<=27)||(LA56_2>=39 && LA56_2<=40)||LA56_2==52||(LA56_2>=54 && LA56_2<=67)||LA56_2==69||(LA56_2>=75 && LA56_2<=77)||(LA56_2>=84 && LA56_2<=85)) ) {
-                    alt56=1;
+                else if ( (LA55_2==EOF||(LA55_2>=17 && LA55_2<=18)||LA55_2==21||(LA55_2>=26 && LA55_2<=27)||(LA55_2>=39 && LA55_2<=40)||LA55_2==52||(LA55_2>=54 && LA55_2<=67)||LA55_2==69||(LA55_2>=75 && LA55_2<=77)||(LA55_2>=84 && LA55_2<=85)) ) {
+                    alt55=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 56, 2, input);
+                        new NoViableAltException("", 55, 2, input);
 
                     throw nvae;
                 }
@@ -8802,18 +8791,18 @@
                 break;
             case RULE_ESCAPED_ID:
                 {
-                int LA56_3 = input.LA(2);
+                int LA55_3 = input.LA(2);
 
-                if ( (LA56_3==EOF||(LA56_3>=17 && LA56_3<=18)||LA56_3==21||(LA56_3>=26 && LA56_3<=27)||(LA56_3>=39 && LA56_3<=40)||LA56_3==52||(LA56_3>=54 && LA56_3<=67)||LA56_3==69||(LA56_3>=75 && LA56_3<=77)||(LA56_3>=84 && LA56_3<=85)) ) {
-                    alt56=1;
+                if ( (LA55_3==EOF||(LA55_3>=17 && LA55_3<=18)||LA55_3==21||(LA55_3>=26 && LA55_3<=27)||(LA55_3>=39 && LA55_3<=40)||LA55_3==52||(LA55_3>=54 && LA55_3<=67)||LA55_3==69||(LA55_3>=75 && LA55_3<=77)||(LA55_3>=84 && LA55_3<=85)) ) {
+                    alt55=1;
                 }
-                else if ( (LA56_3==23) ) {
-                    alt56=2;
+                else if ( (LA55_3==23) ) {
+                    alt55=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 56, 3, input);
+                        new NoViableAltException("", 55, 3, input);
 
                     throw nvae;
                 }
@@ -8821,18 +8810,18 @@
                 break;
             case 28:
                 {
-                int LA56_4 = input.LA(2);
+                int LA55_4 = input.LA(2);
 
-                if ( (LA56_4==EOF||(LA56_4>=17 && LA56_4<=18)||LA56_4==21||(LA56_4>=26 && LA56_4<=27)||(LA56_4>=39 && LA56_4<=40)||LA56_4==52||(LA56_4>=54 && LA56_4<=67)||LA56_4==69||(LA56_4>=75 && LA56_4<=77)||(LA56_4>=84 && LA56_4<=85)) ) {
-                    alt56=1;
+                if ( (LA55_4==23) ) {
+                    alt55=2;
                 }
-                else if ( (LA56_4==23) ) {
-                    alt56=2;
+                else if ( (LA55_4==EOF||(LA55_4>=17 && LA55_4<=18)||LA55_4==21||(LA55_4>=26 && LA55_4<=27)||(LA55_4>=39 && LA55_4<=40)||LA55_4==52||(LA55_4>=54 && LA55_4<=67)||LA55_4==69||(LA55_4>=75 && LA55_4<=77)||(LA55_4>=84 && LA55_4<=85)) ) {
+                    alt55=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 56, 4, input);
+                        new NoViableAltException("", 55, 4, input);
 
                     throw nvae;
                 }
@@ -8840,18 +8829,18 @@
                 break;
             case 30:
                 {
-                int LA56_5 = input.LA(2);
+                int LA55_5 = input.LA(2);
 
-                if ( (LA56_5==EOF||(LA56_5>=17 && LA56_5<=18)||LA56_5==21||(LA56_5>=26 && LA56_5<=27)||(LA56_5>=39 && LA56_5<=40)||LA56_5==52||(LA56_5>=54 && LA56_5<=67)||LA56_5==69||(LA56_5>=75 && LA56_5<=77)||(LA56_5>=84 && LA56_5<=85)) ) {
-                    alt56=1;
+                if ( (LA55_5==EOF||(LA55_5>=17 && LA55_5<=18)||LA55_5==21||(LA55_5>=26 && LA55_5<=27)||(LA55_5>=39 && LA55_5<=40)||LA55_5==52||(LA55_5>=54 && LA55_5<=67)||LA55_5==69||(LA55_5>=75 && LA55_5<=77)||(LA55_5>=84 && LA55_5<=85)) ) {
+                    alt55=1;
                 }
-                else if ( (LA56_5==23) ) {
-                    alt56=2;
+                else if ( (LA55_5==23) ) {
+                    alt55=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 56, 5, input);
+                        new NoViableAltException("", 55, 5, input);
 
                     throw nvae;
                 }
@@ -8859,18 +8848,18 @@
                 break;
             case 31:
                 {
-                int LA56_6 = input.LA(2);
+                int LA55_6 = input.LA(2);
 
-                if ( (LA56_6==23) ) {
-                    alt56=2;
+                if ( (LA55_6==23) ) {
+                    alt55=2;
                 }
-                else if ( (LA56_6==EOF||(LA56_6>=17 && LA56_6<=18)||LA56_6==21||(LA56_6>=26 && LA56_6<=27)||(LA56_6>=39 && LA56_6<=40)||LA56_6==52||(LA56_6>=54 && LA56_6<=67)||LA56_6==69||(LA56_6>=75 && LA56_6<=77)||(LA56_6>=84 && LA56_6<=85)) ) {
-                    alt56=1;
+                else if ( (LA55_6==EOF||(LA55_6>=17 && LA55_6<=18)||LA55_6==21||(LA55_6>=26 && LA55_6<=27)||(LA55_6>=39 && LA55_6<=40)||LA55_6==52||(LA55_6>=54 && LA55_6<=67)||LA55_6==69||(LA55_6>=75 && LA55_6<=77)||(LA55_6>=84 && LA55_6<=85)) ) {
+                    alt55=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 56, 6, input);
+                        new NoViableAltException("", 55, 6, input);
 
                     throw nvae;
                 }
@@ -8878,18 +8867,18 @@
                 break;
             case 23:
                 {
-                alt56=2;
+                alt55=2;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 56, 0, input);
+                    new NoViableAltException("", 55, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt56) {
+            switch (alt55) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2963:2: ( ( (lv_ownedExpression_0_0= ruleExpCS ) ) (otherlv_1= '..' ( (lv_ownedLastExpression_2_0= ruleExpCS ) ) )? )
                     {
@@ -8907,7 +8896,7 @@
                       	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleCollectionLiteralPartCS6802);
+                    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleCollectionLiteralPartCS6801);
                     lv_ownedExpression_0_0=ruleExpCS();
 
                     state._fsp--;
@@ -8932,17 +8921,17 @@
                     }
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2981:2: (otherlv_1= '..' ( (lv_ownedLastExpression_2_0= ruleExpCS ) ) )?
-                    int alt55=2;
-                    int LA55_0 = input.LA(1);
+                    int alt54=2;
+                    int LA54_0 = input.LA(1);
 
-                    if ( (LA55_0==77) ) {
-                        alt55=1;
+                    if ( (LA54_0==77) ) {
+                        alt54=1;
                     }
-                    switch (alt55) {
+                    switch (alt54) {
                         case 1 :
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:2981:4: otherlv_1= '..' ( (lv_ownedLastExpression_2_0= ruleExpCS ) )
                             {
-                            otherlv_1=(Token)match(input,77,FollowSets000.FOLLOW_77_in_ruleCollectionLiteralPartCS6815); if (state.failed) return current;
+                            otherlv_1=(Token)match(input,77,FollowSets000.FOLLOW_77_in_ruleCollectionLiteralPartCS6814); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                                   	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0());
@@ -8959,7 +8948,7 @@
                               	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); 
                               	    
                             }
-                            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleCollectionLiteralPartCS6836);
+                            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleCollectionLiteralPartCS6835);
                             lv_ownedLastExpression_2_0=ruleExpCS();
 
                             state._fsp--;
@@ -9009,7 +8998,7 @@
                       	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_rulePatternExpCS_in_ruleCollectionLiteralPartCS6866);
+                    pushFollow(FollowSets000.FOLLOW_rulePatternExpCS_in_ruleCollectionLiteralPartCS6865);
                     lv_ownedExpression_3_0=rulePatternExpCS();
 
                     state._fsp--;
@@ -9073,7 +9062,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCollectionPatternCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleCollectionPatternCS_in_entryRuleCollectionPatternCS6902);
+            pushFollow(FollowSets000.FOLLOW_ruleCollectionPatternCS_in_entryRuleCollectionPatternCS6901);
             iv_ruleCollectionPatternCS=ruleCollectionPatternCS();
 
             state._fsp--;
@@ -9081,7 +9070,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCollectionPatternCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCollectionPatternCS6912); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCollectionPatternCS6911); if (state.failed) return current;
 
             }
 
@@ -9136,7 +9125,7 @@
               	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleCollectionTypeCS_in_ruleCollectionPatternCS6958);
+            pushFollow(FollowSets000.FOLLOW_ruleCollectionTypeCS_in_ruleCollectionPatternCS6957);
             lv_ownedType_0_0=ruleCollectionTypeCS();
 
             state._fsp--;
@@ -9160,20 +9149,20 @@
 
             }
 
-            otherlv_1=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleCollectionPatternCS6970); if (state.failed) return current;
+            otherlv_1=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleCollectionPatternCS6969); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_1, grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1());
                   
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3065:1: ( ( (lv_ownedParts_2_0= rulePatternExpCS ) ) (otherlv_3= ',' ( (lv_ownedParts_4_0= rulePatternExpCS ) ) )* (otherlv_5= '++' ( (lv_restVariableName_6_0= ruleIdentifier ) ) ) )?
-            int alt58=2;
-            int LA58_0 = input.LA(1);
+            int alt57=2;
+            int LA57_0 = input.LA(1);
 
-            if ( ((LA58_0>=RULE_SIMPLE_ID && LA58_0<=RULE_ESCAPED_ID)||LA58_0==23||LA58_0==28||(LA58_0>=30 && LA58_0<=31)) ) {
-                alt58=1;
+            if ( ((LA57_0>=RULE_SIMPLE_ID && LA57_0<=RULE_ESCAPED_ID)||LA57_0==23||LA57_0==28||(LA57_0>=30 && LA57_0<=31)) ) {
+                alt57=1;
             }
-            switch (alt58) {
+            switch (alt57) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3065:2: ( (lv_ownedParts_2_0= rulePatternExpCS ) ) (otherlv_3= ',' ( (lv_ownedParts_4_0= rulePatternExpCS ) ) )* (otherlv_5= '++' ( (lv_restVariableName_6_0= ruleIdentifier ) ) )
                     {
@@ -9188,7 +9177,7 @@
                       	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_rulePatternExpCS_in_ruleCollectionPatternCS6992);
+                    pushFollow(FollowSets000.FOLLOW_rulePatternExpCS_in_ruleCollectionPatternCS6991);
                     lv_ownedParts_2_0=rulePatternExpCS();
 
                     state._fsp--;
@@ -9213,21 +9202,21 @@
                     }
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3083:2: (otherlv_3= ',' ( (lv_ownedParts_4_0= rulePatternExpCS ) ) )*
-                    loop57:
+                    loop56:
                     do {
-                        int alt57=2;
-                        int LA57_0 = input.LA(1);
+                        int alt56=2;
+                        int LA56_0 = input.LA(1);
 
-                        if ( (LA57_0==26) ) {
-                            alt57=1;
+                        if ( (LA56_0==26) ) {
+                            alt56=1;
                         }
 
 
-                        switch (alt57) {
+                        switch (alt56) {
                     	case 1 :
                     	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3083:4: otherlv_3= ',' ( (lv_ownedParts_4_0= rulePatternExpCS ) )
                     	    {
-                    	    otherlv_3=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleCollectionPatternCS7005); if (state.failed) return current;
+                    	    otherlv_3=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleCollectionPatternCS7004); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	          	newLeafNode(otherlv_3, grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0());
@@ -9244,7 +9233,7 @@
                     	      	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); 
                     	      	    
                     	    }
-                    	    pushFollow(FollowSets000.FOLLOW_rulePatternExpCS_in_ruleCollectionPatternCS7026);
+                    	    pushFollow(FollowSets000.FOLLOW_rulePatternExpCS_in_ruleCollectionPatternCS7025);
                     	    lv_ownedParts_4_0=rulePatternExpCS();
 
                     	    state._fsp--;
@@ -9273,14 +9262,14 @@
                     	    break;
 
                     	default :
-                    	    break loop57;
+                    	    break loop56;
                         }
                     } while (true);
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3105:4: (otherlv_5= '++' ( (lv_restVariableName_6_0= ruleIdentifier ) ) )
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3105:6: otherlv_5= '++' ( (lv_restVariableName_6_0= ruleIdentifier ) )
                     {
-                    otherlv_5=(Token)match(input,78,FollowSets000.FOLLOW_78_in_ruleCollectionPatternCS7041); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,78,FollowSets000.FOLLOW_78_in_ruleCollectionPatternCS7040); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_5, grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0());
@@ -9297,7 +9286,7 @@
                       	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleIdentifier_in_ruleCollectionPatternCS7062);
+                    pushFollow(FollowSets000.FOLLOW_ruleIdentifier_in_ruleCollectionPatternCS7061);
                     lv_restVariableName_6_0=ruleIdentifier();
 
                     state._fsp--;
@@ -9330,7 +9319,7 @@
 
             }
 
-            otherlv_7=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleCollectionPatternCS7077); if (state.failed) return current;
+            otherlv_7=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleCollectionPatternCS7076); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_7, grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3());
@@ -9373,7 +9362,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getConstructorPartCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleConstructorPartCS_in_entryRuleConstructorPartCS7113);
+            pushFollow(FollowSets000.FOLLOW_ruleConstructorPartCS_in_entryRuleConstructorPartCS7112);
             iv_ruleConstructorPartCS=ruleConstructorPartCS();
 
             state._fsp--;
@@ -9381,7 +9370,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleConstructorPartCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstructorPartCS7123); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstructorPartCS7122); if (state.failed) return current;
 
             }
 
@@ -9441,7 +9430,7 @@
               	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleConstructorPartCS7175);
+            pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleConstructorPartCS7174);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -9457,7 +9446,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleConstructorPartCS7187); if (state.failed) return current;
+            otherlv_1=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleConstructorPartCS7186); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_1, grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1());
@@ -9470,7 +9459,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3176:1: (lv_ownedInitExpression_2_1= ruleExpCS | lv_ownedInitExpression_2_2= rulePatternExpCS )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3176:1: (lv_ownedInitExpression_2_1= ruleExpCS | lv_ownedInitExpression_2_2= rulePatternExpCS )
-            int alt59=2;
+            int alt58=2;
             switch ( input.LA(1) ) {
             case RULE_INT:
             case RULE_SINGLE_QUOTED_STRING:
@@ -9503,23 +9492,23 @@
             case 95:
             case 96:
                 {
-                alt59=1;
+                alt58=1;
                 }
                 break;
             case RULE_SIMPLE_ID:
                 {
-                int LA59_2 = input.LA(2);
+                int LA58_2 = input.LA(2);
 
-                if ( (LA59_2==EOF||(LA59_2>=17 && LA59_2<=18)||LA59_2==21||(LA59_2>=26 && LA59_2<=27)||(LA59_2>=39 && LA59_2<=40)||LA59_2==52||(LA59_2>=54 && LA59_2<=67)||LA59_2==69||(LA59_2>=75 && LA59_2<=76)||(LA59_2>=84 && LA59_2<=85)) ) {
-                    alt59=1;
+                if ( (LA58_2==EOF||(LA58_2>=17 && LA58_2<=18)||LA58_2==21||(LA58_2>=26 && LA58_2<=27)||(LA58_2>=39 && LA58_2<=40)||LA58_2==52||(LA58_2>=54 && LA58_2<=67)||LA58_2==69||(LA58_2>=75 && LA58_2<=76)||(LA58_2>=84 && LA58_2<=85)) ) {
+                    alt58=1;
                 }
-                else if ( (LA59_2==23) ) {
-                    alt59=2;
+                else if ( (LA58_2==23) ) {
+                    alt58=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 59, 2, input);
+                        new NoViableAltException("", 58, 2, input);
 
                     throw nvae;
                 }
@@ -9527,18 +9516,18 @@
                 break;
             case RULE_ESCAPED_ID:
                 {
-                int LA59_3 = input.LA(2);
+                int LA58_3 = input.LA(2);
 
-                if ( (LA59_3==23) ) {
-                    alt59=2;
+                if ( (LA58_3==23) ) {
+                    alt58=2;
                 }
-                else if ( (LA59_3==EOF||(LA59_3>=17 && LA59_3<=18)||LA59_3==21||(LA59_3>=26 && LA59_3<=27)||(LA59_3>=39 && LA59_3<=40)||LA59_3==52||(LA59_3>=54 && LA59_3<=67)||LA59_3==69||(LA59_3>=75 && LA59_3<=76)||(LA59_3>=84 && LA59_3<=85)) ) {
-                    alt59=1;
+                else if ( (LA58_3==EOF||(LA58_3>=17 && LA58_3<=18)||LA58_3==21||(LA58_3>=26 && LA58_3<=27)||(LA58_3>=39 && LA58_3<=40)||LA58_3==52||(LA58_3>=54 && LA58_3<=67)||LA58_3==69||(LA58_3>=75 && LA58_3<=76)||(LA58_3>=84 && LA58_3<=85)) ) {
+                    alt58=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 59, 3, input);
+                        new NoViableAltException("", 58, 3, input);
 
                     throw nvae;
                 }
@@ -9546,18 +9535,18 @@
                 break;
             case 28:
                 {
-                int LA59_4 = input.LA(2);
+                int LA58_4 = input.LA(2);
 
-                if ( (LA59_4==EOF||(LA59_4>=17 && LA59_4<=18)||LA59_4==21||(LA59_4>=26 && LA59_4<=27)||(LA59_4>=39 && LA59_4<=40)||LA59_4==52||(LA59_4>=54 && LA59_4<=67)||LA59_4==69||(LA59_4>=75 && LA59_4<=76)||(LA59_4>=84 && LA59_4<=85)) ) {
-                    alt59=1;
+                if ( (LA58_4==23) ) {
+                    alt58=2;
                 }
-                else if ( (LA59_4==23) ) {
-                    alt59=2;
+                else if ( (LA58_4==EOF||(LA58_4>=17 && LA58_4<=18)||LA58_4==21||(LA58_4>=26 && LA58_4<=27)||(LA58_4>=39 && LA58_4<=40)||LA58_4==52||(LA58_4>=54 && LA58_4<=67)||LA58_4==69||(LA58_4>=75 && LA58_4<=76)||(LA58_4>=84 && LA58_4<=85)) ) {
+                    alt58=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 59, 4, input);
+                        new NoViableAltException("", 58, 4, input);
 
                     throw nvae;
                 }
@@ -9565,18 +9554,18 @@
                 break;
             case 30:
                 {
-                int LA59_5 = input.LA(2);
+                int LA58_5 = input.LA(2);
 
-                if ( (LA59_5==EOF||(LA59_5>=17 && LA59_5<=18)||LA59_5==21||(LA59_5>=26 && LA59_5<=27)||(LA59_5>=39 && LA59_5<=40)||LA59_5==52||(LA59_5>=54 && LA59_5<=67)||LA59_5==69||(LA59_5>=75 && LA59_5<=76)||(LA59_5>=84 && LA59_5<=85)) ) {
-                    alt59=1;
+                if ( (LA58_5==23) ) {
+                    alt58=2;
                 }
-                else if ( (LA59_5==23) ) {
-                    alt59=2;
+                else if ( (LA58_5==EOF||(LA58_5>=17 && LA58_5<=18)||LA58_5==21||(LA58_5>=26 && LA58_5<=27)||(LA58_5>=39 && LA58_5<=40)||LA58_5==52||(LA58_5>=54 && LA58_5<=67)||LA58_5==69||(LA58_5>=75 && LA58_5<=76)||(LA58_5>=84 && LA58_5<=85)) ) {
+                    alt58=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 59, 5, input);
+                        new NoViableAltException("", 58, 5, input);
 
                     throw nvae;
                 }
@@ -9584,18 +9573,18 @@
                 break;
             case 31:
                 {
-                int LA59_6 = input.LA(2);
+                int LA58_6 = input.LA(2);
 
-                if ( (LA59_6==23) ) {
-                    alt59=2;
+                if ( (LA58_6==23) ) {
+                    alt58=2;
                 }
-                else if ( (LA59_6==EOF||(LA59_6>=17 && LA59_6<=18)||LA59_6==21||(LA59_6>=26 && LA59_6<=27)||(LA59_6>=39 && LA59_6<=40)||LA59_6==52||(LA59_6>=54 && LA59_6<=67)||LA59_6==69||(LA59_6>=75 && LA59_6<=76)||(LA59_6>=84 && LA59_6<=85)) ) {
-                    alt59=1;
+                else if ( (LA58_6==EOF||(LA58_6>=17 && LA58_6<=18)||LA58_6==21||(LA58_6>=26 && LA58_6<=27)||(LA58_6>=39 && LA58_6<=40)||LA58_6==52||(LA58_6>=54 && LA58_6<=67)||LA58_6==69||(LA58_6>=75 && LA58_6<=76)||(LA58_6>=84 && LA58_6<=85)) ) {
+                    alt58=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 59, 6, input);
+                        new NoViableAltException("", 58, 6, input);
 
                     throw nvae;
                 }
@@ -9603,18 +9592,18 @@
                 break;
             case 23:
                 {
-                alt59=2;
+                alt58=2;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 59, 0, input);
+                    new NoViableAltException("", 58, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt59) {
+            switch (alt58) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3177:3: lv_ownedInitExpression_2_1= ruleExpCS
                     {
@@ -9623,7 +9612,7 @@
                       	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleConstructorPartCS7210);
+                    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleConstructorPartCS7209);
                     lv_ownedInitExpression_2_1=ruleExpCS();
 
                     state._fsp--;
@@ -9652,7 +9641,7 @@
                       	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_rulePatternExpCS_in_ruleConstructorPartCS7229);
+                    pushFollow(FollowSets000.FOLLOW_rulePatternExpCS_in_ruleConstructorPartCS7228);
                     lv_ownedInitExpression_2_2=rulePatternExpCS();
 
                     state._fsp--;
@@ -9719,7 +9708,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPatternExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_rulePatternExpCS_in_entryRulePatternExpCS7268);
+            pushFollow(FollowSets000.FOLLOW_rulePatternExpCS_in_entryRulePatternExpCS7267);
             iv_rulePatternExpCS=rulePatternExpCS();
 
             state._fsp--;
@@ -9727,7 +9716,7 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePatternExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePatternExpCS7278); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePatternExpCS7277); if (state.failed) return current;
 
             }
 
@@ -9765,13 +9754,13 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3231:2: ( (lv_patternVariableName_0_0= ruleUnrestrictedName ) )? otherlv_1= ':' ( (lv_ownedPatternType_2_0= ruleTypeExpCS ) )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3231:2: ( (lv_patternVariableName_0_0= ruleUnrestrictedName ) )?
-            int alt60=2;
-            int LA60_0 = input.LA(1);
+            int alt59=2;
+            int LA59_0 = input.LA(1);
 
-            if ( ((LA60_0>=RULE_SIMPLE_ID && LA60_0<=RULE_ESCAPED_ID)||LA60_0==28||(LA60_0>=30 && LA60_0<=31)) ) {
-                alt60=1;
+            if ( ((LA59_0>=RULE_SIMPLE_ID && LA59_0<=RULE_ESCAPED_ID)||LA59_0==28||(LA59_0>=30 && LA59_0<=31)) ) {
+                alt59=1;
             }
-            switch (alt60) {
+            switch (alt59) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3232:1: (lv_patternVariableName_0_0= ruleUnrestrictedName )
                     {
@@ -9783,7 +9772,7 @@
                       	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_rulePatternExpCS7324);
+                    pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_rulePatternExpCS7323);
                     lv_patternVariableName_0_0=ruleUnrestrictedName();
 
                     state._fsp--;
@@ -9810,7 +9799,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,23,FollowSets000.FOLLOW_23_in_rulePatternExpCS7337); if (state.failed) return current;
+            otherlv_1=(Token)match(input,23,FollowSets000.FOLLOW_23_in_rulePatternExpCS7336); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_1, grammarAccess.getPatternExpCSAccess().getColonKeyword_1());
@@ -9827,7 +9816,7 @@
               	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_rulePatternExpCS7358);
+            pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_rulePatternExpCS7357);
             lv_ownedPatternType_2_0=ruleTypeExpCS();
 
             state._fsp--;
@@ -9888,7 +9877,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getLambdaLiteralExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleLambdaLiteralExpCS_in_entryRuleLambdaLiteralExpCS7394);
+            pushFollow(FollowSets000.FOLLOW_ruleLambdaLiteralExpCS_in_entryRuleLambdaLiteralExpCS7393);
             iv_ruleLambdaLiteralExpCS=ruleLambdaLiteralExpCS();
 
             state._fsp--;
@@ -9896,7 +9885,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleLambdaLiteralExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLambdaLiteralExpCS7404); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLambdaLiteralExpCS7403); if (state.failed) return current;
 
             }
 
@@ -9933,13 +9922,13 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3292:1: (otherlv_0= 'Lambda' otherlv_1= '{' ( (lv_ownedExpressionCS_2_0= ruleExpCS ) ) otherlv_3= '}' )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3292:3: otherlv_0= 'Lambda' otherlv_1= '{' ( (lv_ownedExpressionCS_2_0= ruleExpCS ) ) otherlv_3= '}'
             {
-            otherlv_0=(Token)match(input,79,FollowSets000.FOLLOW_79_in_ruleLambdaLiteralExpCS7441); if (state.failed) return current;
+            otherlv_0=(Token)match(input,79,FollowSets000.FOLLOW_79_in_ruleLambdaLiteralExpCS7440); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_0, grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0());
                   
             }
-            otherlv_1=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleLambdaLiteralExpCS7453); if (state.failed) return current;
+            otherlv_1=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleLambdaLiteralExpCS7452); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_1, grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
@@ -9956,7 +9945,7 @@
               	        newCompositeNode(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleLambdaLiteralExpCS7474);
+            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleLambdaLiteralExpCS7473);
             lv_ownedExpressionCS_2_0=ruleExpCS();
 
             state._fsp--;
@@ -9980,7 +9969,7 @@
 
             }
 
-            otherlv_3=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleLambdaLiteralExpCS7486); if (state.failed) return current;
+            otherlv_3=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleLambdaLiteralExpCS7485); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_3, grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3());
@@ -10023,7 +10012,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_rulePrimitiveLiteralExpCS_in_entryRulePrimitiveLiteralExpCS7522);
+            pushFollow(FollowSets000.FOLLOW_rulePrimitiveLiteralExpCS_in_entryRulePrimitiveLiteralExpCS7521);
             iv_rulePrimitiveLiteralExpCS=rulePrimitiveLiteralExpCS();
 
             state._fsp--;
@@ -10031,7 +10020,7 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePrimitiveLiteralExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePrimitiveLiteralExpCS7532); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePrimitiveLiteralExpCS7531); if (state.failed) return current;
 
             }
 
@@ -10073,48 +10062,48 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3343:1: (this_NumberLiteralExpCS_0= ruleNumberLiteralExpCS | this_StringLiteralExpCS_1= ruleStringLiteralExpCS | this_BooleanLiteralExpCS_2= ruleBooleanLiteralExpCS | this_UnlimitedNaturalLiteralExpCS_3= ruleUnlimitedNaturalLiteralExpCS | this_InvalidLiteralExpCS_4= ruleInvalidLiteralExpCS | this_NullLiteralExpCS_5= ruleNullLiteralExpCS )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3343:1: (this_NumberLiteralExpCS_0= ruleNumberLiteralExpCS | this_StringLiteralExpCS_1= ruleStringLiteralExpCS | this_BooleanLiteralExpCS_2= ruleBooleanLiteralExpCS | this_UnlimitedNaturalLiteralExpCS_3= ruleUnlimitedNaturalLiteralExpCS | this_InvalidLiteralExpCS_4= ruleInvalidLiteralExpCS | this_NullLiteralExpCS_5= ruleNullLiteralExpCS )
-            int alt61=6;
+            int alt60=6;
             switch ( input.LA(1) ) {
             case RULE_INT:
                 {
-                alt61=1;
+                alt60=1;
                 }
                 break;
             case RULE_SINGLE_QUOTED_STRING:
                 {
-                alt61=2;
+                alt60=2;
                 }
                 break;
             case 80:
             case 81:
                 {
-                alt61=3;
+                alt60=3;
                 }
                 break;
             case 54:
                 {
-                alt61=4;
+                alt60=4;
                 }
                 break;
             case 82:
                 {
-                alt61=5;
+                alt60=5;
                 }
                 break;
             case 83:
                 {
-                alt61=6;
+                alt60=6;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 61, 0, input);
+                    new NoViableAltException("", 60, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt61) {
+            switch (alt60) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3344:2: this_NumberLiteralExpCS_0= ruleNumberLiteralExpCS
                     {
@@ -10128,7 +10117,7 @@
                               newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleNumberLiteralExpCS_in_rulePrimitiveLiteralExpCS7582);
+                    pushFollow(FollowSets000.FOLLOW_ruleNumberLiteralExpCS_in_rulePrimitiveLiteralExpCS7581);
                     this_NumberLiteralExpCS_0=ruleNumberLiteralExpCS();
 
                     state._fsp--;
@@ -10155,7 +10144,7 @@
                               newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteralExpCS_in_rulePrimitiveLiteralExpCS7612);
+                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteralExpCS_in_rulePrimitiveLiteralExpCS7611);
                     this_StringLiteralExpCS_1=ruleStringLiteralExpCS();
 
                     state._fsp--;
@@ -10182,7 +10171,7 @@
                               newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleBooleanLiteralExpCS_in_rulePrimitiveLiteralExpCS7642);
+                    pushFollow(FollowSets000.FOLLOW_ruleBooleanLiteralExpCS_in_rulePrimitiveLiteralExpCS7641);
                     this_BooleanLiteralExpCS_2=ruleBooleanLiteralExpCS();
 
                     state._fsp--;
@@ -10209,7 +10198,7 @@
                               newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleUnlimitedNaturalLiteralExpCS_in_rulePrimitiveLiteralExpCS7672);
+                    pushFollow(FollowSets000.FOLLOW_ruleUnlimitedNaturalLiteralExpCS_in_rulePrimitiveLiteralExpCS7671);
                     this_UnlimitedNaturalLiteralExpCS_3=ruleUnlimitedNaturalLiteralExpCS();
 
                     state._fsp--;
@@ -10236,7 +10225,7 @@
                               newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleInvalidLiteralExpCS_in_rulePrimitiveLiteralExpCS7702);
+                    pushFollow(FollowSets000.FOLLOW_ruleInvalidLiteralExpCS_in_rulePrimitiveLiteralExpCS7701);
                     this_InvalidLiteralExpCS_4=ruleInvalidLiteralExpCS();
 
                     state._fsp--;
@@ -10263,7 +10252,7 @@
                               newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleNullLiteralExpCS_in_rulePrimitiveLiteralExpCS7732);
+                    pushFollow(FollowSets000.FOLLOW_ruleNullLiteralExpCS_in_rulePrimitiveLiteralExpCS7731);
                     this_NullLiteralExpCS_5=ruleNullLiteralExpCS();
 
                     state._fsp--;
@@ -10314,7 +10303,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTupleLiteralExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTupleLiteralExpCS_in_entryRuleTupleLiteralExpCS7767);
+            pushFollow(FollowSets000.FOLLOW_ruleTupleLiteralExpCS_in_entryRuleTupleLiteralExpCS7766);
             iv_ruleTupleLiteralExpCS=ruleTupleLiteralExpCS();
 
             state._fsp--;
@@ -10322,7 +10311,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTupleLiteralExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTupleLiteralExpCS7777); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTupleLiteralExpCS7776); if (state.failed) return current;
 
             }
 
@@ -10362,13 +10351,13 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3441:1: (otherlv_0= 'Tuple' otherlv_1= '{' ( (lv_ownedParts_2_0= ruleTupleLiteralPartCS ) ) (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleTupleLiteralPartCS ) ) )* otherlv_5= '}' )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3441:3: otherlv_0= 'Tuple' otherlv_1= '{' ( (lv_ownedParts_2_0= ruleTupleLiteralPartCS ) ) (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleTupleLiteralPartCS ) ) )* otherlv_5= '}'
             {
-            otherlv_0=(Token)match(input,68,FollowSets000.FOLLOW_68_in_ruleTupleLiteralExpCS7814); if (state.failed) return current;
+            otherlv_0=(Token)match(input,68,FollowSets000.FOLLOW_68_in_ruleTupleLiteralExpCS7813); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_0, grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0());
                   
             }
-            otherlv_1=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleTupleLiteralExpCS7826); if (state.failed) return current;
+            otherlv_1=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleTupleLiteralExpCS7825); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
@@ -10385,7 +10374,7 @@
               	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTupleLiteralPartCS_in_ruleTupleLiteralExpCS7847);
+            pushFollow(FollowSets000.FOLLOW_ruleTupleLiteralPartCS_in_ruleTupleLiteralExpCS7846);
             lv_ownedParts_2_0=ruleTupleLiteralPartCS();
 
             state._fsp--;
@@ -10410,21 +10399,21 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3467:2: (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleTupleLiteralPartCS ) ) )*
-            loop62:
+            loop61:
             do {
-                int alt62=2;
-                int LA62_0 = input.LA(1);
+                int alt61=2;
+                int LA61_0 = input.LA(1);
 
-                if ( (LA62_0==26) ) {
-                    alt62=1;
+                if ( (LA61_0==26) ) {
+                    alt61=1;
                 }
 
 
-                switch (alt62) {
+                switch (alt61) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3467:4: otherlv_3= ',' ( (lv_ownedParts_4_0= ruleTupleLiteralPartCS ) )
             	    {
-            	    otherlv_3=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleTupleLiteralExpCS7860); if (state.failed) return current;
+            	    otherlv_3=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleTupleLiteralExpCS7859); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	          	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0());
@@ -10441,7 +10430,7 @@
             	      	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); 
             	      	    
             	    }
-            	    pushFollow(FollowSets000.FOLLOW_ruleTupleLiteralPartCS_in_ruleTupleLiteralExpCS7881);
+            	    pushFollow(FollowSets000.FOLLOW_ruleTupleLiteralPartCS_in_ruleTupleLiteralExpCS7880);
             	    lv_ownedParts_4_0=ruleTupleLiteralPartCS();
 
             	    state._fsp--;
@@ -10470,11 +10459,11 @@
             	    break;
 
             	default :
-            	    break loop62;
+            	    break loop61;
                 }
             } while (true);
 
-            otherlv_5=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleTupleLiteralExpCS7895); if (state.failed) return current;
+            otherlv_5=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleTupleLiteralExpCS7894); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_5, grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4());
@@ -10517,7 +10506,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTupleLiteralPartCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTupleLiteralPartCS_in_entryRuleTupleLiteralPartCS7931);
+            pushFollow(FollowSets000.FOLLOW_ruleTupleLiteralPartCS_in_entryRuleTupleLiteralPartCS7930);
             iv_ruleTupleLiteralPartCS=ruleTupleLiteralPartCS();
 
             state._fsp--;
@@ -10525,7 +10514,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTupleLiteralPartCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTupleLiteralPartCS7941); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTupleLiteralPartCS7940); if (state.failed) return current;
 
             }
 
@@ -10576,7 +10565,7 @@
               	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleTupleLiteralPartCS7987);
+            pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleTupleLiteralPartCS7986);
             lv_name_0_0=ruleUnrestrictedName();
 
             state._fsp--;
@@ -10601,17 +10590,17 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3532:2: (otherlv_1= ':' ( (lv_ownedType_2_0= ruleTypeExpCS ) ) )?
-            int alt63=2;
-            int LA63_0 = input.LA(1);
+            int alt62=2;
+            int LA62_0 = input.LA(1);
 
-            if ( (LA63_0==23) ) {
-                alt63=1;
+            if ( (LA62_0==23) ) {
+                alt62=1;
             }
-            switch (alt63) {
+            switch (alt62) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3532:4: otherlv_1= ':' ( (lv_ownedType_2_0= ruleTypeExpCS ) )
                     {
-                    otherlv_1=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleTupleLiteralPartCS8000); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleTupleLiteralPartCS7999); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0());
@@ -10628,7 +10617,7 @@
                       	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleTupleLiteralPartCS8021);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleTupleLiteralPartCS8020);
                     lv_ownedType_2_0=ruleTypeExpCS();
 
                     state._fsp--;
@@ -10658,7 +10647,7 @@
 
             }
 
-            otherlv_3=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleTupleLiteralPartCS8035); if (state.failed) return current;
+            otherlv_3=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleTupleLiteralPartCS8034); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2());
@@ -10675,7 +10664,7 @@
               	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleTupleLiteralPartCS8056);
+            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleTupleLiteralPartCS8055);
             lv_ownedInitExpression_4_0=ruleExpCS();
 
             state._fsp--;
@@ -10736,7 +10725,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNumberLiteralExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNumberLiteralExpCS_in_entryRuleNumberLiteralExpCS8092);
+            pushFollow(FollowSets000.FOLLOW_ruleNumberLiteralExpCS_in_entryRuleNumberLiteralExpCS8091);
             iv_ruleNumberLiteralExpCS=ruleNumberLiteralExpCS();
 
             state._fsp--;
@@ -10744,7 +10733,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleNumberLiteralExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNumberLiteralExpCS8102); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNumberLiteralExpCS8101); if (state.failed) return current;
 
             }
 
@@ -10786,7 +10775,7 @@
               	        newCompositeNode(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNUMBER_LITERAL_in_ruleNumberLiteralExpCS8147);
+            pushFollow(FollowSets000.FOLLOW_ruleNUMBER_LITERAL_in_ruleNumberLiteralExpCS8146);
             lv_symbol_0_0=ruleNUMBER_LITERAL();
 
             state._fsp--;
@@ -10844,7 +10833,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getStringLiteralExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleStringLiteralExpCS_in_entryRuleStringLiteralExpCS8182);
+            pushFollow(FollowSets000.FOLLOW_ruleStringLiteralExpCS_in_entryRuleStringLiteralExpCS8181);
             iv_ruleStringLiteralExpCS=ruleStringLiteralExpCS();
 
             state._fsp--;
@@ -10852,7 +10841,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleStringLiteralExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStringLiteralExpCS8192); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStringLiteralExpCS8191); if (state.failed) return current;
 
             }
 
@@ -10884,18 +10873,18 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3636:1: ( (lv_segments_0_0= ruleStringLiteral ) )+
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3636:1: ( (lv_segments_0_0= ruleStringLiteral ) )+
-            int cnt64=0;
-            loop64:
+            int cnt63=0;
+            loop63:
             do {
-                int alt64=2;
-                int LA64_0 = input.LA(1);
+                int alt63=2;
+                int LA63_0 = input.LA(1);
 
-                if ( (LA64_0==RULE_SINGLE_QUOTED_STRING) ) {
-                    alt64=1;
+                if ( (LA63_0==RULE_SINGLE_QUOTED_STRING) ) {
+                    alt63=1;
                 }
 
 
-                switch (alt64) {
+                switch (alt63) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3637:1: (lv_segments_0_0= ruleStringLiteral )
             	    {
@@ -10907,7 +10896,7 @@
             	      	        newCompositeNode(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); 
             	      	    
             	    }
-            	    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_ruleStringLiteralExpCS8237);
+            	    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_ruleStringLiteralExpCS8236);
             	    lv_segments_0_0=ruleStringLiteral();
 
             	    state._fsp--;
@@ -10933,13 +10922,13 @@
             	    break;
 
             	default :
-            	    if ( cnt64 >= 1 ) break loop64;
+            	    if ( cnt63 >= 1 ) break loop63;
             	    if (state.backtracking>0) {state.failed=true; return current;}
                         EarlyExitException eee =
-                            new EarlyExitException(64, input);
+                            new EarlyExitException(63, input);
                         throw eee;
                 }
-                cnt64++;
+                cnt63++;
             } while (true);
 
 
@@ -10976,7 +10965,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getBooleanLiteralExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleBooleanLiteralExpCS_in_entryRuleBooleanLiteralExpCS8273);
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanLiteralExpCS_in_entryRuleBooleanLiteralExpCS8272);
             iv_ruleBooleanLiteralExpCS=ruleBooleanLiteralExpCS();
 
             state._fsp--;
@@ -10984,7 +10973,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleBooleanLiteralExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBooleanLiteralExpCS8283); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBooleanLiteralExpCS8282); if (state.failed) return current;
 
             }
 
@@ -11016,23 +11005,23 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3675:1: ( ( (lv_symbol_0_0= 'true' ) ) | ( (lv_symbol_1_0= 'false' ) ) )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3675:1: ( ( (lv_symbol_0_0= 'true' ) ) | ( (lv_symbol_1_0= 'false' ) ) )
-            int alt65=2;
-            int LA65_0 = input.LA(1);
+            int alt64=2;
+            int LA64_0 = input.LA(1);
 
-            if ( (LA65_0==80) ) {
-                alt65=1;
+            if ( (LA64_0==80) ) {
+                alt64=1;
             }
-            else if ( (LA65_0==81) ) {
-                alt65=2;
+            else if ( (LA64_0==81) ) {
+                alt64=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 65, 0, input);
+                    new NoViableAltException("", 64, 0, input);
 
                 throw nvae;
             }
-            switch (alt65) {
+            switch (alt64) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3675:2: ( (lv_symbol_0_0= 'true' ) )
                     {
@@ -11042,7 +11031,7 @@
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3676:1: (lv_symbol_0_0= 'true' )
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3677:3: lv_symbol_0_0= 'true'
                     {
-                    lv_symbol_0_0=(Token)match(input,80,FollowSets000.FOLLOW_80_in_ruleBooleanLiteralExpCS8326); if (state.failed) return current;
+                    lv_symbol_0_0=(Token)match(input,80,FollowSets000.FOLLOW_80_in_ruleBooleanLiteralExpCS8325); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               newLeafNode(lv_symbol_0_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0());
@@ -11074,7 +11063,7 @@
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3692:1: (lv_symbol_1_0= 'false' )
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3693:3: lv_symbol_1_0= 'false'
                     {
-                    lv_symbol_1_0=(Token)match(input,81,FollowSets000.FOLLOW_81_in_ruleBooleanLiteralExpCS8363); if (state.failed) return current;
+                    lv_symbol_1_0=(Token)match(input,81,FollowSets000.FOLLOW_81_in_ruleBooleanLiteralExpCS8362); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               newLeafNode(lv_symbol_1_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0());
@@ -11134,7 +11123,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleUnlimitedNaturalLiteralExpCS_in_entryRuleUnlimitedNaturalLiteralExpCS8412);
+            pushFollow(FollowSets000.FOLLOW_ruleUnlimitedNaturalLiteralExpCS_in_entryRuleUnlimitedNaturalLiteralExpCS8411);
             iv_ruleUnlimitedNaturalLiteralExpCS=ruleUnlimitedNaturalLiteralExpCS();
 
             state._fsp--;
@@ -11142,7 +11131,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleUnlimitedNaturalLiteralExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUnlimitedNaturalLiteralExpCS8422); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUnlimitedNaturalLiteralExpCS8421); if (state.failed) return current;
 
             }
 
@@ -11193,7 +11182,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,54,FollowSets000.FOLLOW_54_in_ruleUnlimitedNaturalLiteralExpCS8471); if (state.failed) return current;
+            otherlv_1=(Token)match(input,54,FollowSets000.FOLLOW_54_in_ruleUnlimitedNaturalLiteralExpCS8470); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_1, grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1());
@@ -11236,7 +11225,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getInvalidLiteralExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleInvalidLiteralExpCS_in_entryRuleInvalidLiteralExpCS8507);
+            pushFollow(FollowSets000.FOLLOW_ruleInvalidLiteralExpCS_in_entryRuleInvalidLiteralExpCS8506);
             iv_ruleInvalidLiteralExpCS=ruleInvalidLiteralExpCS();
 
             state._fsp--;
@@ -11244,7 +11233,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleInvalidLiteralExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInvalidLiteralExpCS8517); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInvalidLiteralExpCS8516); if (state.failed) return current;
 
             }
 
@@ -11295,7 +11284,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,82,FollowSets000.FOLLOW_82_in_ruleInvalidLiteralExpCS8566); if (state.failed) return current;
+            otherlv_1=(Token)match(input,82,FollowSets000.FOLLOW_82_in_ruleInvalidLiteralExpCS8565); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_1, grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1());
@@ -11338,7 +11327,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNullLiteralExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNullLiteralExpCS_in_entryRuleNullLiteralExpCS8602);
+            pushFollow(FollowSets000.FOLLOW_ruleNullLiteralExpCS_in_entryRuleNullLiteralExpCS8601);
             iv_ruleNullLiteralExpCS=ruleNullLiteralExpCS();
 
             state._fsp--;
@@ -11346,7 +11335,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleNullLiteralExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNullLiteralExpCS8612); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNullLiteralExpCS8611); if (state.failed) return current;
 
             }
 
@@ -11397,7 +11386,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,83,FollowSets000.FOLLOW_83_in_ruleNullLiteralExpCS8661); if (state.failed) return current;
+            otherlv_1=(Token)match(input,83,FollowSets000.FOLLOW_83_in_ruleNullLiteralExpCS8660); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_1, grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1());
@@ -11440,7 +11429,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTypeLiteralCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralCS_in_entryRuleTypeLiteralCS8697);
+            pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralCS_in_entryRuleTypeLiteralCS8696);
             iv_ruleTypeLiteralCS=ruleTypeLiteralCS();
 
             state._fsp--;
@@ -11448,7 +11437,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTypeLiteralCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeLiteralCS8707); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeLiteralCS8706); if (state.failed) return current;
 
             }
 
@@ -11484,7 +11473,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3829:1: (this_PrimitiveTypeCS_0= rulePrimitiveTypeCS | this_CollectionTypeCS_1= ruleCollectionTypeCS | this_TupleTypeCS_2= ruleTupleTypeCS )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3829:1: (this_PrimitiveTypeCS_0= rulePrimitiveTypeCS | this_CollectionTypeCS_1= ruleCollectionTypeCS | this_TupleTypeCS_2= ruleTupleTypeCS )
-            int alt66=3;
+            int alt65=3;
             switch ( input.LA(1) ) {
             case 42:
             case 43:
@@ -11497,7 +11486,7 @@
             case 50:
             case 51:
                 {
-                alt66=1;
+                alt65=1;
                 }
                 break;
             case 70:
@@ -11506,23 +11495,23 @@
             case 73:
             case 74:
                 {
-                alt66=2;
+                alt65=2;
                 }
                 break;
             case 68:
                 {
-                alt66=3;
+                alt65=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 66, 0, input);
+                    new NoViableAltException("", 65, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt66) {
+            switch (alt65) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3830:2: this_PrimitiveTypeCS_0= rulePrimitiveTypeCS
                     {
@@ -11536,7 +11525,7 @@
                               newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_rulePrimitiveTypeCS_in_ruleTypeLiteralCS8757);
+                    pushFollow(FollowSets000.FOLLOW_rulePrimitiveTypeCS_in_ruleTypeLiteralCS8756);
                     this_PrimitiveTypeCS_0=rulePrimitiveTypeCS();
 
                     state._fsp--;
@@ -11563,7 +11552,7 @@
                               newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleCollectionTypeCS_in_ruleTypeLiteralCS8787);
+                    pushFollow(FollowSets000.FOLLOW_ruleCollectionTypeCS_in_ruleTypeLiteralCS8786);
                     this_CollectionTypeCS_1=ruleCollectionTypeCS();
 
                     state._fsp--;
@@ -11590,7 +11579,7 @@
                               newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTupleTypeCS_in_ruleTypeLiteralCS8817);
+                    pushFollow(FollowSets000.FOLLOW_ruleTupleTypeCS_in_ruleTypeLiteralCS8816);
                     this_TupleTypeCS_2=ruleTupleTypeCS();
 
                     state._fsp--;
@@ -11641,7 +11630,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralWithMultiplicityCS_in_entryRuleTypeLiteralWithMultiplicityCS8852);
+            pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralWithMultiplicityCS_in_entryRuleTypeLiteralWithMultiplicityCS8851);
             iv_ruleTypeLiteralWithMultiplicityCS=ruleTypeLiteralWithMultiplicityCS();
 
             state._fsp--;
@@ -11649,7 +11638,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTypeLiteralWithMultiplicityCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeLiteralWithMultiplicityCS8862); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeLiteralWithMultiplicityCS8861); if (state.failed) return current;
 
             }
 
@@ -11695,7 +11684,7 @@
                       newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); 
                   
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralCS_in_ruleTypeLiteralWithMultiplicityCS8912);
+            pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralCS_in_ruleTypeLiteralWithMultiplicityCS8911);
             this_TypeLiteralCS_0=ruleTypeLiteralCS();
 
             state._fsp--;
@@ -11707,13 +11696,13 @@
                   
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3900:1: ( (lv_ownedMultiplicity_1_0= ruleMultiplicityCS ) )?
-            int alt67=2;
-            int LA67_0 = input.LA(1);
+            int alt66=2;
+            int LA66_0 = input.LA(1);
 
-            if ( (LA67_0==85) ) {
-                alt67=1;
+            if ( (LA66_0==85) ) {
+                alt66=1;
             }
-            switch (alt67) {
+            switch (alt66) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3901:1: (lv_ownedMultiplicity_1_0= ruleMultiplicityCS )
                     {
@@ -11725,7 +11714,7 @@
                       	        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleMultiplicityCS_in_ruleTypeLiteralWithMultiplicityCS8932);
+                    pushFollow(FollowSets000.FOLLOW_ruleMultiplicityCS_in_ruleTypeLiteralWithMultiplicityCS8931);
                     lv_ownedMultiplicity_1_0=ruleMultiplicityCS();
 
                     state._fsp--;
@@ -11789,7 +11778,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTypeLiteralExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralExpCS_in_entryRuleTypeLiteralExpCS8969);
+            pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralExpCS_in_entryRuleTypeLiteralExpCS8968);
             iv_ruleTypeLiteralExpCS=ruleTypeLiteralExpCS();
 
             state._fsp--;
@@ -11797,7 +11786,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTypeLiteralExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeLiteralExpCS8979); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeLiteralExpCS8978); if (state.failed) return current;
 
             }
 
@@ -11839,7 +11828,7 @@
               	        newCompositeNode(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralWithMultiplicityCS_in_ruleTypeLiteralExpCS9024);
+            pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralWithMultiplicityCS_in_ruleTypeLiteralExpCS9023);
             lv_ownedType_0_0=ruleTypeLiteralWithMultiplicityCS();
 
             state._fsp--;
@@ -11897,7 +11886,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTypeNameExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypeNameExpCS_in_entryRuleTypeNameExpCS9059);
+            pushFollow(FollowSets000.FOLLOW_ruleTypeNameExpCS_in_entryRuleTypeNameExpCS9058);
             iv_ruleTypeNameExpCS=ruleTypeNameExpCS();
 
             state._fsp--;
@@ -11905,7 +11894,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTypeNameExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeNameExpCS9069); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeNameExpCS9068); if (state.failed) return current;
 
             }
 
@@ -11956,7 +11945,7 @@
               	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_rulePathNameCS_in_ruleTypeNameExpCS9115);
+            pushFollow(FollowSets000.FOLLOW_rulePathNameCS_in_ruleTypeNameExpCS9114);
             lv_ownedPathName_0_0=rulePathNameCS();
 
             state._fsp--;
@@ -11981,13 +11970,13 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3996:2: ( ( (lv_ownedCurlyBracketedClause_1_0= ruleCurlyBracketedClauseCS ) ) (otherlv_2= '{' ( (lv_ownedPatternGuard_3_0= ruleExpCS ) ) otherlv_4= '}' )? )?
-            int alt69=2;
-            int LA69_0 = input.LA(1);
+            int alt68=2;
+            int LA68_0 = input.LA(1);
 
-            if ( (LA69_0==75) ) {
-                alt69=1;
+            if ( (LA68_0==75) ) {
+                alt68=1;
             }
-            switch (alt69) {
+            switch (alt68) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:3996:3: ( (lv_ownedCurlyBracketedClause_1_0= ruleCurlyBracketedClauseCS ) ) (otherlv_2= '{' ( (lv_ownedPatternGuard_3_0= ruleExpCS ) ) otherlv_4= '}' )?
                     {
@@ -12002,7 +11991,7 @@
                       	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleCurlyBracketedClauseCS_in_ruleTypeNameExpCS9137);
+                    pushFollow(FollowSets000.FOLLOW_ruleCurlyBracketedClauseCS_in_ruleTypeNameExpCS9136);
                     lv_ownedCurlyBracketedClause_1_0=ruleCurlyBracketedClauseCS();
 
                     state._fsp--;
@@ -12027,17 +12016,17 @@
                     }
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4014:2: (otherlv_2= '{' ( (lv_ownedPatternGuard_3_0= ruleExpCS ) ) otherlv_4= '}' )?
-                    int alt68=2;
-                    int LA68_0 = input.LA(1);
+                    int alt67=2;
+                    int LA67_0 = input.LA(1);
 
-                    if ( (LA68_0==75) ) {
-                        alt68=1;
+                    if ( (LA67_0==75) ) {
+                        alt67=1;
                     }
-                    switch (alt68) {
+                    switch (alt67) {
                         case 1 :
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4014:4: otherlv_2= '{' ( (lv_ownedPatternGuard_3_0= ruleExpCS ) ) otherlv_4= '}'
                             {
-                            otherlv_2=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleTypeNameExpCS9150); if (state.failed) return current;
+                            otherlv_2=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleTypeNameExpCS9149); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                                   	newLeafNode(otherlv_2, grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0());
@@ -12054,7 +12043,7 @@
                               	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); 
                               	    
                             }
-                            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleTypeNameExpCS9171);
+                            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleTypeNameExpCS9170);
                             lv_ownedPatternGuard_3_0=ruleExpCS();
 
                             state._fsp--;
@@ -12078,7 +12067,7 @@
 
                             }
 
-                            otherlv_4=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleTypeNameExpCS9183); if (state.failed) return current;
+                            otherlv_4=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleTypeNameExpCS9182); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                                   	newLeafNode(otherlv_4, grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2());
@@ -12133,7 +12122,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTypeExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_entryRuleTypeExpCS9223);
+            pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_entryRuleTypeExpCS9222);
             iv_ruleTypeExpCS=ruleTypeExpCS();
 
             state._fsp--;
@@ -12141,7 +12130,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTypeExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeExpCS9233); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeExpCS9232); if (state.failed) return current;
 
             }
 
@@ -12182,9 +12171,9 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4061:2: (this_TypeNameExpCS_0= ruleTypeNameExpCS | this_TypeLiteralCS_1= ruleTypeLiteralCS | this_CollectionPatternCS_2= ruleCollectionPatternCS ) ( (lv_ownedMultiplicity_3_0= ruleMultiplicityCS ) )?
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4061:2: (this_TypeNameExpCS_0= ruleTypeNameExpCS | this_TypeLiteralCS_1= ruleTypeLiteralCS | this_CollectionPatternCS_2= ruleCollectionPatternCS )
-            int alt70=3;
-            alt70 = dfa70.predict(input);
-            switch (alt70) {
+            int alt69=3;
+            alt69 = dfa69.predict(input);
+            switch (alt69) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4062:2: this_TypeNameExpCS_0= ruleTypeNameExpCS
                     {
@@ -12198,7 +12187,7 @@
                               newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypeNameExpCS_in_ruleTypeExpCS9284);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypeNameExpCS_in_ruleTypeExpCS9283);
                     this_TypeNameExpCS_0=ruleTypeNameExpCS();
 
                     state._fsp--;
@@ -12225,7 +12214,7 @@
                               newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralCS_in_ruleTypeExpCS9314);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralCS_in_ruleTypeExpCS9313);
                     this_TypeLiteralCS_1=ruleTypeLiteralCS();
 
                     state._fsp--;
@@ -12252,7 +12241,7 @@
                               newCompositeNode(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleCollectionPatternCS_in_ruleTypeExpCS9344);
+                    pushFollow(FollowSets000.FOLLOW_ruleCollectionPatternCS_in_ruleTypeExpCS9343);
                     this_CollectionPatternCS_2=ruleCollectionPatternCS();
 
                     state._fsp--;
@@ -12270,13 +12259,13 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4099:2: ( (lv_ownedMultiplicity_3_0= ruleMultiplicityCS ) )?
-            int alt71=2;
-            int LA71_0 = input.LA(1);
+            int alt70=2;
+            int LA70_0 = input.LA(1);
 
-            if ( (LA71_0==85) ) {
-                alt71=1;
+            if ( (LA70_0==85) ) {
+                alt70=1;
             }
-            switch (alt71) {
+            switch (alt70) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4100:1: (lv_ownedMultiplicity_3_0= ruleMultiplicityCS )
                     {
@@ -12288,7 +12277,7 @@
                       	        newCompositeNode(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleMultiplicityCS_in_ruleTypeExpCS9365);
+                    pushFollow(FollowSets000.FOLLOW_ruleMultiplicityCS_in_ruleTypeExpCS9364);
                     lv_ownedMultiplicity_3_0=ruleMultiplicityCS();
 
                     state._fsp--;
@@ -12352,7 +12341,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_entryRuleExpCS9402);
+            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_entryRuleExpCS9401);
             iv_ruleExpCS=ruleExpCS();
 
             state._fsp--;
@@ -12360,7 +12349,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExpCS9412); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExpCS9411); if (state.failed) return current;
 
             }
 
@@ -12398,9 +12387,9 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4138:1: ( (this_PrefixedPrimaryExpCS_0= rulePrefixedPrimaryExpCS ( () ( (lv_name_2_0= ruleBinaryOperatorName ) ) ( (lv_ownedRight_3_0= ruleExpCS ) ) )? ) | this_PrefixedLetExpCS_4= rulePrefixedLetExpCS )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4138:1: ( (this_PrefixedPrimaryExpCS_0= rulePrefixedPrimaryExpCS ( () ( (lv_name_2_0= ruleBinaryOperatorName ) ) ( (lv_ownedRight_3_0= ruleExpCS ) ) )? ) | this_PrefixedLetExpCS_4= rulePrefixedLetExpCS )
-            int alt73=2;
-            alt73 = dfa73.predict(input);
-            switch (alt73) {
+            int alt72=2;
+            alt72 = dfa72.predict(input);
+            switch (alt72) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4138:2: (this_PrefixedPrimaryExpCS_0= rulePrefixedPrimaryExpCS ( () ( (lv_name_2_0= ruleBinaryOperatorName ) ) ( (lv_ownedRight_3_0= ruleExpCS ) ) )? )
                     {
@@ -12417,7 +12406,7 @@
                               newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_rulePrefixedPrimaryExpCS_in_ruleExpCS9463);
+                    pushFollow(FollowSets000.FOLLOW_rulePrefixedPrimaryExpCS_in_ruleExpCS9462);
                     this_PrefixedPrimaryExpCS_0=rulePrefixedPrimaryExpCS();
 
                     state._fsp--;
@@ -12429,13 +12418,13 @@
                           
                     }
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4150:1: ( () ( (lv_name_2_0= ruleBinaryOperatorName ) ) ( (lv_ownedRight_3_0= ruleExpCS ) ) )?
-                    int alt72=2;
-                    int LA72_0 = input.LA(1);
+                    int alt71=2;
+                    int LA71_0 = input.LA(1);
 
-                    if ( ((LA72_0>=17 && LA72_0<=18)||LA72_0==27||(LA72_0>=39 && LA72_0<=40)||LA72_0==52||(LA72_0>=54 && LA72_0<=67)) ) {
-                        alt72=1;
+                    if ( ((LA71_0>=17 && LA71_0<=18)||LA71_0==27||(LA71_0>=39 && LA71_0<=40)||LA71_0==52||(LA71_0>=54 && LA71_0<=67)) ) {
+                        alt71=1;
                     }
-                    switch (alt72) {
+                    switch (alt71) {
                         case 1 :
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4150:2: () ( (lv_name_2_0= ruleBinaryOperatorName ) ) ( (lv_ownedRight_3_0= ruleExpCS ) )
                             {
@@ -12468,7 +12457,7 @@
                               	        newCompositeNode(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); 
                               	    
                             }
-                            pushFollow(FollowSets000.FOLLOW_ruleBinaryOperatorName_in_ruleExpCS9496);
+                            pushFollow(FollowSets000.FOLLOW_ruleBinaryOperatorName_in_ruleExpCS9495);
                             lv_name_2_0=ruleBinaryOperatorName();
 
                             state._fsp--;
@@ -12503,7 +12492,7 @@
                               	        newCompositeNode(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); 
                               	    
                             }
-                            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleExpCS9517);
+                            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleExpCS9516);
                             lv_ownedRight_3_0=ruleExpCS();
 
                             state._fsp--;
@@ -12552,7 +12541,7 @@
                               newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_rulePrefixedLetExpCS_in_ruleExpCS9551);
+                    pushFollow(FollowSets000.FOLLOW_rulePrefixedLetExpCS_in_ruleExpCS9550);
                     this_PrefixedLetExpCS_4=rulePrefixedLetExpCS();
 
                     state._fsp--;
@@ -12603,7 +12592,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPrefixedLetExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_rulePrefixedLetExpCS_in_entryRulePrefixedLetExpCS9586);
+            pushFollow(FollowSets000.FOLLOW_rulePrefixedLetExpCS_in_entryRulePrefixedLetExpCS9585);
             iv_rulePrefixedLetExpCS=rulePrefixedLetExpCS();
 
             state._fsp--;
@@ -12611,7 +12600,7 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePrefixedLetExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePrefixedLetExpCS9596); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePrefixedLetExpCS9595); if (state.failed) return current;
 
             }
 
@@ -12647,23 +12636,23 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4229:1: ( ( () ( (lv_name_1_0= ruleUnaryOperatorName ) ) ( (lv_ownedRight_2_0= rulePrefixedLetExpCS ) ) ) | this_LetExpCS_3= ruleLetExpCS )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4229:1: ( ( () ( (lv_name_1_0= ruleUnaryOperatorName ) ) ( (lv_ownedRight_2_0= rulePrefixedLetExpCS ) ) ) | this_LetExpCS_3= ruleLetExpCS )
-            int alt74=2;
-            int LA74_0 = input.LA(1);
+            int alt73=2;
+            int LA73_0 = input.LA(1);
 
-            if ( ((LA74_0>=52 && LA74_0<=53)) ) {
-                alt74=1;
+            if ( ((LA73_0>=52 && LA73_0<=53)) ) {
+                alt73=1;
             }
-            else if ( (LA74_0==95) ) {
-                alt74=2;
+            else if ( (LA73_0==95) ) {
+                alt73=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 74, 0, input);
+                    new NoViableAltException("", 73, 0, input);
 
                 throw nvae;
             }
-            switch (alt74) {
+            switch (alt73) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4229:2: ( () ( (lv_name_1_0= ruleUnaryOperatorName ) ) ( (lv_ownedRight_2_0= rulePrefixedLetExpCS ) ) )
                     {
@@ -12699,7 +12688,7 @@
                       	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleUnaryOperatorName_in_rulePrefixedLetExpCS9655);
+                    pushFollow(FollowSets000.FOLLOW_ruleUnaryOperatorName_in_rulePrefixedLetExpCS9654);
                     lv_name_1_0=ruleUnaryOperatorName();
 
                     state._fsp--;
@@ -12734,7 +12723,7 @@
                       	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_rulePrefixedLetExpCS_in_rulePrefixedLetExpCS9676);
+                    pushFollow(FollowSets000.FOLLOW_rulePrefixedLetExpCS_in_rulePrefixedLetExpCS9675);
                     lv_ownedRight_2_0=rulePrefixedLetExpCS();
 
                     state._fsp--;
@@ -12777,7 +12766,7 @@
                               newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleLetExpCS_in_rulePrefixedLetExpCS9708);
+                    pushFollow(FollowSets000.FOLLOW_ruleLetExpCS_in_rulePrefixedLetExpCS9707);
                     this_LetExpCS_3=ruleLetExpCS();
 
                     state._fsp--;
@@ -12828,7 +12817,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_rulePrefixedPrimaryExpCS_in_entryRulePrefixedPrimaryExpCS9743);
+            pushFollow(FollowSets000.FOLLOW_rulePrefixedPrimaryExpCS_in_entryRulePrefixedPrimaryExpCS9742);
             iv_rulePrefixedPrimaryExpCS=rulePrefixedPrimaryExpCS();
 
             state._fsp--;
@@ -12836,7 +12825,7 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePrefixedPrimaryExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePrefixedPrimaryExpCS9753); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePrefixedPrimaryExpCS9752); if (state.failed) return current;
 
             }
 
@@ -12872,23 +12861,23 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4308:1: ( ( () ( (lv_name_1_0= ruleUnaryOperatorName ) ) ( (lv_ownedRight_2_0= rulePrefixedPrimaryExpCS ) ) ) | this_PrimaryExpCS_3= rulePrimaryExpCS )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4308:1: ( ( () ( (lv_name_1_0= ruleUnaryOperatorName ) ) ( (lv_ownedRight_2_0= rulePrefixedPrimaryExpCS ) ) ) | this_PrimaryExpCS_3= rulePrimaryExpCS )
-            int alt75=2;
-            int LA75_0 = input.LA(1);
+            int alt74=2;
+            int LA74_0 = input.LA(1);
 
-            if ( ((LA75_0>=52 && LA75_0<=53)) ) {
-                alt75=1;
+            if ( ((LA74_0>=52 && LA74_0<=53)) ) {
+                alt74=1;
             }
-            else if ( ((LA75_0>=RULE_SIMPLE_ID && LA75_0<=RULE_SINGLE_QUOTED_STRING)||LA75_0==21||LA75_0==28||(LA75_0>=30 && LA75_0<=31)||(LA75_0>=42 && LA75_0<=51)||LA75_0==54||LA75_0==68||(LA75_0>=70 && LA75_0<=74)||(LA75_0>=79 && LA75_0<=83)||LA75_0==90||LA75_0==96) ) {
-                alt75=2;
+            else if ( ((LA74_0>=RULE_SIMPLE_ID && LA74_0<=RULE_SINGLE_QUOTED_STRING)||LA74_0==21||LA74_0==28||(LA74_0>=30 && LA74_0<=31)||(LA74_0>=42 && LA74_0<=51)||LA74_0==54||LA74_0==68||(LA74_0>=70 && LA74_0<=74)||(LA74_0>=79 && LA74_0<=83)||LA74_0==90||LA74_0==96) ) {
+                alt74=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 75, 0, input);
+                    new NoViableAltException("", 74, 0, input);
 
                 throw nvae;
             }
-            switch (alt75) {
+            switch (alt74) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4308:2: ( () ( (lv_name_1_0= ruleUnaryOperatorName ) ) ( (lv_ownedRight_2_0= rulePrefixedPrimaryExpCS ) ) )
                     {
@@ -12924,7 +12913,7 @@
                       	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleUnaryOperatorName_in_rulePrefixedPrimaryExpCS9812);
+                    pushFollow(FollowSets000.FOLLOW_ruleUnaryOperatorName_in_rulePrefixedPrimaryExpCS9811);
                     lv_name_1_0=ruleUnaryOperatorName();
 
                     state._fsp--;
@@ -12959,7 +12948,7 @@
                       	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_rulePrefixedPrimaryExpCS_in_rulePrefixedPrimaryExpCS9833);
+                    pushFollow(FollowSets000.FOLLOW_rulePrefixedPrimaryExpCS_in_rulePrefixedPrimaryExpCS9832);
                     lv_ownedRight_2_0=rulePrefixedPrimaryExpCS();
 
                     state._fsp--;
@@ -13002,7 +12991,7 @@
                               newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_rulePrimaryExpCS_in_rulePrefixedPrimaryExpCS9865);
+                    pushFollow(FollowSets000.FOLLOW_rulePrimaryExpCS_in_rulePrefixedPrimaryExpCS9864);
                     this_PrimaryExpCS_3=rulePrimaryExpCS();
 
                     state._fsp--;
@@ -13053,7 +13042,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPrimaryExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_rulePrimaryExpCS_in_entryRulePrimaryExpCS9900);
+            pushFollow(FollowSets000.FOLLOW_rulePrimaryExpCS_in_entryRulePrimaryExpCS9899);
             iv_rulePrimaryExpCS=rulePrimaryExpCS();
 
             state._fsp--;
@@ -13061,7 +13050,7 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePrimaryExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePrimaryExpCS9910); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePrimaryExpCS9909); if (state.failed) return current;
 
             }
 
@@ -13109,9 +13098,9 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4387:1: (this_NestedExpCS_0= ruleNestedExpCS | this_IfExpCS_1= ruleIfExpCS | this_SelfExpCS_2= ruleSelfExpCS | this_PrimitiveLiteralExpCS_3= rulePrimitiveLiteralExpCS | this_TupleLiteralExpCS_4= ruleTupleLiteralExpCS | this_CollectionLiteralExpCS_5= ruleCollectionLiteralExpCS | this_LambdaLiteralExpCS_6= ruleLambdaLiteralExpCS | this_TypeLiteralExpCS_7= ruleTypeLiteralExpCS | this_NameExpCS_8= ruleNameExpCS )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4387:1: (this_NestedExpCS_0= ruleNestedExpCS | this_IfExpCS_1= ruleIfExpCS | this_SelfExpCS_2= ruleSelfExpCS | this_PrimitiveLiteralExpCS_3= rulePrimitiveLiteralExpCS | this_TupleLiteralExpCS_4= ruleTupleLiteralExpCS | this_CollectionLiteralExpCS_5= ruleCollectionLiteralExpCS | this_LambdaLiteralExpCS_6= ruleLambdaLiteralExpCS | this_TypeLiteralExpCS_7= ruleTypeLiteralExpCS | this_NameExpCS_8= ruleNameExpCS )
-            int alt76=9;
-            alt76 = dfa76.predict(input);
-            switch (alt76) {
+            int alt75=9;
+            alt75 = dfa75.predict(input);
+            switch (alt75) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4388:2: this_NestedExpCS_0= ruleNestedExpCS
                     {
@@ -13125,7 +13114,7 @@
                               newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleNestedExpCS_in_rulePrimaryExpCS9960);
+                    pushFollow(FollowSets000.FOLLOW_ruleNestedExpCS_in_rulePrimaryExpCS9959);
                     this_NestedExpCS_0=ruleNestedExpCS();
 
                     state._fsp--;
@@ -13152,7 +13141,7 @@
                               newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleIfExpCS_in_rulePrimaryExpCS9990);
+                    pushFollow(FollowSets000.FOLLOW_ruleIfExpCS_in_rulePrimaryExpCS9989);
                     this_IfExpCS_1=ruleIfExpCS();
 
                     state._fsp--;
@@ -13179,7 +13168,7 @@
                               newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleSelfExpCS_in_rulePrimaryExpCS10020);
+                    pushFollow(FollowSets000.FOLLOW_ruleSelfExpCS_in_rulePrimaryExpCS10019);
                     this_SelfExpCS_2=ruleSelfExpCS();
 
                     state._fsp--;
@@ -13206,7 +13195,7 @@
                               newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_rulePrimitiveLiteralExpCS_in_rulePrimaryExpCS10050);
+                    pushFollow(FollowSets000.FOLLOW_rulePrimitiveLiteralExpCS_in_rulePrimaryExpCS10049);
                     this_PrimitiveLiteralExpCS_3=rulePrimitiveLiteralExpCS();
 
                     state._fsp--;
@@ -13233,7 +13222,7 @@
                               newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTupleLiteralExpCS_in_rulePrimaryExpCS10080);
+                    pushFollow(FollowSets000.FOLLOW_ruleTupleLiteralExpCS_in_rulePrimaryExpCS10079);
                     this_TupleLiteralExpCS_4=ruleTupleLiteralExpCS();
 
                     state._fsp--;
@@ -13260,7 +13249,7 @@
                               newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleCollectionLiteralExpCS_in_rulePrimaryExpCS10110);
+                    pushFollow(FollowSets000.FOLLOW_ruleCollectionLiteralExpCS_in_rulePrimaryExpCS10109);
                     this_CollectionLiteralExpCS_5=ruleCollectionLiteralExpCS();
 
                     state._fsp--;
@@ -13287,7 +13276,7 @@
                               newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleLambdaLiteralExpCS_in_rulePrimaryExpCS10140);
+                    pushFollow(FollowSets000.FOLLOW_ruleLambdaLiteralExpCS_in_rulePrimaryExpCS10139);
                     this_LambdaLiteralExpCS_6=ruleLambdaLiteralExpCS();
 
                     state._fsp--;
@@ -13314,7 +13303,7 @@
                               newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralExpCS_in_rulePrimaryExpCS10170);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralExpCS_in_rulePrimaryExpCS10169);
                     this_TypeLiteralExpCS_7=ruleTypeLiteralExpCS();
 
                     state._fsp--;
@@ -13341,7 +13330,7 @@
                               newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleNameExpCS_in_rulePrimaryExpCS10200);
+                    pushFollow(FollowSets000.FOLLOW_ruleNameExpCS_in_rulePrimaryExpCS10199);
                     this_NameExpCS_8=ruleNameExpCS();
 
                     state._fsp--;
@@ -13392,7 +13381,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNameExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNameExpCS_in_entryRuleNameExpCS10235);
+            pushFollow(FollowSets000.FOLLOW_ruleNameExpCS_in_entryRuleNameExpCS10234);
             iv_ruleNameExpCS=ruleNameExpCS();
 
             state._fsp--;
@@ -13400,7 +13389,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleNameExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNameExpCS10245); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNameExpCS10244); if (state.failed) return current;
 
             }
 
@@ -13453,7 +13442,7 @@
               	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_rulePathNameCS_in_ruleNameExpCS10291);
+            pushFollow(FollowSets000.FOLLOW_rulePathNameCS_in_ruleNameExpCS10290);
             lv_ownedPathName_0_0=rulePathNameCS();
 
             state._fsp--;
@@ -13478,17 +13467,17 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4542:2: ( (lv_ownedSquareBracketedClauses_1_0= ruleSquareBracketedClauseCS ) )*
-            loop77:
+            loop76:
             do {
-                int alt77=2;
-                int LA77_0 = input.LA(1);
+                int alt76=2;
+                int LA76_0 = input.LA(1);
 
-                if ( (LA77_0==85) ) {
-                    alt77=1;
+                if ( (LA76_0==85) ) {
+                    alt76=1;
                 }
 
 
-                switch (alt77) {
+                switch (alt76) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4543:1: (lv_ownedSquareBracketedClauses_1_0= ruleSquareBracketedClauseCS )
             	    {
@@ -13500,7 +13489,7 @@
             	      	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); 
             	      	    
             	    }
-            	    pushFollow(FollowSets000.FOLLOW_ruleSquareBracketedClauseCS_in_ruleNameExpCS10312);
+            	    pushFollow(FollowSets000.FOLLOW_ruleSquareBracketedClauseCS_in_ruleNameExpCS10311);
             	    lv_ownedSquareBracketedClauses_1_0=ruleSquareBracketedClauseCS();
 
             	    state._fsp--;
@@ -13526,18 +13515,18 @@
             	    break;
 
             	default :
-            	    break loop77;
+            	    break loop76;
                 }
             } while (true);
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4560:3: ( (lv_ownedRoundBracketedClause_2_0= ruleRoundBracketedClauseCS ) )?
-            int alt78=2;
-            int LA78_0 = input.LA(1);
+            int alt77=2;
+            int LA77_0 = input.LA(1);
 
-            if ( (LA78_0==21) ) {
-                alt78=1;
+            if ( (LA77_0==21) ) {
+                alt77=1;
             }
-            switch (alt78) {
+            switch (alt77) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4561:1: (lv_ownedRoundBracketedClause_2_0= ruleRoundBracketedClauseCS )
                     {
@@ -13549,7 +13538,7 @@
                       	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleRoundBracketedClauseCS_in_ruleNameExpCS10334);
+                    pushFollow(FollowSets000.FOLLOW_ruleRoundBracketedClauseCS_in_ruleNameExpCS10333);
                     lv_ownedRoundBracketedClause_2_0=ruleRoundBracketedClauseCS();
 
                     state._fsp--;
@@ -13577,13 +13566,13 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4578:3: ( (lv_ownedCurlyBracketedClause_3_0= ruleCurlyBracketedClauseCS ) )?
-            int alt79=2;
-            int LA79_0 = input.LA(1);
+            int alt78=2;
+            int LA78_0 = input.LA(1);
 
-            if ( (LA79_0==75) ) {
-                alt79=1;
+            if ( (LA78_0==75) ) {
+                alt78=1;
             }
-            switch (alt79) {
+            switch (alt78) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4579:1: (lv_ownedCurlyBracketedClause_3_0= ruleCurlyBracketedClauseCS )
                     {
@@ -13595,7 +13584,7 @@
                       	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleCurlyBracketedClauseCS_in_ruleNameExpCS10356);
+                    pushFollow(FollowSets000.FOLLOW_ruleCurlyBracketedClauseCS_in_ruleNameExpCS10355);
                     lv_ownedCurlyBracketedClause_3_0=ruleCurlyBracketedClauseCS();
 
                     state._fsp--;
@@ -13623,13 +13612,13 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4596:3: ( ( (lv_isPre_4_0= '@' ) ) otherlv_5= 'pre' )?
-            int alt80=2;
-            int LA80_0 = input.LA(1);
+            int alt79=2;
+            int LA79_0 = input.LA(1);
 
-            if ( (LA80_0==84) ) {
-                alt80=1;
+            if ( (LA79_0==84) ) {
+                alt79=1;
             }
-            switch (alt80) {
+            switch (alt79) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4596:4: ( (lv_isPre_4_0= '@' ) ) otherlv_5= 'pre'
                     {
@@ -13639,7 +13628,7 @@
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4597:1: (lv_isPre_4_0= '@' )
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4598:3: lv_isPre_4_0= '@'
                     {
-                    lv_isPre_4_0=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleNameExpCS10376); if (state.failed) return current;
+                    lv_isPre_4_0=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleNameExpCS10375); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               newLeafNode(lv_isPre_4_0, grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0());
@@ -13659,7 +13648,7 @@
 
                     }
 
-                    otherlv_5=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleNameExpCS10401); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleNameExpCS10400); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_5, grammarAccess.getNameExpCSAccess().getPreKeyword_4_1());
@@ -13708,7 +13697,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCurlyBracketedClauseCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleCurlyBracketedClauseCS_in_entryRuleCurlyBracketedClauseCS10439);
+            pushFollow(FollowSets000.FOLLOW_ruleCurlyBracketedClauseCS_in_entryRuleCurlyBracketedClauseCS10438);
             iv_ruleCurlyBracketedClauseCS=ruleCurlyBracketedClauseCS();
 
             state._fsp--;
@@ -13716,7 +13705,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCurlyBracketedClauseCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCurlyBracketedClauseCS10449); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCurlyBracketedClauseCS10448); if (state.failed) return current;
 
             }
 
@@ -13775,41 +13764,41 @@
 
             }
 
-            otherlv_1=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleCurlyBracketedClauseCS10498); if (state.failed) return current;
+            otherlv_1=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleCurlyBracketedClauseCS10497); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_1, grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1());
                   
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4649:1: ( ( ( (lv_ownedParts_2_0= ruleConstructorPartCS ) ) (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleConstructorPartCS ) ) )* )? | ( (lv_value_5_0= ruleStringLiteral ) ) )
-            int alt83=2;
-            int LA83_0 = input.LA(1);
+            int alt82=2;
+            int LA82_0 = input.LA(1);
 
-            if ( ((LA83_0>=RULE_SIMPLE_ID && LA83_0<=RULE_ESCAPED_ID)||LA83_0==28||(LA83_0>=30 && LA83_0<=31)||LA83_0==76) ) {
-                alt83=1;
+            if ( ((LA82_0>=RULE_SIMPLE_ID && LA82_0<=RULE_ESCAPED_ID)||LA82_0==28||(LA82_0>=30 && LA82_0<=31)||LA82_0==76) ) {
+                alt82=1;
             }
-            else if ( (LA83_0==RULE_SINGLE_QUOTED_STRING) ) {
-                alt83=2;
+            else if ( (LA82_0==RULE_SINGLE_QUOTED_STRING) ) {
+                alt82=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 83, 0, input);
+                    new NoViableAltException("", 82, 0, input);
 
                 throw nvae;
             }
-            switch (alt83) {
+            switch (alt82) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4649:2: ( ( (lv_ownedParts_2_0= ruleConstructorPartCS ) ) (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleConstructorPartCS ) ) )* )?
                     {
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4649:2: ( ( (lv_ownedParts_2_0= ruleConstructorPartCS ) ) (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleConstructorPartCS ) ) )* )?
-                    int alt82=2;
-                    int LA82_0 = input.LA(1);
+                    int alt81=2;
+                    int LA81_0 = input.LA(1);
 
-                    if ( ((LA82_0>=RULE_SIMPLE_ID && LA82_0<=RULE_ESCAPED_ID)||LA82_0==28||(LA82_0>=30 && LA82_0<=31)) ) {
-                        alt82=1;
+                    if ( ((LA81_0>=RULE_SIMPLE_ID && LA81_0<=RULE_ESCAPED_ID)||LA81_0==28||(LA81_0>=30 && LA81_0<=31)) ) {
+                        alt81=1;
                     }
-                    switch (alt82) {
+                    switch (alt81) {
                         case 1 :
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4649:3: ( (lv_ownedParts_2_0= ruleConstructorPartCS ) ) (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleConstructorPartCS ) ) )*
                             {
@@ -13824,7 +13813,7 @@
                               	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); 
                               	    
                             }
-                            pushFollow(FollowSets000.FOLLOW_ruleConstructorPartCS_in_ruleCurlyBracketedClauseCS10521);
+                            pushFollow(FollowSets000.FOLLOW_ruleConstructorPartCS_in_ruleCurlyBracketedClauseCS10520);
                             lv_ownedParts_2_0=ruleConstructorPartCS();
 
                             state._fsp--;
@@ -13849,21 +13838,21 @@
                             }
 
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4667:2: (otherlv_3= ',' ( (lv_ownedParts_4_0= ruleConstructorPartCS ) ) )*
-                            loop81:
+                            loop80:
                             do {
-                                int alt81=2;
-                                int LA81_0 = input.LA(1);
+                                int alt80=2;
+                                int LA80_0 = input.LA(1);
 
-                                if ( (LA81_0==26) ) {
-                                    alt81=1;
+                                if ( (LA80_0==26) ) {
+                                    alt80=1;
                                 }
 
 
-                                switch (alt81) {
+                                switch (alt80) {
                             	case 1 :
                             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4667:4: otherlv_3= ',' ( (lv_ownedParts_4_0= ruleConstructorPartCS ) )
                             	    {
-                            	    otherlv_3=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleCurlyBracketedClauseCS10534); if (state.failed) return current;
+                            	    otherlv_3=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleCurlyBracketedClauseCS10533); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	          	newLeafNode(otherlv_3, grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0());
@@ -13880,7 +13869,7 @@
                             	      	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); 
                             	      	    
                             	    }
-                            	    pushFollow(FollowSets000.FOLLOW_ruleConstructorPartCS_in_ruleCurlyBracketedClauseCS10555);
+                            	    pushFollow(FollowSets000.FOLLOW_ruleConstructorPartCS_in_ruleCurlyBracketedClauseCS10554);
                             	    lv_ownedParts_4_0=ruleConstructorPartCS();
 
                             	    state._fsp--;
@@ -13909,7 +13898,7 @@
                             	    break;
 
                             	default :
-                            	    break loop81;
+                            	    break loop80;
                                 }
                             } while (true);
 
@@ -13936,7 +13925,7 @@
                       	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_ruleCurlyBracketedClauseCS10586);
+                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_ruleCurlyBracketedClauseCS10585);
                     lv_value_5_0=ruleStringLiteral();
 
                     state._fsp--;
@@ -13966,7 +13955,7 @@
 
             }
 
-            otherlv_6=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleCurlyBracketedClauseCS10599); if (state.failed) return current;
+            otherlv_6=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleCurlyBracketedClauseCS10598); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_6, grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3());
@@ -14009,7 +13998,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getRoundBracketedClauseCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleRoundBracketedClauseCS_in_entryRuleRoundBracketedClauseCS10635);
+            pushFollow(FollowSets000.FOLLOW_ruleRoundBracketedClauseCS_in_entryRuleRoundBracketedClauseCS10634);
             iv_ruleRoundBracketedClauseCS=ruleRoundBracketedClauseCS();
 
             state._fsp--;
@@ -14017,7 +14006,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleRoundBracketedClauseCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleRoundBracketedClauseCS10645); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleRoundBracketedClauseCS10644); if (state.failed) return current;
 
             }
 
@@ -14081,20 +14070,20 @@
 
             }
 
-            otherlv_1=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleRoundBracketedClauseCS10694); if (state.failed) return current;
+            otherlv_1=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleRoundBracketedClauseCS10693); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_1, grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1());
                   
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4746:1: ( ( (lv_ownedArguments_2_0= ruleNavigatingArgCS ) ) ( (lv_ownedArguments_3_0= ruleNavigatingCommaArgCS ) )* ( ( (lv_ownedArguments_4_0= ruleNavigatingSemiArgCS ) ) ( (lv_ownedArguments_5_0= ruleNavigatingCommaArgCS ) )* )? ( ( (lv_ownedArguments_6_0= ruleNavigatingBarArgCS ) ) ( (lv_ownedArguments_7_0= ruleNavigatingCommaArgCS ) )* )* )?
-            int alt89=2;
-            int LA89_0 = input.LA(1);
+            int alt88=2;
+            int LA88_0 = input.LA(1);
 
-            if ( ((LA89_0>=RULE_SIMPLE_ID && LA89_0<=RULE_SINGLE_QUOTED_STRING)||LA89_0==21||LA89_0==23||LA89_0==28||(LA89_0>=30 && LA89_0<=31)||(LA89_0>=41 && LA89_0<=54)||LA89_0==68||(LA89_0>=70 && LA89_0<=74)||(LA89_0>=79 && LA89_0<=83)||LA89_0==90||(LA89_0>=95 && LA89_0<=96)) ) {
-                alt89=1;
+            if ( ((LA88_0>=RULE_SIMPLE_ID && LA88_0<=RULE_SINGLE_QUOTED_STRING)||LA88_0==21||LA88_0==23||LA88_0==28||(LA88_0>=30 && LA88_0<=31)||(LA88_0>=41 && LA88_0<=54)||LA88_0==68||(LA88_0>=70 && LA88_0<=74)||(LA88_0>=79 && LA88_0<=83)||LA88_0==90||(LA88_0>=95 && LA88_0<=96)) ) {
+                alt88=1;
             }
-            switch (alt89) {
+            switch (alt88) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4746:2: ( (lv_ownedArguments_2_0= ruleNavigatingArgCS ) ) ( (lv_ownedArguments_3_0= ruleNavigatingCommaArgCS ) )* ( ( (lv_ownedArguments_4_0= ruleNavigatingSemiArgCS ) ) ( (lv_ownedArguments_5_0= ruleNavigatingCommaArgCS ) )* )? ( ( (lv_ownedArguments_6_0= ruleNavigatingBarArgCS ) ) ( (lv_ownedArguments_7_0= ruleNavigatingCommaArgCS ) )* )*
                     {
@@ -14109,7 +14098,7 @@
                       	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleNavigatingArgCS_in_ruleRoundBracketedClauseCS10716);
+                    pushFollow(FollowSets000.FOLLOW_ruleNavigatingArgCS_in_ruleRoundBracketedClauseCS10715);
                     lv_ownedArguments_2_0=ruleNavigatingArgCS();
 
                     state._fsp--;
@@ -14134,17 +14123,17 @@
                     }
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4764:2: ( (lv_ownedArguments_3_0= ruleNavigatingCommaArgCS ) )*
-                    loop84:
+                    loop83:
                     do {
-                        int alt84=2;
-                        int LA84_0 = input.LA(1);
+                        int alt83=2;
+                        int LA83_0 = input.LA(1);
 
-                        if ( (LA84_0==26) ) {
-                            alt84=1;
+                        if ( (LA83_0==26) ) {
+                            alt83=1;
                         }
 
 
-                        switch (alt84) {
+                        switch (alt83) {
                     	case 1 :
                     	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4765:1: (lv_ownedArguments_3_0= ruleNavigatingCommaArgCS )
                     	    {
@@ -14156,7 +14145,7 @@
                     	      	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); 
                     	      	    
                     	    }
-                    	    pushFollow(FollowSets000.FOLLOW_ruleNavigatingCommaArgCS_in_ruleRoundBracketedClauseCS10737);
+                    	    pushFollow(FollowSets000.FOLLOW_ruleNavigatingCommaArgCS_in_ruleRoundBracketedClauseCS10736);
                     	    lv_ownedArguments_3_0=ruleNavigatingCommaArgCS();
 
                     	    state._fsp--;
@@ -14182,18 +14171,18 @@
                     	    break;
 
                     	default :
-                    	    break loop84;
+                    	    break loop83;
                         }
                     } while (true);
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4782:3: ( ( (lv_ownedArguments_4_0= ruleNavigatingSemiArgCS ) ) ( (lv_ownedArguments_5_0= ruleNavigatingCommaArgCS ) )* )?
-                    int alt86=2;
-                    int LA86_0 = input.LA(1);
+                    int alt85=2;
+                    int LA85_0 = input.LA(1);
 
-                    if ( (LA86_0==89) ) {
-                        alt86=1;
+                    if ( (LA85_0==89) ) {
+                        alt85=1;
                     }
-                    switch (alt86) {
+                    switch (alt85) {
                         case 1 :
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4782:4: ( (lv_ownedArguments_4_0= ruleNavigatingSemiArgCS ) ) ( (lv_ownedArguments_5_0= ruleNavigatingCommaArgCS ) )*
                             {
@@ -14208,7 +14197,7 @@
                               	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); 
                               	    
                             }
-                            pushFollow(FollowSets000.FOLLOW_ruleNavigatingSemiArgCS_in_ruleRoundBracketedClauseCS10760);
+                            pushFollow(FollowSets000.FOLLOW_ruleNavigatingSemiArgCS_in_ruleRoundBracketedClauseCS10759);
                             lv_ownedArguments_4_0=ruleNavigatingSemiArgCS();
 
                             state._fsp--;
@@ -14233,17 +14222,17 @@
                             }
 
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4800:2: ( (lv_ownedArguments_5_0= ruleNavigatingCommaArgCS ) )*
-                            loop85:
+                            loop84:
                             do {
-                                int alt85=2;
-                                int LA85_0 = input.LA(1);
+                                int alt84=2;
+                                int LA84_0 = input.LA(1);
 
-                                if ( (LA85_0==26) ) {
-                                    alt85=1;
+                                if ( (LA84_0==26) ) {
+                                    alt84=1;
                                 }
 
 
-                                switch (alt85) {
+                                switch (alt84) {
                             	case 1 :
                             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4801:1: (lv_ownedArguments_5_0= ruleNavigatingCommaArgCS )
                             	    {
@@ -14255,7 +14244,7 @@
                             	      	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); 
                             	      	    
                             	    }
-                            	    pushFollow(FollowSets000.FOLLOW_ruleNavigatingCommaArgCS_in_ruleRoundBracketedClauseCS10781);
+                            	    pushFollow(FollowSets000.FOLLOW_ruleNavigatingCommaArgCS_in_ruleRoundBracketedClauseCS10780);
                             	    lv_ownedArguments_5_0=ruleNavigatingCommaArgCS();
 
                             	    state._fsp--;
@@ -14281,7 +14270,7 @@
                             	    break;
 
                             	default :
-                            	    break loop85;
+                            	    break loop84;
                                 }
                             } while (true);
 
@@ -14292,17 +14281,17 @@
                     }
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4818:5: ( ( (lv_ownedArguments_6_0= ruleNavigatingBarArgCS ) ) ( (lv_ownedArguments_7_0= ruleNavigatingCommaArgCS ) )* )*
-                    loop88:
+                    loop87:
                     do {
-                        int alt88=2;
-                        int LA88_0 = input.LA(1);
+                        int alt87=2;
+                        int LA87_0 = input.LA(1);
 
-                        if ( (LA88_0==88) ) {
-                            alt88=1;
+                        if ( (LA87_0==88) ) {
+                            alt87=1;
                         }
 
 
-                        switch (alt88) {
+                        switch (alt87) {
                     	case 1 :
                     	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4818:6: ( (lv_ownedArguments_6_0= ruleNavigatingBarArgCS ) ) ( (lv_ownedArguments_7_0= ruleNavigatingCommaArgCS ) )*
                     	    {
@@ -14317,7 +14306,7 @@
                     	      	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); 
                     	      	    
                     	    }
-                    	    pushFollow(FollowSets000.FOLLOW_ruleNavigatingBarArgCS_in_ruleRoundBracketedClauseCS10806);
+                    	    pushFollow(FollowSets000.FOLLOW_ruleNavigatingBarArgCS_in_ruleRoundBracketedClauseCS10805);
                     	    lv_ownedArguments_6_0=ruleNavigatingBarArgCS();
 
                     	    state._fsp--;
@@ -14342,17 +14331,17 @@
                     	    }
 
                     	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4836:2: ( (lv_ownedArguments_7_0= ruleNavigatingCommaArgCS ) )*
-                    	    loop87:
+                    	    loop86:
                     	    do {
-                    	        int alt87=2;
-                    	        int LA87_0 = input.LA(1);
+                    	        int alt86=2;
+                    	        int LA86_0 = input.LA(1);
 
-                    	        if ( (LA87_0==26) ) {
-                    	            alt87=1;
+                    	        if ( (LA86_0==26) ) {
+                    	            alt86=1;
                     	        }
 
 
-                    	        switch (alt87) {
+                    	        switch (alt86) {
                     	    	case 1 :
                     	    	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4837:1: (lv_ownedArguments_7_0= ruleNavigatingCommaArgCS )
                     	    	    {
@@ -14364,7 +14353,7 @@
                     	    	      	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); 
                     	    	      	    
                     	    	    }
-                    	    	    pushFollow(FollowSets000.FOLLOW_ruleNavigatingCommaArgCS_in_ruleRoundBracketedClauseCS10827);
+                    	    	    pushFollow(FollowSets000.FOLLOW_ruleNavigatingCommaArgCS_in_ruleRoundBracketedClauseCS10826);
                     	    	    lv_ownedArguments_7_0=ruleNavigatingCommaArgCS();
 
                     	    	    state._fsp--;
@@ -14390,7 +14379,7 @@
                     	    	    break;
 
                     	    	default :
-                    	    	    break loop87;
+                    	    	    break loop86;
                     	        }
                     	    } while (true);
 
@@ -14399,7 +14388,7 @@
                     	    break;
 
                     	default :
-                    	    break loop88;
+                    	    break loop87;
                         }
                     } while (true);
 
@@ -14409,7 +14398,7 @@
 
             }
 
-            otherlv_8=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleRoundBracketedClauseCS10844); if (state.failed) return current;
+            otherlv_8=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleRoundBracketedClauseCS10843); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_8, grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3());
@@ -14452,7 +14441,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getSquareBracketedClauseCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleSquareBracketedClauseCS_in_entryRuleSquareBracketedClauseCS10880);
+            pushFollow(FollowSets000.FOLLOW_ruleSquareBracketedClauseCS_in_entryRuleSquareBracketedClauseCS10879);
             iv_ruleSquareBracketedClauseCS=ruleSquareBracketedClauseCS();
 
             state._fsp--;
@@ -14460,7 +14449,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleSquareBracketedClauseCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSquareBracketedClauseCS10890); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSquareBracketedClauseCS10889); if (state.failed) return current;
 
             }
 
@@ -14499,7 +14488,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4879:1: (otherlv_0= '[' ( (lv_ownedTerms_1_0= ruleExpCS ) ) (otherlv_2= ',' ( (lv_ownedTerms_3_0= ruleExpCS ) ) )* otherlv_4= ']' )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4879:3: otherlv_0= '[' ( (lv_ownedTerms_1_0= ruleExpCS ) ) (otherlv_2= ',' ( (lv_ownedTerms_3_0= ruleExpCS ) ) )* otherlv_4= ']'
             {
-            otherlv_0=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleSquareBracketedClauseCS10927); if (state.failed) return current;
+            otherlv_0=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleSquareBracketedClauseCS10926); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_0, grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0());
@@ -14516,7 +14505,7 @@
               	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleSquareBracketedClauseCS10948);
+            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleSquareBracketedClauseCS10947);
             lv_ownedTerms_1_0=ruleExpCS();
 
             state._fsp--;
@@ -14541,21 +14530,21 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4901:2: (otherlv_2= ',' ( (lv_ownedTerms_3_0= ruleExpCS ) ) )*
-            loop90:
+            loop89:
             do {
-                int alt90=2;
-                int LA90_0 = input.LA(1);
+                int alt89=2;
+                int LA89_0 = input.LA(1);
 
-                if ( (LA90_0==26) ) {
-                    alt90=1;
+                if ( (LA89_0==26) ) {
+                    alt89=1;
                 }
 
 
-                switch (alt90) {
+                switch (alt89) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4901:4: otherlv_2= ',' ( (lv_ownedTerms_3_0= ruleExpCS ) )
             	    {
-            	    otherlv_2=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleSquareBracketedClauseCS10961); if (state.failed) return current;
+            	    otherlv_2=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleSquareBracketedClauseCS10960); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	          	newLeafNode(otherlv_2, grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0());
@@ -14572,7 +14561,7 @@
             	      	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); 
             	      	    
             	    }
-            	    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleSquareBracketedClauseCS10982);
+            	    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleSquareBracketedClauseCS10981);
             	    lv_ownedTerms_3_0=ruleExpCS();
 
             	    state._fsp--;
@@ -14601,11 +14590,11 @@
             	    break;
 
             	default :
-            	    break loop90;
+            	    break loop89;
                 }
             } while (true);
 
-            otherlv_4=(Token)match(input,86,FollowSets000.FOLLOW_86_in_ruleSquareBracketedClauseCS10996); if (state.failed) return current;
+            otherlv_4=(Token)match(input,86,FollowSets000.FOLLOW_86_in_ruleSquareBracketedClauseCS10995); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_4, grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3());
@@ -14648,7 +14637,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNavigatingArgCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNavigatingArgCS_in_entryRuleNavigatingArgCS11032);
+            pushFollow(FollowSets000.FOLLOW_ruleNavigatingArgCS_in_entryRuleNavigatingArgCS11031);
             iv_ruleNavigatingArgCS=ruleNavigatingArgCS();
 
             state._fsp--;
@@ -14656,7 +14645,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleNavigatingArgCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNavigatingArgCS11042); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNavigatingArgCS11041); if (state.failed) return current;
 
             }
 
@@ -14700,23 +14689,23 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4948:1: ( ( ( (lv_ownedNameExpression_0_0= ruleNavigatingArgExpCS ) ) ( (otherlv_1= ':' ( (lv_ownedType_2_0= ruleTypeExpCS ) ) (otherlv_3= '=' ( (lv_ownedInitExpression_4_0= ruleExpCS ) ) )? ) | (otherlv_5= 'in' ( (lv_ownedInitExpression_6_0= ruleExpCS ) ) ) )? ) | (otherlv_7= ':' ( (lv_ownedType_8_0= ruleTypeExpCS ) ) ) )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4948:1: ( ( ( (lv_ownedNameExpression_0_0= ruleNavigatingArgExpCS ) ) ( (otherlv_1= ':' ( (lv_ownedType_2_0= ruleTypeExpCS ) ) (otherlv_3= '=' ( (lv_ownedInitExpression_4_0= ruleExpCS ) ) )? ) | (otherlv_5= 'in' ( (lv_ownedInitExpression_6_0= ruleExpCS ) ) ) )? ) | (otherlv_7= ':' ( (lv_ownedType_8_0= ruleTypeExpCS ) ) ) )
-            int alt93=2;
-            int LA93_0 = input.LA(1);
+            int alt92=2;
+            int LA92_0 = input.LA(1);
 
-            if ( ((LA93_0>=RULE_SIMPLE_ID && LA93_0<=RULE_SINGLE_QUOTED_STRING)||LA93_0==21||LA93_0==28||(LA93_0>=30 && LA93_0<=31)||(LA93_0>=41 && LA93_0<=54)||LA93_0==68||(LA93_0>=70 && LA93_0<=74)||(LA93_0>=79 && LA93_0<=83)||LA93_0==90||(LA93_0>=95 && LA93_0<=96)) ) {
-                alt93=1;
+            if ( ((LA92_0>=RULE_SIMPLE_ID && LA92_0<=RULE_SINGLE_QUOTED_STRING)||LA92_0==21||LA92_0==28||(LA92_0>=30 && LA92_0<=31)||(LA92_0>=41 && LA92_0<=54)||LA92_0==68||(LA92_0>=70 && LA92_0<=74)||(LA92_0>=79 && LA92_0<=83)||LA92_0==90||(LA92_0>=95 && LA92_0<=96)) ) {
+                alt92=1;
             }
-            else if ( (LA93_0==23) ) {
-                alt93=2;
+            else if ( (LA92_0==23) ) {
+                alt92=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 93, 0, input);
+                    new NoViableAltException("", 92, 0, input);
 
                 throw nvae;
             }
-            switch (alt93) {
+            switch (alt92) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4948:2: ( ( (lv_ownedNameExpression_0_0= ruleNavigatingArgExpCS ) ) ( (otherlv_1= ':' ( (lv_ownedType_2_0= ruleTypeExpCS ) ) (otherlv_3= '=' ( (lv_ownedInitExpression_4_0= ruleExpCS ) ) )? ) | (otherlv_5= 'in' ( (lv_ownedInitExpression_6_0= ruleExpCS ) ) ) )? )
                     {
@@ -14734,7 +14723,7 @@
                       	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingArgCS11089);
+                    pushFollow(FollowSets000.FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingArgCS11088);
                     lv_ownedNameExpression_0_0=ruleNavigatingArgExpCS();
 
                     state._fsp--;
@@ -14759,23 +14748,23 @@
                     }
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4966:2: ( (otherlv_1= ':' ( (lv_ownedType_2_0= ruleTypeExpCS ) ) (otherlv_3= '=' ( (lv_ownedInitExpression_4_0= ruleExpCS ) ) )? ) | (otherlv_5= 'in' ( (lv_ownedInitExpression_6_0= ruleExpCS ) ) ) )?
-                    int alt92=3;
-                    int LA92_0 = input.LA(1);
+                    int alt91=3;
+                    int LA91_0 = input.LA(1);
 
-                    if ( (LA92_0==23) ) {
-                        alt92=1;
+                    if ( (LA91_0==23) ) {
+                        alt91=1;
                     }
-                    else if ( (LA92_0==87) ) {
-                        alt92=2;
+                    else if ( (LA91_0==87) ) {
+                        alt91=2;
                     }
-                    switch (alt92) {
+                    switch (alt91) {
                         case 1 :
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4966:3: (otherlv_1= ':' ( (lv_ownedType_2_0= ruleTypeExpCS ) ) (otherlv_3= '=' ( (lv_ownedInitExpression_4_0= ruleExpCS ) ) )? )
                             {
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4966:3: (otherlv_1= ':' ( (lv_ownedType_2_0= ruleTypeExpCS ) ) (otherlv_3= '=' ( (lv_ownedInitExpression_4_0= ruleExpCS ) ) )? )
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4966:5: otherlv_1= ':' ( (lv_ownedType_2_0= ruleTypeExpCS ) ) (otherlv_3= '=' ( (lv_ownedInitExpression_4_0= ruleExpCS ) ) )?
                             {
-                            otherlv_1=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleNavigatingArgCS11103); if (state.failed) return current;
+                            otherlv_1=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleNavigatingArgCS11102); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                                   	newLeafNode(otherlv_1, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0());
@@ -14792,7 +14781,7 @@
                               	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); 
                               	    
                             }
-                            pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleNavigatingArgCS11124);
+                            pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleNavigatingArgCS11123);
                             lv_ownedType_2_0=ruleTypeExpCS();
 
                             state._fsp--;
@@ -14817,17 +14806,17 @@
                             }
 
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4988:2: (otherlv_3= '=' ( (lv_ownedInitExpression_4_0= ruleExpCS ) ) )?
-                            int alt91=2;
-                            int LA91_0 = input.LA(1);
+                            int alt90=2;
+                            int LA90_0 = input.LA(1);
 
-                            if ( (LA91_0==27) ) {
-                                alt91=1;
+                            if ( (LA90_0==27) ) {
+                                alt90=1;
                             }
-                            switch (alt91) {
+                            switch (alt90) {
                                 case 1 :
                                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4988:4: otherlv_3= '=' ( (lv_ownedInitExpression_4_0= ruleExpCS ) )
                                     {
-                                    otherlv_3=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleNavigatingArgCS11137); if (state.failed) return current;
+                                    otherlv_3=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleNavigatingArgCS11136); if (state.failed) return current;
                                     if ( state.backtracking==0 ) {
 
                                           	newLeafNode(otherlv_3, grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0());
@@ -14844,7 +14833,7 @@
                                       	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); 
                                       	    
                                     }
-                                    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNavigatingArgCS11158);
+                                    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNavigatingArgCS11157);
                                     lv_ownedInitExpression_4_0=ruleExpCS();
 
                                     state._fsp--;
@@ -14886,7 +14875,7 @@
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5011:6: (otherlv_5= 'in' ( (lv_ownedInitExpression_6_0= ruleExpCS ) ) )
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5011:8: otherlv_5= 'in' ( (lv_ownedInitExpression_6_0= ruleExpCS ) )
                             {
-                            otherlv_5=(Token)match(input,87,FollowSets000.FOLLOW_87_in_ruleNavigatingArgCS11180); if (state.failed) return current;
+                            otherlv_5=(Token)match(input,87,FollowSets000.FOLLOW_87_in_ruleNavigatingArgCS11179); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                                   	newLeafNode(otherlv_5, grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0());
@@ -14903,7 +14892,7 @@
                               	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); 
                               	    
                             }
-                            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNavigatingArgCS11201);
+                            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNavigatingArgCS11200);
                             lv_ownedInitExpression_6_0=ruleExpCS();
 
                             state._fsp--;
@@ -14948,7 +14937,7 @@
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5034:6: (otherlv_7= ':' ( (lv_ownedType_8_0= ruleTypeExpCS ) ) )
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5034:8: otherlv_7= ':' ( (lv_ownedType_8_0= ruleTypeExpCS ) )
                     {
-                    otherlv_7=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleNavigatingArgCS11224); if (state.failed) return current;
+                    otherlv_7=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleNavigatingArgCS11223); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_7, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0());
@@ -14965,7 +14954,7 @@
                       	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleNavigatingArgCS11245);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleNavigatingArgCS11244);
                     lv_ownedType_8_0=ruleTypeExpCS();
 
                     state._fsp--;
@@ -15032,7 +15021,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNavigatingBarArgCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNavigatingBarArgCS_in_entryRuleNavigatingBarArgCS11282);
+            pushFollow(FollowSets000.FOLLOW_ruleNavigatingBarArgCS_in_entryRuleNavigatingBarArgCS11281);
             iv_ruleNavigatingBarArgCS=ruleNavigatingBarArgCS();
 
             state._fsp--;
@@ -15040,7 +15029,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleNavigatingBarArgCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNavigatingBarArgCS11292); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNavigatingBarArgCS11291); if (state.failed) return current;
 
             }
 
@@ -15087,7 +15076,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5078:1: (lv_prefix_0_0= '|' )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5079:3: lv_prefix_0_0= '|'
             {
-            lv_prefix_0_0=(Token)match(input,88,FollowSets000.FOLLOW_88_in_ruleNavigatingBarArgCS11335); if (state.failed) return current;
+            lv_prefix_0_0=(Token)match(input,88,FollowSets000.FOLLOW_88_in_ruleNavigatingBarArgCS11334); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                       newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0());
@@ -15118,7 +15107,7 @@
               	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingBarArgCS11369);
+            pushFollow(FollowSets000.FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingBarArgCS11368);
             lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS();
 
             state._fsp--;
@@ -15143,17 +15132,17 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5110:2: (otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) ) (otherlv_4= '=' ( (lv_ownedInitExpression_5_0= ruleExpCS ) ) )? )?
-            int alt95=2;
-            int LA95_0 = input.LA(1);
+            int alt94=2;
+            int LA94_0 = input.LA(1);
 
-            if ( (LA95_0==23) ) {
-                alt95=1;
+            if ( (LA94_0==23) ) {
+                alt94=1;
             }
-            switch (alt95) {
+            switch (alt94) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5110:4: otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) ) (otherlv_4= '=' ( (lv_ownedInitExpression_5_0= ruleExpCS ) ) )?
                     {
-                    otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleNavigatingBarArgCS11382); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleNavigatingBarArgCS11381); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_2, grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0());
@@ -15170,7 +15159,7 @@
                       	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleNavigatingBarArgCS11403);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleNavigatingBarArgCS11402);
                     lv_ownedType_3_0=ruleTypeExpCS();
 
                     state._fsp--;
@@ -15195,17 +15184,17 @@
                     }
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5132:2: (otherlv_4= '=' ( (lv_ownedInitExpression_5_0= ruleExpCS ) ) )?
-                    int alt94=2;
-                    int LA94_0 = input.LA(1);
+                    int alt93=2;
+                    int LA93_0 = input.LA(1);
 
-                    if ( (LA94_0==27) ) {
-                        alt94=1;
+                    if ( (LA93_0==27) ) {
+                        alt93=1;
                     }
-                    switch (alt94) {
+                    switch (alt93) {
                         case 1 :
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5132:4: otherlv_4= '=' ( (lv_ownedInitExpression_5_0= ruleExpCS ) )
                             {
-                            otherlv_4=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleNavigatingBarArgCS11416); if (state.failed) return current;
+                            otherlv_4=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleNavigatingBarArgCS11415); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                                   	newLeafNode(otherlv_4, grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0());
@@ -15222,7 +15211,7 @@
                               	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 
                               	    
                             }
-                            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNavigatingBarArgCS11437);
+                            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNavigatingBarArgCS11436);
                             lv_ownedInitExpression_5_0=ruleExpCS();
 
                             state._fsp--;
@@ -15295,7 +15284,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNavigatingCommaArgCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNavigatingCommaArgCS_in_entryRuleNavigatingCommaArgCS11477);
+            pushFollow(FollowSets000.FOLLOW_ruleNavigatingCommaArgCS_in_entryRuleNavigatingCommaArgCS11476);
             iv_ruleNavigatingCommaArgCS=ruleNavigatingCommaArgCS();
 
             state._fsp--;
@@ -15303,7 +15292,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleNavigatingCommaArgCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNavigatingCommaArgCS11487); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNavigatingCommaArgCS11486); if (state.failed) return current;
 
             }
 
@@ -15353,7 +15342,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5176:1: (lv_prefix_0_0= ',' )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5177:3: lv_prefix_0_0= ','
             {
-            lv_prefix_0_0=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleNavigatingCommaArgCS11530); if (state.failed) return current;
+            lv_prefix_0_0=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleNavigatingCommaArgCS11529); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                       newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0());
@@ -15384,7 +15373,7 @@
               	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingCommaArgCS11564);
+            pushFollow(FollowSets000.FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingCommaArgCS11563);
             lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS();
 
             state._fsp--;
@@ -15409,23 +15398,23 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5208:2: ( (otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) ) (otherlv_4= '=' ( (lv_ownedInitExpression_5_0= ruleExpCS ) ) )? ) | (otherlv_6= 'in' ( (lv_ownedInitExpression_7_0= ruleExpCS ) ) ) )?
-            int alt97=3;
-            int LA97_0 = input.LA(1);
+            int alt96=3;
+            int LA96_0 = input.LA(1);
 
-            if ( (LA97_0==23) ) {
-                alt97=1;
+            if ( (LA96_0==23) ) {
+                alt96=1;
             }
-            else if ( (LA97_0==87) ) {
-                alt97=2;
+            else if ( (LA96_0==87) ) {
+                alt96=2;
             }
-            switch (alt97) {
+            switch (alt96) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5208:3: (otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) ) (otherlv_4= '=' ( (lv_ownedInitExpression_5_0= ruleExpCS ) ) )? )
                     {
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5208:3: (otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) ) (otherlv_4= '=' ( (lv_ownedInitExpression_5_0= ruleExpCS ) ) )? )
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5208:5: otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) ) (otherlv_4= '=' ( (lv_ownedInitExpression_5_0= ruleExpCS ) ) )?
                     {
-                    otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleNavigatingCommaArgCS11578); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleNavigatingCommaArgCS11577); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_2, grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0());
@@ -15442,7 +15431,7 @@
                       	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleNavigatingCommaArgCS11599);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleNavigatingCommaArgCS11598);
                     lv_ownedType_3_0=ruleTypeExpCS();
 
                     state._fsp--;
@@ -15467,17 +15456,17 @@
                     }
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5230:2: (otherlv_4= '=' ( (lv_ownedInitExpression_5_0= ruleExpCS ) ) )?
-                    int alt96=2;
-                    int LA96_0 = input.LA(1);
+                    int alt95=2;
+                    int LA95_0 = input.LA(1);
 
-                    if ( (LA96_0==27) ) {
-                        alt96=1;
+                    if ( (LA95_0==27) ) {
+                        alt95=1;
                     }
-                    switch (alt96) {
+                    switch (alt95) {
                         case 1 :
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5230:4: otherlv_4= '=' ( (lv_ownedInitExpression_5_0= ruleExpCS ) )
                             {
-                            otherlv_4=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleNavigatingCommaArgCS11612); if (state.failed) return current;
+                            otherlv_4=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleNavigatingCommaArgCS11611); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                                   	newLeafNode(otherlv_4, grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0());
@@ -15494,7 +15483,7 @@
                               	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); 
                               	    
                             }
-                            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNavigatingCommaArgCS11633);
+                            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNavigatingCommaArgCS11632);
                             lv_ownedInitExpression_5_0=ruleExpCS();
 
                             state._fsp--;
@@ -15536,7 +15525,7 @@
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5253:6: (otherlv_6= 'in' ( (lv_ownedInitExpression_7_0= ruleExpCS ) ) )
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5253:8: otherlv_6= 'in' ( (lv_ownedInitExpression_7_0= ruleExpCS ) )
                     {
-                    otherlv_6=(Token)match(input,87,FollowSets000.FOLLOW_87_in_ruleNavigatingCommaArgCS11655); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,87,FollowSets000.FOLLOW_87_in_ruleNavigatingCommaArgCS11654); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_6, grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0());
@@ -15553,7 +15542,7 @@
                       	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNavigatingCommaArgCS11676);
+                    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNavigatingCommaArgCS11675);
                     lv_ownedInitExpression_7_0=ruleExpCS();
 
                     state._fsp--;
@@ -15623,7 +15612,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNavigatingSemiArgCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNavigatingSemiArgCS_in_entryRuleNavigatingSemiArgCS11715);
+            pushFollow(FollowSets000.FOLLOW_ruleNavigatingSemiArgCS_in_entryRuleNavigatingSemiArgCS11714);
             iv_ruleNavigatingSemiArgCS=ruleNavigatingSemiArgCS();
 
             state._fsp--;
@@ -15631,7 +15620,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleNavigatingSemiArgCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNavigatingSemiArgCS11725); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNavigatingSemiArgCS11724); if (state.failed) return current;
 
             }
 
@@ -15678,7 +15667,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5297:1: (lv_prefix_0_0= ';' )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5298:3: lv_prefix_0_0= ';'
             {
-            lv_prefix_0_0=(Token)match(input,89,FollowSets000.FOLLOW_89_in_ruleNavigatingSemiArgCS11768); if (state.failed) return current;
+            lv_prefix_0_0=(Token)match(input,89,FollowSets000.FOLLOW_89_in_ruleNavigatingSemiArgCS11767); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                       newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0());
@@ -15709,7 +15698,7 @@
               	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingSemiArgCS11802);
+            pushFollow(FollowSets000.FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingSemiArgCS11801);
             lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS();
 
             state._fsp--;
@@ -15734,17 +15723,17 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5329:2: (otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) ) (otherlv_4= '=' ( (lv_ownedInitExpression_5_0= ruleExpCS ) ) )? )?
-            int alt99=2;
-            int LA99_0 = input.LA(1);
+            int alt98=2;
+            int LA98_0 = input.LA(1);
 
-            if ( (LA99_0==23) ) {
-                alt99=1;
+            if ( (LA98_0==23) ) {
+                alt98=1;
             }
-            switch (alt99) {
+            switch (alt98) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5329:4: otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) ) (otherlv_4= '=' ( (lv_ownedInitExpression_5_0= ruleExpCS ) ) )?
                     {
-                    otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleNavigatingSemiArgCS11815); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleNavigatingSemiArgCS11814); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_2, grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0());
@@ -15761,7 +15750,7 @@
                       	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleNavigatingSemiArgCS11836);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleNavigatingSemiArgCS11835);
                     lv_ownedType_3_0=ruleTypeExpCS();
 
                     state._fsp--;
@@ -15786,17 +15775,17 @@
                     }
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5351:2: (otherlv_4= '=' ( (lv_ownedInitExpression_5_0= ruleExpCS ) ) )?
-                    int alt98=2;
-                    int LA98_0 = input.LA(1);
+                    int alt97=2;
+                    int LA97_0 = input.LA(1);
 
-                    if ( (LA98_0==27) ) {
-                        alt98=1;
+                    if ( (LA97_0==27) ) {
+                        alt97=1;
                     }
-                    switch (alt98) {
+                    switch (alt97) {
                         case 1 :
                             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5351:4: otherlv_4= '=' ( (lv_ownedInitExpression_5_0= ruleExpCS ) )
                             {
-                            otherlv_4=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleNavigatingSemiArgCS11849); if (state.failed) return current;
+                            otherlv_4=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleNavigatingSemiArgCS11848); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                                   	newLeafNode(otherlv_4, grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0());
@@ -15813,7 +15802,7 @@
                               	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 
                               	    
                             }
-                            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNavigatingSemiArgCS11870);
+                            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNavigatingSemiArgCS11869);
                             lv_ownedInitExpression_5_0=ruleExpCS();
 
                             state._fsp--;
@@ -15886,7 +15875,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getIfExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleIfExpCS_in_entryRuleIfExpCS11910);
+            pushFollow(FollowSets000.FOLLOW_ruleIfExpCS_in_entryRuleIfExpCS11909);
             iv_ruleIfExpCS=ruleIfExpCS();
 
             state._fsp--;
@@ -15894,7 +15883,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleIfExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleIfExpCS11920); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleIfExpCS11919); if (state.failed) return current;
 
             }
 
@@ -15940,7 +15929,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5394:1: (otherlv_0= 'if' ( ( (lv_ownedCondition_1_1= ruleExpCS | lv_ownedCondition_1_2= rulePatternExpCS ) ) ) otherlv_2= 'then' ( (lv_ownedThenExpression_3_0= ruleExpCS ) ) ( (lv_ownedIfThenExpressions_4_0= ruleElseIfThenExpCS ) )* otherlv_5= 'else' ( (lv_ownedElseExpression_6_0= ruleExpCS ) ) otherlv_7= 'endif' )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5394:3: otherlv_0= 'if' ( ( (lv_ownedCondition_1_1= ruleExpCS | lv_ownedCondition_1_2= rulePatternExpCS ) ) ) otherlv_2= 'then' ( (lv_ownedThenExpression_3_0= ruleExpCS ) ) ( (lv_ownedIfThenExpressions_4_0= ruleElseIfThenExpCS ) )* otherlv_5= 'else' ( (lv_ownedElseExpression_6_0= ruleExpCS ) ) otherlv_7= 'endif'
             {
-            otherlv_0=(Token)match(input,90,FollowSets000.FOLLOW_90_in_ruleIfExpCS11957); if (state.failed) return current;
+            otherlv_0=(Token)match(input,90,FollowSets000.FOLLOW_90_in_ruleIfExpCS11956); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_0, grammarAccess.getIfExpCSAccess().getIfKeyword_0());
@@ -15953,7 +15942,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5400:1: (lv_ownedCondition_1_1= ruleExpCS | lv_ownedCondition_1_2= rulePatternExpCS )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5400:1: (lv_ownedCondition_1_1= ruleExpCS | lv_ownedCondition_1_2= rulePatternExpCS )
-            int alt100=2;
+            int alt99=2;
             switch ( input.LA(1) ) {
             case RULE_INT:
             case RULE_SINGLE_QUOTED_STRING:
@@ -15986,23 +15975,23 @@
             case 95:
             case 96:
                 {
-                alt100=1;
+                alt99=1;
                 }
                 break;
             case RULE_SIMPLE_ID:
                 {
-                int LA100_2 = input.LA(2);
+                int LA99_2 = input.LA(2);
 
-                if ( (LA100_2==23) ) {
-                    alt100=2;
+                if ( ((LA99_2>=17 && LA99_2<=18)||LA99_2==21||LA99_2==27||(LA99_2>=39 && LA99_2<=40)||LA99_2==52||(LA99_2>=54 && LA99_2<=67)||LA99_2==69||LA99_2==75||(LA99_2>=84 && LA99_2<=85)||LA99_2==91) ) {
+                    alt99=1;
                 }
-                else if ( ((LA100_2>=17 && LA100_2<=18)||LA100_2==21||LA100_2==27||(LA100_2>=39 && LA100_2<=40)||LA100_2==52||(LA100_2>=54 && LA100_2<=67)||LA100_2==69||LA100_2==75||(LA100_2>=84 && LA100_2<=85)||LA100_2==91) ) {
-                    alt100=1;
+                else if ( (LA99_2==23) ) {
+                    alt99=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 100, 2, input);
+                        new NoViableAltException("", 99, 2, input);
 
                     throw nvae;
                 }
@@ -16010,18 +15999,18 @@
                 break;
             case RULE_ESCAPED_ID:
                 {
-                int LA100_3 = input.LA(2);
+                int LA99_3 = input.LA(2);
 
-                if ( (LA100_3==23) ) {
-                    alt100=2;
+                if ( (LA99_3==23) ) {
+                    alt99=2;
                 }
-                else if ( ((LA100_3>=17 && LA100_3<=18)||LA100_3==21||LA100_3==27||(LA100_3>=39 && LA100_3<=40)||LA100_3==52||(LA100_3>=54 && LA100_3<=67)||LA100_3==69||LA100_3==75||(LA100_3>=84 && LA100_3<=85)||LA100_3==91) ) {
-                    alt100=1;
+                else if ( ((LA99_3>=17 && LA99_3<=18)||LA99_3==21||LA99_3==27||(LA99_3>=39 && LA99_3<=40)||LA99_3==52||(LA99_3>=54 && LA99_3<=67)||LA99_3==69||LA99_3==75||(LA99_3>=84 && LA99_3<=85)||LA99_3==91) ) {
+                    alt99=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 100, 3, input);
+                        new NoViableAltException("", 99, 3, input);
 
                     throw nvae;
                 }
@@ -16029,18 +16018,18 @@
                 break;
             case 28:
                 {
-                int LA100_4 = input.LA(2);
+                int LA99_4 = input.LA(2);
 
-                if ( (LA100_4==23) ) {
-                    alt100=2;
+                if ( ((LA99_4>=17 && LA99_4<=18)||LA99_4==21||LA99_4==27||(LA99_4>=39 && LA99_4<=40)||LA99_4==52||(LA99_4>=54 && LA99_4<=67)||LA99_4==69||LA99_4==75||(LA99_4>=84 && LA99_4<=85)||LA99_4==91) ) {
+                    alt99=1;
                 }
-                else if ( ((LA100_4>=17 && LA100_4<=18)||LA100_4==21||LA100_4==27||(LA100_4>=39 && LA100_4<=40)||LA100_4==52||(LA100_4>=54 && LA100_4<=67)||LA100_4==69||LA100_4==75||(LA100_4>=84 && LA100_4<=85)||LA100_4==91) ) {
-                    alt100=1;
+                else if ( (LA99_4==23) ) {
+                    alt99=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 100, 4, input);
+                        new NoViableAltException("", 99, 4, input);
 
                     throw nvae;
                 }
@@ -16048,18 +16037,18 @@
                 break;
             case 30:
                 {
-                int LA100_5 = input.LA(2);
+                int LA99_5 = input.LA(2);
 
-                if ( ((LA100_5>=17 && LA100_5<=18)||LA100_5==21||LA100_5==27||(LA100_5>=39 && LA100_5<=40)||LA100_5==52||(LA100_5>=54 && LA100_5<=67)||LA100_5==69||LA100_5==75||(LA100_5>=84 && LA100_5<=85)||LA100_5==91) ) {
-                    alt100=1;
+                if ( ((LA99_5>=17 && LA99_5<=18)||LA99_5==21||LA99_5==27||(LA99_5>=39 && LA99_5<=40)||LA99_5==52||(LA99_5>=54 && LA99_5<=67)||LA99_5==69||LA99_5==75||(LA99_5>=84 && LA99_5<=85)||LA99_5==91) ) {
+                    alt99=1;
                 }
-                else if ( (LA100_5==23) ) {
-                    alt100=2;
+                else if ( (LA99_5==23) ) {
+                    alt99=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 100, 5, input);
+                        new NoViableAltException("", 99, 5, input);
 
                     throw nvae;
                 }
@@ -16067,18 +16056,18 @@
                 break;
             case 31:
                 {
-                int LA100_6 = input.LA(2);
+                int LA99_6 = input.LA(2);
 
-                if ( (LA100_6==23) ) {
-                    alt100=2;
+                if ( (LA99_6==23) ) {
+                    alt99=2;
                 }
-                else if ( ((LA100_6>=17 && LA100_6<=18)||LA100_6==21||LA100_6==27||(LA100_6>=39 && LA100_6<=40)||LA100_6==52||(LA100_6>=54 && LA100_6<=67)||LA100_6==69||LA100_6==75||(LA100_6>=84 && LA100_6<=85)||LA100_6==91) ) {
-                    alt100=1;
+                else if ( ((LA99_6>=17 && LA99_6<=18)||LA99_6==21||LA99_6==27||(LA99_6>=39 && LA99_6<=40)||LA99_6==52||(LA99_6>=54 && LA99_6<=67)||LA99_6==69||LA99_6==75||(LA99_6>=84 && LA99_6<=85)||LA99_6==91) ) {
+                    alt99=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 100, 6, input);
+                        new NoViableAltException("", 99, 6, input);
 
                     throw nvae;
                 }
@@ -16086,18 +16075,18 @@
                 break;
             case 23:
                 {
-                alt100=2;
+                alt99=2;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 100, 0, input);
+                    new NoViableAltException("", 99, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt100) {
+            switch (alt99) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5401:3: lv_ownedCondition_1_1= ruleExpCS
                     {
@@ -16106,7 +16095,7 @@
                       	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleIfExpCS11980);
+                    pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleIfExpCS11979);
                     lv_ownedCondition_1_1=ruleExpCS();
 
                     state._fsp--;
@@ -16135,7 +16124,7 @@
                       	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_rulePatternExpCS_in_ruleIfExpCS11999);
+                    pushFollow(FollowSets000.FOLLOW_rulePatternExpCS_in_ruleIfExpCS11998);
                     lv_ownedCondition_1_2=rulePatternExpCS();
 
                     state._fsp--;
@@ -16165,7 +16154,7 @@
 
             }
 
-            otherlv_2=(Token)match(input,91,FollowSets000.FOLLOW_91_in_ruleIfExpCS12014); if (state.failed) return current;
+            otherlv_2=(Token)match(input,91,FollowSets000.FOLLOW_91_in_ruleIfExpCS12013); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_2, grammarAccess.getIfExpCSAccess().getThenKeyword_2());
@@ -16182,7 +16171,7 @@
               	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleIfExpCS12035);
+            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleIfExpCS12034);
             lv_ownedThenExpression_3_0=ruleExpCS();
 
             state._fsp--;
@@ -16207,17 +16196,17 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5456:2: ( (lv_ownedIfThenExpressions_4_0= ruleElseIfThenExpCS ) )*
-            loop101:
+            loop100:
             do {
-                int alt101=2;
-                int LA101_0 = input.LA(1);
+                int alt100=2;
+                int LA100_0 = input.LA(1);
 
-                if ( (LA101_0==94) ) {
-                    alt101=1;
+                if ( (LA100_0==94) ) {
+                    alt100=1;
                 }
 
 
-                switch (alt101) {
+                switch (alt100) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5457:1: (lv_ownedIfThenExpressions_4_0= ruleElseIfThenExpCS )
             	    {
@@ -16229,7 +16218,7 @@
             	      	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); 
             	      	    
             	    }
-            	    pushFollow(FollowSets000.FOLLOW_ruleElseIfThenExpCS_in_ruleIfExpCS12056);
+            	    pushFollow(FollowSets000.FOLLOW_ruleElseIfThenExpCS_in_ruleIfExpCS12055);
             	    lv_ownedIfThenExpressions_4_0=ruleElseIfThenExpCS();
 
             	    state._fsp--;
@@ -16255,11 +16244,11 @@
             	    break;
 
             	default :
-            	    break loop101;
+            	    break loop100;
                 }
             } while (true);
 
-            otherlv_5=(Token)match(input,92,FollowSets000.FOLLOW_92_in_ruleIfExpCS12069); if (state.failed) return current;
+            otherlv_5=(Token)match(input,92,FollowSets000.FOLLOW_92_in_ruleIfExpCS12068); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_5, grammarAccess.getIfExpCSAccess().getElseKeyword_5());
@@ -16276,7 +16265,7 @@
               	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleIfExpCS12090);
+            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleIfExpCS12089);
             lv_ownedElseExpression_6_0=ruleExpCS();
 
             state._fsp--;
@@ -16300,7 +16289,7 @@
 
             }
 
-            otherlv_7=(Token)match(input,93,FollowSets000.FOLLOW_93_in_ruleIfExpCS12102); if (state.failed) return current;
+            otherlv_7=(Token)match(input,93,FollowSets000.FOLLOW_93_in_ruleIfExpCS12101); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_7, grammarAccess.getIfExpCSAccess().getEndifKeyword_7());
@@ -16343,7 +16332,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getElseIfThenExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleElseIfThenExpCS_in_entryRuleElseIfThenExpCS12138);
+            pushFollow(FollowSets000.FOLLOW_ruleElseIfThenExpCS_in_entryRuleElseIfThenExpCS12137);
             iv_ruleElseIfThenExpCS=ruleElseIfThenExpCS();
 
             state._fsp--;
@@ -16351,7 +16340,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleElseIfThenExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleElseIfThenExpCS12148); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleElseIfThenExpCS12147); if (state.failed) return current;
 
             }
 
@@ -16389,7 +16378,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5521:1: (otherlv_0= 'elseif' ( (lv_ownedCondition_1_0= ruleExpCS ) ) otherlv_2= 'then' ( (lv_ownedThenExpression_3_0= ruleExpCS ) ) )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5521:3: otherlv_0= 'elseif' ( (lv_ownedCondition_1_0= ruleExpCS ) ) otherlv_2= 'then' ( (lv_ownedThenExpression_3_0= ruleExpCS ) )
             {
-            otherlv_0=(Token)match(input,94,FollowSets000.FOLLOW_94_in_ruleElseIfThenExpCS12185); if (state.failed) return current;
+            otherlv_0=(Token)match(input,94,FollowSets000.FOLLOW_94_in_ruleElseIfThenExpCS12184); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_0, grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0());
@@ -16406,7 +16395,7 @@
               	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleElseIfThenExpCS12206);
+            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleElseIfThenExpCS12205);
             lv_ownedCondition_1_0=ruleExpCS();
 
             state._fsp--;
@@ -16430,7 +16419,7 @@
 
             }
 
-            otherlv_2=(Token)match(input,91,FollowSets000.FOLLOW_91_in_ruleElseIfThenExpCS12218); if (state.failed) return current;
+            otherlv_2=(Token)match(input,91,FollowSets000.FOLLOW_91_in_ruleElseIfThenExpCS12217); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_2, grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2());
@@ -16447,7 +16436,7 @@
               	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleElseIfThenExpCS12239);
+            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleElseIfThenExpCS12238);
             lv_ownedThenExpression_3_0=ruleExpCS();
 
             state._fsp--;
@@ -16508,7 +16497,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getLetExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleLetExpCS_in_entryRuleLetExpCS12275);
+            pushFollow(FollowSets000.FOLLOW_ruleLetExpCS_in_entryRuleLetExpCS12274);
             iv_ruleLetExpCS=ruleLetExpCS();
 
             state._fsp--;
@@ -16516,7 +16505,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleLetExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLetExpCS12285); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLetExpCS12284); if (state.failed) return current;
 
             }
 
@@ -16557,7 +16546,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5586:1: (otherlv_0= 'let' ( (lv_ownedVariables_1_0= ruleLetVariableCS ) ) (otherlv_2= ',' ( (lv_ownedVariables_3_0= ruleLetVariableCS ) ) )* otherlv_4= 'in' ( (lv_ownedInExpression_5_0= ruleExpCS ) ) )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5586:3: otherlv_0= 'let' ( (lv_ownedVariables_1_0= ruleLetVariableCS ) ) (otherlv_2= ',' ( (lv_ownedVariables_3_0= ruleLetVariableCS ) ) )* otherlv_4= 'in' ( (lv_ownedInExpression_5_0= ruleExpCS ) )
             {
-            otherlv_0=(Token)match(input,95,FollowSets000.FOLLOW_95_in_ruleLetExpCS12322); if (state.failed) return current;
+            otherlv_0=(Token)match(input,95,FollowSets000.FOLLOW_95_in_ruleLetExpCS12321); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_0, grammarAccess.getLetExpCSAccess().getLetKeyword_0());
@@ -16574,7 +16563,7 @@
               	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleLetVariableCS_in_ruleLetExpCS12343);
+            pushFollow(FollowSets000.FOLLOW_ruleLetVariableCS_in_ruleLetExpCS12342);
             lv_ownedVariables_1_0=ruleLetVariableCS();
 
             state._fsp--;
@@ -16599,21 +16588,21 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5608:2: (otherlv_2= ',' ( (lv_ownedVariables_3_0= ruleLetVariableCS ) ) )*
-            loop102:
+            loop101:
             do {
-                int alt102=2;
-                int LA102_0 = input.LA(1);
+                int alt101=2;
+                int LA101_0 = input.LA(1);
 
-                if ( (LA102_0==26) ) {
-                    alt102=1;
+                if ( (LA101_0==26) ) {
+                    alt101=1;
                 }
 
 
-                switch (alt102) {
+                switch (alt101) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5608:4: otherlv_2= ',' ( (lv_ownedVariables_3_0= ruleLetVariableCS ) )
             	    {
-            	    otherlv_2=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleLetExpCS12356); if (state.failed) return current;
+            	    otherlv_2=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleLetExpCS12355); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	          	newLeafNode(otherlv_2, grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0());
@@ -16630,7 +16619,7 @@
             	      	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); 
             	      	    
             	    }
-            	    pushFollow(FollowSets000.FOLLOW_ruleLetVariableCS_in_ruleLetExpCS12377);
+            	    pushFollow(FollowSets000.FOLLOW_ruleLetVariableCS_in_ruleLetExpCS12376);
             	    lv_ownedVariables_3_0=ruleLetVariableCS();
 
             	    state._fsp--;
@@ -16659,11 +16648,11 @@
             	    break;
 
             	default :
-            	    break loop102;
+            	    break loop101;
                 }
             } while (true);
 
-            otherlv_4=(Token)match(input,87,FollowSets000.FOLLOW_87_in_ruleLetExpCS12391); if (state.failed) return current;
+            otherlv_4=(Token)match(input,87,FollowSets000.FOLLOW_87_in_ruleLetExpCS12390); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_4, grammarAccess.getLetExpCSAccess().getInKeyword_3());
@@ -16680,7 +16669,7 @@
               	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleLetExpCS12412);
+            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleLetExpCS12411);
             lv_ownedInExpression_5_0=ruleExpCS();
 
             state._fsp--;
@@ -16741,7 +16730,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getLetVariableCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleLetVariableCS_in_entryRuleLetVariableCS12448);
+            pushFollow(FollowSets000.FOLLOW_ruleLetVariableCS_in_entryRuleLetVariableCS12447);
             iv_ruleLetVariableCS=ruleLetVariableCS();
 
             state._fsp--;
@@ -16749,7 +16738,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleLetVariableCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLetVariableCS12458); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLetVariableCS12457); if (state.failed) return current;
 
             }
 
@@ -16802,7 +16791,7 @@
               	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleLetVariableCS12504);
+            pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleLetVariableCS12503);
             lv_name_0_0=ruleUnrestrictedName();
 
             state._fsp--;
@@ -16827,13 +16816,13 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5691:2: ( (lv_ownedRoundBracketedClause_1_0= ruleRoundBracketedClauseCS ) )?
-            int alt103=2;
-            int LA103_0 = input.LA(1);
+            int alt102=2;
+            int LA102_0 = input.LA(1);
 
-            if ( (LA103_0==21) ) {
-                alt103=1;
+            if ( (LA102_0==21) ) {
+                alt102=1;
             }
-            switch (alt103) {
+            switch (alt102) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5692:1: (lv_ownedRoundBracketedClause_1_0= ruleRoundBracketedClauseCS )
                     {
@@ -16845,7 +16834,7 @@
                       	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleRoundBracketedClauseCS_in_ruleLetVariableCS12525);
+                    pushFollow(FollowSets000.FOLLOW_ruleRoundBracketedClauseCS_in_ruleLetVariableCS12524);
                     lv_ownedRoundBracketedClause_1_0=ruleRoundBracketedClauseCS();
 
                     state._fsp--;
@@ -16873,17 +16862,17 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5709:3: (otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) ) )?
-            int alt104=2;
-            int LA104_0 = input.LA(1);
+            int alt103=2;
+            int LA103_0 = input.LA(1);
 
-            if ( (LA104_0==23) ) {
-                alt104=1;
+            if ( (LA103_0==23) ) {
+                alt103=1;
             }
-            switch (alt104) {
+            switch (alt103) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5709:5: otherlv_2= ':' ( (lv_ownedType_3_0= ruleTypeExpCS ) )
                     {
-                    otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleLetVariableCS12539); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleLetVariableCS12538); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_2, grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0());
@@ -16900,7 +16889,7 @@
                       	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleLetVariableCS12560);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypeExpCS_in_ruleLetVariableCS12559);
                     lv_ownedType_3_0=ruleTypeExpCS();
 
                     state._fsp--;
@@ -16930,7 +16919,7 @@
 
             }
 
-            otherlv_4=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleLetVariableCS12574); if (state.failed) return current;
+            otherlv_4=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleLetVariableCS12573); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_4, grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3());
@@ -16947,7 +16936,7 @@
               	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleLetVariableCS12595);
+            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleLetVariableCS12594);
             lv_ownedInitExpression_5_0=ruleExpCS();
 
             state._fsp--;
@@ -17008,7 +16997,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNestedExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNestedExpCS_in_entryRuleNestedExpCS12631);
+            pushFollow(FollowSets000.FOLLOW_ruleNestedExpCS_in_entryRuleNestedExpCS12630);
             iv_ruleNestedExpCS=ruleNestedExpCS();
 
             state._fsp--;
@@ -17016,7 +17005,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleNestedExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNestedExpCS12641); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNestedExpCS12640); if (state.failed) return current;
 
             }
 
@@ -17052,7 +17041,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5774:1: (otherlv_0= '(' ( (lv_ownedExpression_1_0= ruleExpCS ) ) otherlv_2= ')' )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5774:3: otherlv_0= '(' ( (lv_ownedExpression_1_0= ruleExpCS ) ) otherlv_2= ')'
             {
-            otherlv_0=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleNestedExpCS12678); if (state.failed) return current;
+            otherlv_0=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleNestedExpCS12677); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_0, grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0());
@@ -17069,7 +17058,7 @@
               	        newCompositeNode(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNestedExpCS12699);
+            pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_ruleNestedExpCS12698);
             lv_ownedExpression_1_0=ruleExpCS();
 
             state._fsp--;
@@ -17093,7 +17082,7 @@
 
             }
 
-            otherlv_2=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleNestedExpCS12711); if (state.failed) return current;
+            otherlv_2=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleNestedExpCS12710); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_2, grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2());
@@ -17136,7 +17125,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getSelfExpCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleSelfExpCS_in_entryRuleSelfExpCS12747);
+            pushFollow(FollowSets000.FOLLOW_ruleSelfExpCS_in_entryRuleSelfExpCS12746);
             iv_ruleSelfExpCS=ruleSelfExpCS();
 
             state._fsp--;
@@ -17144,7 +17133,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleSelfExpCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSelfExpCS12757); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSelfExpCS12756); if (state.failed) return current;
 
             }
 
@@ -17195,7 +17184,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,96,FollowSets000.FOLLOW_96_in_ruleSelfExpCS12806); if (state.failed) return current;
+            otherlv_1=(Token)match(input,96,FollowSets000.FOLLOW_96_in_ruleSelfExpCS12805); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_1, grammarAccess.getSelfExpCSAccess().getSelfKeyword_1());
@@ -17238,7 +17227,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getMultiplicityBoundsCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleMultiplicityBoundsCS_in_entryRuleMultiplicityBoundsCS12842);
+            pushFollow(FollowSets000.FOLLOW_ruleMultiplicityBoundsCS_in_entryRuleMultiplicityBoundsCS12841);
             iv_ruleMultiplicityBoundsCS=ruleMultiplicityBoundsCS();
 
             state._fsp--;
@@ -17246,7 +17235,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleMultiplicityBoundsCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMultiplicityBoundsCS12852); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMultiplicityBoundsCS12851); if (state.failed) return current;
 
             }
 
@@ -17294,7 +17283,7 @@
               	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleLOWER_in_ruleMultiplicityBoundsCS12898);
+            pushFollow(FollowSets000.FOLLOW_ruleLOWER_in_ruleMultiplicityBoundsCS12897);
             lv_lowerBound_0_0=ruleLOWER();
 
             state._fsp--;
@@ -17319,17 +17308,17 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5873:2: (otherlv_1= '..' ( (lv_upperBound_2_0= ruleUPPER ) ) )?
-            int alt105=2;
-            int LA105_0 = input.LA(1);
+            int alt104=2;
+            int LA104_0 = input.LA(1);
 
-            if ( (LA105_0==77) ) {
-                alt105=1;
+            if ( (LA104_0==77) ) {
+                alt104=1;
             }
-            switch (alt105) {
+            switch (alt104) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5873:4: otherlv_1= '..' ( (lv_upperBound_2_0= ruleUPPER ) )
                     {
-                    otherlv_1=(Token)match(input,77,FollowSets000.FOLLOW_77_in_ruleMultiplicityBoundsCS12911); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,77,FollowSets000.FOLLOW_77_in_ruleMultiplicityBoundsCS12910); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_1, grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0());
@@ -17346,7 +17335,7 @@
                       	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleUPPER_in_ruleMultiplicityBoundsCS12932);
+                    pushFollow(FollowSets000.FOLLOW_ruleUPPER_in_ruleMultiplicityBoundsCS12931);
                     lv_upperBound_2_0=ruleUPPER();
 
                     state._fsp--;
@@ -17413,7 +17402,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getMultiplicityCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleMultiplicityCS_in_entryRuleMultiplicityCS12970);
+            pushFollow(FollowSets000.FOLLOW_ruleMultiplicityCS_in_entryRuleMultiplicityCS12969);
             iv_ruleMultiplicityCS=ruleMultiplicityCS();
 
             state._fsp--;
@@ -17421,7 +17410,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleMultiplicityCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMultiplicityCS12980); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMultiplicityCS12979); if (state.failed) return current;
 
             }
 
@@ -17459,30 +17448,30 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5916:1: (otherlv_0= '[' (this_MultiplicityBoundsCS_1= ruleMultiplicityBoundsCS | this_MultiplicityStringCS_2= ruleMultiplicityStringCS ) otherlv_3= ']' )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5916:3: otherlv_0= '[' (this_MultiplicityBoundsCS_1= ruleMultiplicityBoundsCS | this_MultiplicityStringCS_2= ruleMultiplicityStringCS ) otherlv_3= ']'
             {
-            otherlv_0=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleMultiplicityCS13017); if (state.failed) return current;
+            otherlv_0=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleMultiplicityCS13016); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_0, grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0());
                   
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5920:1: (this_MultiplicityBoundsCS_1= ruleMultiplicityBoundsCS | this_MultiplicityStringCS_2= ruleMultiplicityStringCS )
-            int alt106=2;
-            int LA106_0 = input.LA(1);
+            int alt105=2;
+            int LA105_0 = input.LA(1);
 
-            if ( (LA106_0==RULE_INT) ) {
-                alt106=1;
+            if ( (LA105_0==RULE_INT) ) {
+                alt105=1;
             }
-            else if ( (LA106_0==41||LA106_0==54||LA106_0==56) ) {
-                alt106=2;
+            else if ( (LA105_0==41||LA105_0==54||LA105_0==56) ) {
+                alt105=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 106, 0, input);
+                    new NoViableAltException("", 105, 0, input);
 
                 throw nvae;
             }
-            switch (alt106) {
+            switch (alt105) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5921:2: this_MultiplicityBoundsCS_1= ruleMultiplicityBoundsCS
                     {
@@ -17496,7 +17485,7 @@
                               newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleMultiplicityBoundsCS_in_ruleMultiplicityCS13043);
+                    pushFollow(FollowSets000.FOLLOW_ruleMultiplicityBoundsCS_in_ruleMultiplicityCS13042);
                     this_MultiplicityBoundsCS_1=ruleMultiplicityBoundsCS();
 
                     state._fsp--;
@@ -17523,7 +17512,7 @@
                               newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleMultiplicityStringCS_in_ruleMultiplicityCS13073);
+                    pushFollow(FollowSets000.FOLLOW_ruleMultiplicityStringCS_in_ruleMultiplicityCS13072);
                     this_MultiplicityStringCS_2=ruleMultiplicityStringCS();
 
                     state._fsp--;
@@ -17540,7 +17529,7 @@
 
             }
 
-            otherlv_3=(Token)match(input,86,FollowSets000.FOLLOW_86_in_ruleMultiplicityCS13085); if (state.failed) return current;
+            otherlv_3=(Token)match(input,86,FollowSets000.FOLLOW_86_in_ruleMultiplicityCS13084); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_3, grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2());
@@ -17583,7 +17572,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getMultiplicityStringCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleMultiplicityStringCS_in_entryRuleMultiplicityStringCS13121);
+            pushFollow(FollowSets000.FOLLOW_ruleMultiplicityStringCS_in_entryRuleMultiplicityStringCS13120);
             iv_ruleMultiplicityStringCS=ruleMultiplicityStringCS();
 
             state._fsp--;
@@ -17591,7 +17580,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleMultiplicityStringCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMultiplicityStringCS13131); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMultiplicityStringCS13130); if (state.failed) return current;
 
             }
 
@@ -17630,36 +17619,36 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5972:1: (lv_stringBounds_0_1= '*' | lv_stringBounds_0_2= '+' | lv_stringBounds_0_3= '?' )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5972:1: (lv_stringBounds_0_1= '*' | lv_stringBounds_0_2= '+' | lv_stringBounds_0_3= '?' )
-            int alt107=3;
+            int alt106=3;
             switch ( input.LA(1) ) {
             case 54:
                 {
-                alt107=1;
+                alt106=1;
                 }
                 break;
             case 56:
                 {
-                alt107=2;
+                alt106=2;
                 }
                 break;
             case 41:
                 {
-                alt107=3;
+                alt106=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 107, 0, input);
+                    new NoViableAltException("", 106, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt107) {
+            switch (alt106) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5973:3: lv_stringBounds_0_1= '*'
                     {
-                    lv_stringBounds_0_1=(Token)match(input,54,FollowSets000.FOLLOW_54_in_ruleMultiplicityStringCS13175); if (state.failed) return current;
+                    lv_stringBounds_0_1=(Token)match(input,54,FollowSets000.FOLLOW_54_in_ruleMultiplicityStringCS13174); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               newLeafNode(lv_stringBounds_0_1, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0());
@@ -17679,7 +17668,7 @@
                 case 2 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5985:8: lv_stringBounds_0_2= '+'
                     {
-                    lv_stringBounds_0_2=(Token)match(input,56,FollowSets000.FOLLOW_56_in_ruleMultiplicityStringCS13204); if (state.failed) return current;
+                    lv_stringBounds_0_2=(Token)match(input,56,FollowSets000.FOLLOW_56_in_ruleMultiplicityStringCS13203); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               newLeafNode(lv_stringBounds_0_2, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1());
@@ -17699,7 +17688,7 @@
                 case 3 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:5997:8: lv_stringBounds_0_3= '?'
                     {
-                    lv_stringBounds_0_3=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleMultiplicityStringCS13233); if (state.failed) return current;
+                    lv_stringBounds_0_3=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleMultiplicityStringCS13232); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               newLeafNode(lv_stringBounds_0_3, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2());
@@ -17759,7 +17748,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPathNameCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_rulePathNameCS_in_entryRulePathNameCS13284);
+            pushFollow(FollowSets000.FOLLOW_rulePathNameCS_in_entryRulePathNameCS13283);
             iv_rulePathNameCS=rulePathNameCS();
 
             state._fsp--;
@@ -17767,7 +17756,7 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePathNameCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePathNameCS13294); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePathNameCS13293); if (state.failed) return current;
 
             }
 
@@ -17815,7 +17804,7 @@
               	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleFirstPathElementCS_in_rulePathNameCS13340);
+            pushFollow(FollowSets000.FOLLOW_ruleFirstPathElementCS_in_rulePathNameCS13339);
             lv_ownedPathElements_0_0=ruleFirstPathElementCS();
 
             state._fsp--;
@@ -17840,21 +17829,21 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6051:2: (otherlv_1= '::' ( (lv_ownedPathElements_2_0= ruleNextPathElementCS ) ) )*
-            loop108:
+            loop107:
             do {
-                int alt108=2;
-                int LA108_0 = input.LA(1);
+                int alt107=2;
+                int LA107_0 = input.LA(1);
 
-                if ( (LA108_0==69) ) {
-                    alt108=1;
+                if ( (LA107_0==69) ) {
+                    alt107=1;
                 }
 
 
-                switch (alt108) {
+                switch (alt107) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6051:4: otherlv_1= '::' ( (lv_ownedPathElements_2_0= ruleNextPathElementCS ) )
             	    {
-            	    otherlv_1=(Token)match(input,69,FollowSets000.FOLLOW_69_in_rulePathNameCS13353); if (state.failed) return current;
+            	    otherlv_1=(Token)match(input,69,FollowSets000.FOLLOW_69_in_rulePathNameCS13352); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	          	newLeafNode(otherlv_1, grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0());
@@ -17871,7 +17860,7 @@
             	      	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 
             	      	    
             	    }
-            	    pushFollow(FollowSets000.FOLLOW_ruleNextPathElementCS_in_rulePathNameCS13374);
+            	    pushFollow(FollowSets000.FOLLOW_ruleNextPathElementCS_in_rulePathNameCS13373);
             	    lv_ownedPathElements_2_0=ruleNextPathElementCS();
 
             	    state._fsp--;
@@ -17900,7 +17889,7 @@
             	    break;
 
             	default :
-            	    break loop108;
+            	    break loop107;
                 }
             } while (true);
 
@@ -17941,7 +17930,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getFirstPathElementCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleFirstPathElementCS_in_entryRuleFirstPathElementCS13412);
+            pushFollow(FollowSets000.FOLLOW_ruleFirstPathElementCS_in_entryRuleFirstPathElementCS13411);
             iv_ruleFirstPathElementCS=ruleFirstPathElementCS();
 
             state._fsp--;
@@ -17949,7 +17938,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleFirstPathElementCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFirstPathElementCS13422); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFirstPathElementCS13421); if (state.failed) return current;
 
             }
 
@@ -18000,7 +17989,7 @@
               	        newCompositeNode(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleFirstPathElementCS13473);
+            pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleFirstPathElementCS13472);
             ruleUnrestrictedName();
 
             state._fsp--;
@@ -18050,7 +18039,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNextPathElementCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNextPathElementCS_in_entryRuleNextPathElementCS13508);
+            pushFollow(FollowSets000.FOLLOW_ruleNextPathElementCS_in_entryRuleNextPathElementCS13507);
             iv_ruleNextPathElementCS=ruleNextPathElementCS();
 
             state._fsp--;
@@ -18058,7 +18047,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleNextPathElementCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNextPathElementCS13518); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNextPathElementCS13517); if (state.failed) return current;
 
             }
 
@@ -18109,7 +18098,7 @@
               	        newCompositeNode(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleUnreservedName_in_ruleNextPathElementCS13569);
+            pushFollow(FollowSets000.FOLLOW_ruleUnreservedName_in_ruleNextPathElementCS13568);
             ruleUnreservedName();
 
             state._fsp--;
@@ -18159,7 +18148,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTemplateBindingCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTemplateBindingCS_in_entryRuleTemplateBindingCS13604);
+            pushFollow(FollowSets000.FOLLOW_ruleTemplateBindingCS_in_entryRuleTemplateBindingCS13603);
             iv_ruleTemplateBindingCS=ruleTemplateBindingCS();
 
             state._fsp--;
@@ -18167,7 +18156,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTemplateBindingCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTemplateBindingCS13614); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTemplateBindingCS13613); if (state.failed) return current;
 
             }
 
@@ -18206,7 +18195,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6172:1: (otherlv_0= '(' ( (lv_ownedSubstitutions_1_0= ruleTemplateParameterSubstitutionCS ) ) (otherlv_2= ',' ( (lv_ownedSubstitutions_3_0= ruleTemplateParameterSubstitutionCS ) ) )* otherlv_4= ')' )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6172:3: otherlv_0= '(' ( (lv_ownedSubstitutions_1_0= ruleTemplateParameterSubstitutionCS ) ) (otherlv_2= ',' ( (lv_ownedSubstitutions_3_0= ruleTemplateParameterSubstitutionCS ) ) )* otherlv_4= ')'
             {
-            otherlv_0=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleTemplateBindingCS13651); if (state.failed) return current;
+            otherlv_0=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleTemplateBindingCS13650); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_0, grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0());
@@ -18223,7 +18212,7 @@
               	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTemplateParameterSubstitutionCS_in_ruleTemplateBindingCS13672);
+            pushFollow(FollowSets000.FOLLOW_ruleTemplateParameterSubstitutionCS_in_ruleTemplateBindingCS13671);
             lv_ownedSubstitutions_1_0=ruleTemplateParameterSubstitutionCS();
 
             state._fsp--;
@@ -18248,21 +18237,21 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6194:2: (otherlv_2= ',' ( (lv_ownedSubstitutions_3_0= ruleTemplateParameterSubstitutionCS ) ) )*
-            loop109:
+            loop108:
             do {
-                int alt109=2;
-                int LA109_0 = input.LA(1);
+                int alt108=2;
+                int LA108_0 = input.LA(1);
 
-                if ( (LA109_0==26) ) {
-                    alt109=1;
+                if ( (LA108_0==26) ) {
+                    alt108=1;
                 }
 
 
-                switch (alt109) {
+                switch (alt108) {
             	case 1 :
             	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6194:4: otherlv_2= ',' ( (lv_ownedSubstitutions_3_0= ruleTemplateParameterSubstitutionCS ) )
             	    {
-            	    otherlv_2=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleTemplateBindingCS13685); if (state.failed) return current;
+            	    otherlv_2=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleTemplateBindingCS13684); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	          	newLeafNode(otherlv_2, grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0());
@@ -18279,7 +18268,7 @@
             	      	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); 
             	      	    
             	    }
-            	    pushFollow(FollowSets000.FOLLOW_ruleTemplateParameterSubstitutionCS_in_ruleTemplateBindingCS13706);
+            	    pushFollow(FollowSets000.FOLLOW_ruleTemplateParameterSubstitutionCS_in_ruleTemplateBindingCS13705);
             	    lv_ownedSubstitutions_3_0=ruleTemplateParameterSubstitutionCS();
 
             	    state._fsp--;
@@ -18308,11 +18297,11 @@
             	    break;
 
             	default :
-            	    break loop109;
+            	    break loop108;
                 }
             } while (true);
 
-            otherlv_4=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleTemplateBindingCS13720); if (state.failed) return current;
+            otherlv_4=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleTemplateBindingCS13719); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_4, grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3());
@@ -18355,7 +18344,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTemplateParameterSubstitutionCS_in_entryRuleTemplateParameterSubstitutionCS13756);
+            pushFollow(FollowSets000.FOLLOW_ruleTemplateParameterSubstitutionCS_in_entryRuleTemplateParameterSubstitutionCS13755);
             iv_ruleTemplateParameterSubstitutionCS=ruleTemplateParameterSubstitutionCS();
 
             state._fsp--;
@@ -18363,7 +18352,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTemplateParameterSubstitutionCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTemplateParameterSubstitutionCS13766); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTemplateParameterSubstitutionCS13765); if (state.failed) return current;
 
             }
 
@@ -18405,7 +18394,7 @@
               	        newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypeRefCS_in_ruleTemplateParameterSubstitutionCS13811);
+            pushFollow(FollowSets000.FOLLOW_ruleTypeRefCS_in_ruleTemplateParameterSubstitutionCS13810);
             lv_ownedActualParameter_0_0=ruleTypeRefCS();
 
             state._fsp--;
@@ -18463,7 +18452,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTypeParameterCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypeParameterCS_in_entryRuleTypeParameterCS13846);
+            pushFollow(FollowSets000.FOLLOW_ruleTypeParameterCS_in_entryRuleTypeParameterCS13845);
             iv_ruleTypeParameterCS=ruleTypeParameterCS();
 
             state._fsp--;
@@ -18471,7 +18460,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTypeParameterCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeParameterCS13856); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeParameterCS13855); if (state.failed) return current;
 
             }
 
@@ -18525,7 +18514,7 @@
               	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleTypeParameterCS13902);
+            pushFollow(FollowSets000.FOLLOW_ruleUnrestrictedName_in_ruleTypeParameterCS13901);
             lv_name_0_0=ruleUnrestrictedName();
 
             state._fsp--;
@@ -18550,23 +18539,23 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6298:2: ( (otherlv_1= 'extends' ( (lv_ownedExtends_2_0= ruleTypedRefCS ) ) (otherlv_3= '&&' ( (lv_ownedExtends_4_0= ruleTypedRefCS ) ) )* ) | (otherlv_5= 'super' ( (lv_ownedSuper_6_0= ruleTypedRefCS ) ) ) )?
-            int alt111=3;
-            int LA111_0 = input.LA(1);
+            int alt110=3;
+            int LA110_0 = input.LA(1);
 
-            if ( (LA111_0==97) ) {
-                alt111=1;
+            if ( (LA110_0==97) ) {
+                alt110=1;
             }
-            else if ( (LA111_0==99) ) {
-                alt111=2;
+            else if ( (LA110_0==99) ) {
+                alt110=2;
             }
-            switch (alt111) {
+            switch (alt110) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6298:3: (otherlv_1= 'extends' ( (lv_ownedExtends_2_0= ruleTypedRefCS ) ) (otherlv_3= '&&' ( (lv_ownedExtends_4_0= ruleTypedRefCS ) ) )* )
                     {
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6298:3: (otherlv_1= 'extends' ( (lv_ownedExtends_2_0= ruleTypedRefCS ) ) (otherlv_3= '&&' ( (lv_ownedExtends_4_0= ruleTypedRefCS ) ) )* )
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6298:5: otherlv_1= 'extends' ( (lv_ownedExtends_2_0= ruleTypedRefCS ) ) (otherlv_3= '&&' ( (lv_ownedExtends_4_0= ruleTypedRefCS ) ) )*
                     {
-                    otherlv_1=(Token)match(input,97,FollowSets000.FOLLOW_97_in_ruleTypeParameterCS13916); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,97,FollowSets000.FOLLOW_97_in_ruleTypeParameterCS13915); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_1, grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0());
@@ -18583,7 +18572,7 @@
                       	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypedRefCS_in_ruleTypeParameterCS13937);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypedRefCS_in_ruleTypeParameterCS13936);
                     lv_ownedExtends_2_0=ruleTypedRefCS();
 
                     state._fsp--;
@@ -18608,21 +18597,21 @@
                     }
 
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6320:2: (otherlv_3= '&&' ( (lv_ownedExtends_4_0= ruleTypedRefCS ) ) )*
-                    loop110:
+                    loop109:
                     do {
-                        int alt110=2;
-                        int LA110_0 = input.LA(1);
+                        int alt109=2;
+                        int LA109_0 = input.LA(1);
 
-                        if ( (LA110_0==98) ) {
-                            alt110=1;
+                        if ( (LA109_0==98) ) {
+                            alt109=1;
                         }
 
 
-                        switch (alt110) {
+                        switch (alt109) {
                     	case 1 :
                     	    // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6320:4: otherlv_3= '&&' ( (lv_ownedExtends_4_0= ruleTypedRefCS ) )
                     	    {
-                    	    otherlv_3=(Token)match(input,98,FollowSets000.FOLLOW_98_in_ruleTypeParameterCS13950); if (state.failed) return current;
+                    	    otherlv_3=(Token)match(input,98,FollowSets000.FOLLOW_98_in_ruleTypeParameterCS13949); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	          	newLeafNode(otherlv_3, grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0());
@@ -18639,7 +18628,7 @@
                     	      	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); 
                     	      	    
                     	    }
-                    	    pushFollow(FollowSets000.FOLLOW_ruleTypedRefCS_in_ruleTypeParameterCS13971);
+                    	    pushFollow(FollowSets000.FOLLOW_ruleTypedRefCS_in_ruleTypeParameterCS13970);
                     	    lv_ownedExtends_4_0=ruleTypedRefCS();
 
                     	    state._fsp--;
@@ -18668,7 +18657,7 @@
                     	    break;
 
                     	default :
-                    	    break loop110;
+                    	    break loop109;
                         }
                     } while (true);
 
@@ -18684,7 +18673,7 @@
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6343:6: (otherlv_5= 'super' ( (lv_ownedSuper_6_0= ruleTypedRefCS ) ) )
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6343:8: otherlv_5= 'super' ( (lv_ownedSuper_6_0= ruleTypedRefCS ) )
                     {
-                    otherlv_5=(Token)match(input,99,FollowSets000.FOLLOW_99_in_ruleTypeParameterCS13993); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,99,FollowSets000.FOLLOW_99_in_ruleTypeParameterCS13992); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_5, grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0());
@@ -18701,7 +18690,7 @@
                       	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypedRefCS_in_ruleTypeParameterCS14014);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypedRefCS_in_ruleTypeParameterCS14013);
                     lv_ownedSuper_6_0=ruleTypedRefCS();
 
                     state._fsp--;
@@ -18771,7 +18760,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTypeRefCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypeRefCS_in_entryRuleTypeRefCS14053);
+            pushFollow(FollowSets000.FOLLOW_ruleTypeRefCS_in_entryRuleTypeRefCS14052);
             iv_ruleTypeRefCS=ruleTypeRefCS();
 
             state._fsp--;
@@ -18779,7 +18768,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTypeRefCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeRefCS14063); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeRefCS14062); if (state.failed) return current;
 
             }
 
@@ -18813,23 +18802,23 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6386:1: (this_TypedRefCS_0= ruleTypedRefCS | this_WildcardTypeRefCS_1= ruleWildcardTypeRefCS )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6386:1: (this_TypedRefCS_0= ruleTypedRefCS | this_WildcardTypeRefCS_1= ruleWildcardTypeRefCS )
-            int alt112=2;
-            int LA112_0 = input.LA(1);
+            int alt111=2;
+            int LA111_0 = input.LA(1);
 
-            if ( ((LA112_0>=RULE_SIMPLE_ID && LA112_0<=RULE_ESCAPED_ID)||LA112_0==28||(LA112_0>=30 && LA112_0<=31)||(LA112_0>=42 && LA112_0<=51)||LA112_0==68||(LA112_0>=70 && LA112_0<=74)) ) {
-                alt112=1;
+            if ( ((LA111_0>=RULE_SIMPLE_ID && LA111_0<=RULE_ESCAPED_ID)||LA111_0==28||(LA111_0>=30 && LA111_0<=31)||(LA111_0>=42 && LA111_0<=51)||LA111_0==68||(LA111_0>=70 && LA111_0<=74)) ) {
+                alt111=1;
             }
-            else if ( (LA112_0==41) ) {
-                alt112=2;
+            else if ( (LA111_0==41) ) {
+                alt111=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 112, 0, input);
+                    new NoViableAltException("", 111, 0, input);
 
                 throw nvae;
             }
-            switch (alt112) {
+            switch (alt111) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6387:2: this_TypedRefCS_0= ruleTypedRefCS
                     {
@@ -18843,7 +18832,7 @@
                               newCompositeNode(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypedRefCS_in_ruleTypeRefCS14113);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypedRefCS_in_ruleTypeRefCS14112);
                     this_TypedRefCS_0=ruleTypedRefCS();
 
                     state._fsp--;
@@ -18870,7 +18859,7 @@
                               newCompositeNode(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); 
                           
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleWildcardTypeRefCS_in_ruleTypeRefCS14143);
+                    pushFollow(FollowSets000.FOLLOW_ruleWildcardTypeRefCS_in_ruleTypeRefCS14142);
                     this_WildcardTypeRefCS_1=ruleWildcardTypeRefCS();
 
                     state._fsp--;
@@ -18921,7 +18910,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTypedTypeRefCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleTypedTypeRefCS_in_entryRuleTypedTypeRefCS14178);
+            pushFollow(FollowSets000.FOLLOW_ruleTypedTypeRefCS_in_entryRuleTypedTypeRefCS14177);
             iv_ruleTypedTypeRefCS=ruleTypedTypeRefCS();
 
             state._fsp--;
@@ -18929,7 +18918,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTypedTypeRefCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypedTypeRefCS14188); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypedTypeRefCS14187); if (state.failed) return current;
 
             }
 
@@ -18976,7 +18965,7 @@
               	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
               	    
             }
-            pushFollow(FollowSets000.FOLLOW_rulePathNameCS_in_ruleTypedTypeRefCS14234);
+            pushFollow(FollowSets000.FOLLOW_rulePathNameCS_in_ruleTypedTypeRefCS14233);
             lv_ownedPathName_0_0=rulePathNameCS();
 
             state._fsp--;
@@ -19001,13 +18990,13 @@
             }
 
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6450:2: ( (lv_ownedBinding_1_0= ruleTemplateBindingCS ) )?
-            int alt113=2;
-            int LA113_0 = input.LA(1);
+            int alt112=2;
+            int LA112_0 = input.LA(1);
 
-            if ( (LA113_0==21) ) {
-                alt113=1;
+            if ( (LA112_0==21) ) {
+                alt112=1;
             }
-            switch (alt113) {
+            switch (alt112) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6451:1: (lv_ownedBinding_1_0= ruleTemplateBindingCS )
                     {
@@ -19019,7 +19008,7 @@
                       	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTemplateBindingCS_in_ruleTypedTypeRefCS14255);
+                    pushFollow(FollowSets000.FOLLOW_ruleTemplateBindingCS_in_ruleTypedTypeRefCS14254);
                     lv_ownedBinding_1_0=ruleTemplateBindingCS();
 
                     state._fsp--;
@@ -19083,7 +19072,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getWildcardTypeRefCSRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleWildcardTypeRefCS_in_entryRuleWildcardTypeRefCS14292);
+            pushFollow(FollowSets000.FOLLOW_ruleWildcardTypeRefCS_in_entryRuleWildcardTypeRefCS14291);
             iv_ruleWildcardTypeRefCS=ruleWildcardTypeRefCS();
 
             state._fsp--;
@@ -19091,7 +19080,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleWildcardTypeRefCS; 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleWildcardTypeRefCS14302); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleWildcardTypeRefCS14301); if (state.failed) return current;
 
             }
 
@@ -19148,30 +19137,30 @@
 
             }
 
-            otherlv_1=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleWildcardTypeRefCS14351); if (state.failed) return current;
+            otherlv_1=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleWildcardTypeRefCS14350); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
                   	newLeafNode(otherlv_1, grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1());
                   
             }
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6502:1: ( (otherlv_2= 'extends' ( (lv_ownedExtends_3_0= ruleTypedRefCS ) ) ) | (otherlv_4= 'super' ( (lv_ownedSuper_5_0= ruleTypedRefCS ) ) ) )?
-            int alt114=3;
-            int LA114_0 = input.LA(1);
+            int alt113=3;
+            int LA113_0 = input.LA(1);
 
-            if ( (LA114_0==97) ) {
-                alt114=1;
+            if ( (LA113_0==97) ) {
+                alt113=1;
             }
-            else if ( (LA114_0==99) ) {
-                alt114=2;
+            else if ( (LA113_0==99) ) {
+                alt113=2;
             }
-            switch (alt114) {
+            switch (alt113) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6502:2: (otherlv_2= 'extends' ( (lv_ownedExtends_3_0= ruleTypedRefCS ) ) )
                     {
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6502:2: (otherlv_2= 'extends' ( (lv_ownedExtends_3_0= ruleTypedRefCS ) ) )
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6502:4: otherlv_2= 'extends' ( (lv_ownedExtends_3_0= ruleTypedRefCS ) )
                     {
-                    otherlv_2=(Token)match(input,97,FollowSets000.FOLLOW_97_in_ruleWildcardTypeRefCS14365); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,97,FollowSets000.FOLLOW_97_in_ruleWildcardTypeRefCS14364); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_2, grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0());
@@ -19188,7 +19177,7 @@
                       	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypedRefCS_in_ruleWildcardTypeRefCS14386);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypedRefCS_in_ruleWildcardTypeRefCS14385);
                     lv_ownedExtends_3_0=ruleTypedRefCS();
 
                     state._fsp--;
@@ -19224,7 +19213,7 @@
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6525:6: (otherlv_4= 'super' ( (lv_ownedSuper_5_0= ruleTypedRefCS ) ) )
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6525:8: otherlv_4= 'super' ( (lv_ownedSuper_5_0= ruleTypedRefCS ) )
                     {
-                    otherlv_4=(Token)match(input,99,FollowSets000.FOLLOW_99_in_ruleWildcardTypeRefCS14406); if (state.failed) return current;
+                    otherlv_4=(Token)match(input,99,FollowSets000.FOLLOW_99_in_ruleWildcardTypeRefCS14405); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                           	newLeafNode(otherlv_4, grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0());
@@ -19241,7 +19230,7 @@
                       	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); 
                       	    
                     }
-                    pushFollow(FollowSets000.FOLLOW_ruleTypedRefCS_in_ruleWildcardTypeRefCS14427);
+                    pushFollow(FollowSets000.FOLLOW_ruleTypedRefCS_in_ruleWildcardTypeRefCS14426);
                     lv_ownedSuper_5_0=ruleTypedRefCS();
 
                     state._fsp--;
@@ -19311,7 +19300,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getIDRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleID_in_entryRuleID14467);
+            pushFollow(FollowSets000.FOLLOW_ruleID_in_entryRuleID14466);
             iv_ruleID=ruleID();
 
             state._fsp--;
@@ -19319,7 +19308,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleID.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleID14478); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleID14477); if (state.failed) return current;
 
             }
 
@@ -19351,27 +19340,27 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6568:1: (this_SIMPLE_ID_0= RULE_SIMPLE_ID | this_ESCAPED_ID_1= RULE_ESCAPED_ID )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6568:1: (this_SIMPLE_ID_0= RULE_SIMPLE_ID | this_ESCAPED_ID_1= RULE_ESCAPED_ID )
-            int alt115=2;
-            int LA115_0 = input.LA(1);
+            int alt114=2;
+            int LA114_0 = input.LA(1);
 
-            if ( (LA115_0==RULE_SIMPLE_ID) ) {
-                alt115=1;
+            if ( (LA114_0==RULE_SIMPLE_ID) ) {
+                alt114=1;
             }
-            else if ( (LA115_0==RULE_ESCAPED_ID) ) {
-                alt115=2;
+            else if ( (LA114_0==RULE_ESCAPED_ID) ) {
+                alt114=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 115, 0, input);
+                    new NoViableAltException("", 114, 0, input);
 
                 throw nvae;
             }
-            switch (alt115) {
+            switch (alt114) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6568:6: this_SIMPLE_ID_0= RULE_SIMPLE_ID
                     {
-                    this_SIMPLE_ID_0=(Token)match(input,RULE_SIMPLE_ID,FollowSets000.FOLLOW_RULE_SIMPLE_ID_in_ruleID14518); if (state.failed) return current;
+                    this_SIMPLE_ID_0=(Token)match(input,RULE_SIMPLE_ID,FollowSets000.FOLLOW_RULE_SIMPLE_ID_in_ruleID14517); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       		current.merge(this_SIMPLE_ID_0);
@@ -19388,7 +19377,7 @@
                 case 2 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6576:10: this_ESCAPED_ID_1= RULE_ESCAPED_ID
                     {
-                    this_ESCAPED_ID_1=(Token)match(input,RULE_ESCAPED_ID,FollowSets000.FOLLOW_RULE_ESCAPED_ID_in_ruleID14544); if (state.failed) return current;
+                    this_ESCAPED_ID_1=(Token)match(input,RULE_ESCAPED_ID,FollowSets000.FOLLOW_RULE_ESCAPED_ID_in_ruleID14543); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       		current.merge(this_ESCAPED_ID_1);
@@ -19439,7 +19428,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getIdentifierRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleIdentifier_in_entryRuleIdentifier14590);
+            pushFollow(FollowSets000.FOLLOW_ruleIdentifier_in_entryRuleIdentifier14589);
             iv_ruleIdentifier=ruleIdentifier();
 
             state._fsp--;
@@ -19447,7 +19436,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleIdentifier.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleIdentifier14601); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleIdentifier14600); if (state.failed) return current;
 
             }
 
@@ -19483,7 +19472,7 @@
                       newCompositeNode(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); 
                   
             }
-            pushFollow(FollowSets000.FOLLOW_ruleID_in_ruleIdentifier14647);
+            pushFollow(FollowSets000.FOLLOW_ruleID_in_ruleIdentifier14646);
             this_ID_0=ruleID();
 
             state._fsp--;
@@ -19532,7 +19521,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getLOWERRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleLOWER_in_entryRuleLOWER14692);
+            pushFollow(FollowSets000.FOLLOW_ruleLOWER_in_entryRuleLOWER14691);
             iv_ruleLOWER=ruleLOWER();
 
             state._fsp--;
@@ -19540,7 +19529,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleLOWER.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLOWER14703); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLOWER14702); if (state.failed) return current;
 
             }
 
@@ -19570,7 +19559,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6635:28: (this_INT_0= RULE_INT )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6636:5: this_INT_0= RULE_INT
             {
-            this_INT_0=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleLOWER14742); if (state.failed) return current;
+            this_INT_0=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleLOWER14741); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               		current.merge(this_INT_0);
@@ -19615,7 +19604,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNUMBER_LITERALRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleNUMBER_LITERAL_in_entryRuleNUMBER_LITERAL14787);
+            pushFollow(FollowSets000.FOLLOW_ruleNUMBER_LITERAL_in_entryRuleNUMBER_LITERAL14786);
             iv_ruleNUMBER_LITERAL=ruleNUMBER_LITERAL();
 
             state._fsp--;
@@ -19623,7 +19612,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleNUMBER_LITERAL.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNUMBER_LITERAL14798); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNUMBER_LITERAL14797); if (state.failed) return current;
 
             }
 
@@ -19653,7 +19642,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6663:28: (this_INT_0= RULE_INT )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6664:5: this_INT_0= RULE_INT
             {
-            this_INT_0=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleNUMBER_LITERAL14837); if (state.failed) return current;
+            this_INT_0=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleNUMBER_LITERAL14836); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               		current.merge(this_INT_0);
@@ -19698,7 +19687,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getStringLiteralRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_entryRuleStringLiteral14882);
+            pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_entryRuleStringLiteral14881);
             iv_ruleStringLiteral=ruleStringLiteral();
 
             state._fsp--;
@@ -19706,7 +19695,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleStringLiteral.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStringLiteral14893); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStringLiteral14892); if (state.failed) return current;
 
             }
 
@@ -19736,7 +19725,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6691:28: (this_SINGLE_QUOTED_STRING_0= RULE_SINGLE_QUOTED_STRING )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6692:5: this_SINGLE_QUOTED_STRING_0= RULE_SINGLE_QUOTED_STRING
             {
-            this_SINGLE_QUOTED_STRING_0=(Token)match(input,RULE_SINGLE_QUOTED_STRING,FollowSets000.FOLLOW_RULE_SINGLE_QUOTED_STRING_in_ruleStringLiteral14932); if (state.failed) return current;
+            this_SINGLE_QUOTED_STRING_0=(Token)match(input,RULE_SINGLE_QUOTED_STRING,FollowSets000.FOLLOW_RULE_SINGLE_QUOTED_STRING_in_ruleStringLiteral14931); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               		current.merge(this_SINGLE_QUOTED_STRING_0);
@@ -19781,7 +19770,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getUPPERRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleUPPER_in_entryRuleUPPER14977);
+            pushFollow(FollowSets000.FOLLOW_ruleUPPER_in_entryRuleUPPER14976);
             iv_ruleUPPER=ruleUPPER();
 
             state._fsp--;
@@ -19789,7 +19778,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleUPPER.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUPPER14988); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUPPER14987); if (state.failed) return current;
 
             }
 
@@ -19821,27 +19810,27 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6720:1: (this_INT_0= RULE_INT | kw= '*' )
             {
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6720:1: (this_INT_0= RULE_INT | kw= '*' )
-            int alt116=2;
-            int LA116_0 = input.LA(1);
+            int alt115=2;
+            int LA115_0 = input.LA(1);
 
-            if ( (LA116_0==RULE_INT) ) {
-                alt116=1;
+            if ( (LA115_0==RULE_INT) ) {
+                alt115=1;
             }
-            else if ( (LA116_0==54) ) {
-                alt116=2;
+            else if ( (LA115_0==54) ) {
+                alt115=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 116, 0, input);
+                    new NoViableAltException("", 115, 0, input);
 
                 throw nvae;
             }
-            switch (alt116) {
+            switch (alt115) {
                 case 1 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6720:6: this_INT_0= RULE_INT
                     {
-                    this_INT_0=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleUPPER15028); if (state.failed) return current;
+                    this_INT_0=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleUPPER15027); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       		current.merge(this_INT_0);
@@ -19858,7 +19847,7 @@
                 case 2 :
                     // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6729:2: kw= '*'
                     {
-                    kw=(Token)match(input,54,FollowSets000.FOLLOW_54_in_ruleUPPER15052); if (state.failed) return current;
+                    kw=(Token)match(input,54,FollowSets000.FOLLOW_54_in_ruleUPPER15051); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                               current.merge(kw);
@@ -19905,7 +19894,7 @@
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getURIRule()); 
             }
-            pushFollow(FollowSets000.FOLLOW_ruleURI_in_entryRuleURI15093);
+            pushFollow(FollowSets000.FOLLOW_ruleURI_in_entryRuleURI15092);
             iv_ruleURI=ruleURI();
 
             state._fsp--;
@@ -19913,7 +19902,7 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleURI.getText(); 
             }
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleURI15104); if (state.failed) return current;
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleURI15103); if (state.failed) return current;
 
             }
 
@@ -19943,7 +19932,7 @@
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6754:28: (this_SINGLE_QUOTED_STRING_0= RULE_SINGLE_QUOTED_STRING )
             // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:6755:5: this_SINGLE_QUOTED_STRING_0= RULE_SINGLE_QUOTED_STRING
             {
-            this_SINGLE_QUOTED_STRING_0=(Token)match(input,RULE_SINGLE_QUOTED_STRING,FollowSets000.FOLLOW_RULE_SINGLE_QUOTED_STRING_in_ruleURI15143); if (state.failed) return current;
+            this_SINGLE_QUOTED_STRING_0=(Token)match(input,RULE_SINGLE_QUOTED_STRING,FollowSets000.FOLLOW_RULE_SINGLE_QUOTED_STRING_in_ruleURI15142); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               		current.merge(this_SINGLE_QUOTED_STRING_0);
@@ -20018,8 +20007,8 @@
     }
     // $ANTLR end synpred14_InternalCompleteOCL
 
-    // $ANTLR start synpred113_InternalCompleteOCL
-    public final void synpred113_InternalCompleteOCL_fragment() throws RecognitionException {   
+    // $ANTLR start synpred112_InternalCompleteOCL
+    public final void synpred112_InternalCompleteOCL_fragment() throws RecognitionException {   
         EObject this_TypeLiteralCS_1 = null;
 
 
@@ -20031,7 +20020,7 @@
           	  /* */ 
           	
         }
-        pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralCS_in_synpred113_InternalCompleteOCL9314);
+        pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralCS_in_synpred112_InternalCompleteOCL9313);
         this_TypeLiteralCS_1=ruleTypeLiteralCS();
 
         state._fsp--;
@@ -20039,10 +20028,10 @@
 
         }
     }
-    // $ANTLR end synpred113_InternalCompleteOCL
+    // $ANTLR end synpred112_InternalCompleteOCL
 
-    // $ANTLR start synpred116_InternalCompleteOCL
-    public final void synpred116_InternalCompleteOCL_fragment() throws RecognitionException {   
+    // $ANTLR start synpred115_InternalCompleteOCL
+    public final void synpred115_InternalCompleteOCL_fragment() throws RecognitionException {   
         EObject this_PrefixedPrimaryExpCS_0 = null;
 
         AntlrDatatypeRuleToken lv_name_2_0 = null;
@@ -20061,19 +20050,19 @@
           	  /* */ 
           	
         }
-        pushFollow(FollowSets000.FOLLOW_rulePrefixedPrimaryExpCS_in_synpred116_InternalCompleteOCL9463);
+        pushFollow(FollowSets000.FOLLOW_rulePrefixedPrimaryExpCS_in_synpred115_InternalCompleteOCL9462);
         this_PrefixedPrimaryExpCS_0=rulePrefixedPrimaryExpCS();
 
         state._fsp--;
         if (state.failed) return ;
         // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4150:1: ( () ( (lv_name_2_0= ruleBinaryOperatorName ) ) ( (lv_ownedRight_3_0= ruleExpCS ) ) )?
-        int alt129=2;
-        int LA129_0 = input.LA(1);
+        int alt128=2;
+        int LA128_0 = input.LA(1);
 
-        if ( ((LA129_0>=17 && LA129_0<=18)||LA129_0==27||(LA129_0>=39 && LA129_0<=40)||LA129_0==52||(LA129_0>=54 && LA129_0<=67)) ) {
-            alt129=1;
+        if ( ((LA128_0>=17 && LA128_0<=18)||LA128_0==27||(LA128_0>=39 && LA128_0<=40)||LA128_0==52||(LA128_0>=54 && LA128_0<=67)) ) {
+            alt128=1;
         }
-        switch (alt129) {
+        switch (alt128) {
             case 1 :
                 // ../../plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/parser/antlr/internal/InternalCompleteOCL.g:4150:2: () ( (lv_name_2_0= ruleBinaryOperatorName ) ) ( (lv_ownedRight_3_0= ruleExpCS ) )
                 {
@@ -20099,7 +20088,7 @@
                   	        newCompositeNode(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); 
                   	    
                 }
-                pushFollow(FollowSets000.FOLLOW_ruleBinaryOperatorName_in_synpred116_InternalCompleteOCL9496);
+                pushFollow(FollowSets000.FOLLOW_ruleBinaryOperatorName_in_synpred115_InternalCompleteOCL9495);
                 lv_name_2_0=ruleBinaryOperatorName();
 
                 state._fsp--;
@@ -20121,7 +20110,7 @@
                   	        newCompositeNode(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); 
                   	    
                 }
-                pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_synpred116_InternalCompleteOCL9517);
+                pushFollow(FollowSets000.FOLLOW_ruleExpCS_in_synpred115_InternalCompleteOCL9516);
                 lv_ownedRight_3_0=ruleExpCS();
 
                 state._fsp--;
@@ -20144,10 +20133,10 @@
 
         }
     }
-    // $ANTLR end synpred116_InternalCompleteOCL
+    // $ANTLR end synpred115_InternalCompleteOCL
 
-    // $ANTLR start synpred123_InternalCompleteOCL
-    public final void synpred123_InternalCompleteOCL_fragment() throws RecognitionException {   
+    // $ANTLR start synpred122_InternalCompleteOCL
+    public final void synpred122_InternalCompleteOCL_fragment() throws RecognitionException {   
         EObject this_TupleLiteralExpCS_4 = null;
 
 
@@ -20159,7 +20148,7 @@
           	  /* */ 
           	
         }
-        pushFollow(FollowSets000.FOLLOW_ruleTupleLiteralExpCS_in_synpred123_InternalCompleteOCL10080);
+        pushFollow(FollowSets000.FOLLOW_ruleTupleLiteralExpCS_in_synpred122_InternalCompleteOCL10079);
         this_TupleLiteralExpCS_4=ruleTupleLiteralExpCS();
 
         state._fsp--;
@@ -20167,10 +20156,10 @@
 
         }
     }
-    // $ANTLR end synpred123_InternalCompleteOCL
+    // $ANTLR end synpred122_InternalCompleteOCL
 
-    // $ANTLR start synpred124_InternalCompleteOCL
-    public final void synpred124_InternalCompleteOCL_fragment() throws RecognitionException {   
+    // $ANTLR start synpred123_InternalCompleteOCL
+    public final void synpred123_InternalCompleteOCL_fragment() throws RecognitionException {   
         EObject this_CollectionLiteralExpCS_5 = null;
 
 
@@ -20182,7 +20171,7 @@
           	  /* */ 
           	
         }
-        pushFollow(FollowSets000.FOLLOW_ruleCollectionLiteralExpCS_in_synpred124_InternalCompleteOCL10110);
+        pushFollow(FollowSets000.FOLLOW_ruleCollectionLiteralExpCS_in_synpred123_InternalCompleteOCL10109);
         this_CollectionLiteralExpCS_5=ruleCollectionLiteralExpCS();
 
         state._fsp--;
@@ -20190,10 +20179,10 @@
 
         }
     }
-    // $ANTLR end synpred124_InternalCompleteOCL
+    // $ANTLR end synpred123_InternalCompleteOCL
 
-    // $ANTLR start synpred126_InternalCompleteOCL
-    public final void synpred126_InternalCompleteOCL_fragment() throws RecognitionException {   
+    // $ANTLR start synpred125_InternalCompleteOCL
+    public final void synpred125_InternalCompleteOCL_fragment() throws RecognitionException {   
         EObject this_TypeLiteralExpCS_7 = null;
 
 
@@ -20205,7 +20194,7 @@
           	  /* */ 
           	
         }
-        pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralExpCS_in_synpred126_InternalCompleteOCL10170);
+        pushFollow(FollowSets000.FOLLOW_ruleTypeLiteralExpCS_in_synpred125_InternalCompleteOCL10169);
         this_TypeLiteralExpCS_7=ruleTypeLiteralExpCS();
 
         state._fsp--;
@@ -20213,7 +20202,7 @@
 
         }
     }
-    // $ANTLR end synpred126_InternalCompleteOCL
+    // $ANTLR end synpred125_InternalCompleteOCL
 
     // Delegated rules
 
@@ -20245,11 +20234,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred124_InternalCompleteOCL() {
+    public final boolean synpred112_InternalCompleteOCL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred124_InternalCompleteOCL_fragment(); // can never throw exception
+            synpred112_InternalCompleteOCL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -20259,11 +20248,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred116_InternalCompleteOCL() {
+    public final boolean synpred122_InternalCompleteOCL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred116_InternalCompleteOCL_fragment(); // can never throw exception
+            synpred122_InternalCompleteOCL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -20273,25 +20262,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred126_InternalCompleteOCL() {
+    public final boolean synpred125_InternalCompleteOCL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred126_InternalCompleteOCL_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred113_InternalCompleteOCL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred113_InternalCompleteOCL_fragment(); // can never throw exception
+            synpred125_InternalCompleteOCL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -20315,22 +20290,36 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred115_InternalCompleteOCL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred115_InternalCompleteOCL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
 
 
     protected DFA10 dfa10 = new DFA10(this);
-    protected DFA70 dfa70 = new DFA70(this);
-    protected DFA73 dfa73 = new DFA73(this);
-    protected DFA76 dfa76 = new DFA76(this);
+    protected DFA69 dfa69 = new DFA69(this);
+    protected DFA72 dfa72 = new DFA72(this);
+    protected DFA75 dfa75 = new DFA75(this);
     static final String DFA10_eotS =
         "\20\uffff";
     static final String DFA10_eofS =
         "\20\uffff";
     static final String DFA10_minS =
-        "\1\30\1\31\1\5\5\27\1\5\1\uffff\5\25\1\uffff";
+        "\1\30\1\31\1\5\5\27\1\5\5\25\2\uffff";
     static final String DFA10_maxS =
-        "\2\31\1\37\5\27\1\47\1\uffff\5\27\1\uffff";
+        "\2\31\1\37\5\27\1\47\5\27\2\uffff";
     static final String DFA10_acceptS =
-        "\11\uffff\1\1\5\uffff\1\2";
+        "\16\uffff\1\1\1\2";
     static final String DFA10_specialS =
         "\20\uffff}>";
     static final String[] DFA10_transitionS = {
@@ -20342,14 +20331,14 @@
             "\1\10",
             "\1\10",
             "\1\10",
-            "\1\12\1\13\16\uffff\1\11\6\uffff\1\14\1\uffff\1\15\1\16\7"+
-            "\uffff\1\11",
+            "\1\11\1\12\16\uffff\1\16\6\uffff\1\13\1\uffff\1\14\1\15\7"+
+            "\uffff\1\16",
+            "\1\16\1\uffff\1\17",
+            "\1\16\1\uffff\1\17",
+            "\1\16\1\uffff\1\17",
+            "\1\16\1\uffff\1\17",
+            "\1\16\1\uffff\1\17",
             "",
-            "\1\11\1\uffff\1\17",
-            "\1\11\1\uffff\1\17",
-            "\1\11\1\uffff\1\17",
-            "\1\11\1\uffff\1\17",
-            "\1\11\1\uffff\1\17",
             ""
     };
 
@@ -20386,19 +20375,19 @@
             return "500:1: (this_DefOperationCS_0= ruleDefOperationCS | this_DefPropertyCS_1= ruleDefPropertyCS )";
         }
     }
-    static final String DFA70_eotS =
+    static final String DFA69_eotS =
         "\27\uffff";
-    static final String DFA70_eofS =
+    static final String DFA69_eofS =
         "\27\uffff";
-    static final String DFA70_minS =
+    static final String DFA69_minS =
         "\1\5\17\uffff\5\0\2\uffff";
-    static final String DFA70_maxS =
+    static final String DFA69_maxS =
         "\1\112\17\uffff\5\0\2\uffff";
-    static final String DFA70_acceptS =
+    static final String DFA69_acceptS =
         "\1\uffff\1\1\4\uffff\1\2\17\uffff\1\3";
-    static final String DFA70_specialS =
+    static final String DFA69_specialS =
         "\20\uffff\1\0\1\1\1\2\1\3\1\4\2\uffff}>";
-    static final String[] DFA70_transitionS = {
+    static final String[] DFA69_transitionS = {
             "\2\1\25\uffff\1\1\1\uffff\2\1\12\uffff\12\6\20\uffff\1\6\1"+
             "\uffff\1\20\1\21\1\22\1\23\1\24",
             "",
@@ -20425,34 +20414,34 @@
             ""
     };
 
-    static final short[] DFA70_eot = DFA.unpackEncodedString(DFA70_eotS);
-    static final short[] DFA70_eof = DFA.unpackEncodedString(DFA70_eofS);
-    static final char[] DFA70_min = DFA.unpackEncodedStringToUnsignedChars(DFA70_minS);
-    static final char[] DFA70_max = DFA.unpackEncodedStringToUnsignedChars(DFA70_maxS);
-    static final short[] DFA70_accept = DFA.unpackEncodedString(DFA70_acceptS);
-    static final short[] DFA70_special = DFA.unpackEncodedString(DFA70_specialS);
-    static final short[][] DFA70_transition;
+    static final short[] DFA69_eot = DFA.unpackEncodedString(DFA69_eotS);
+    static final short[] DFA69_eof = DFA.unpackEncodedString(DFA69_eofS);
+    static final char[] DFA69_min = DFA.unpackEncodedStringToUnsignedChars(DFA69_minS);
+    static final char[] DFA69_max = DFA.unpackEncodedStringToUnsignedChars(DFA69_maxS);
+    static final short[] DFA69_accept = DFA.unpackEncodedString(DFA69_acceptS);
+    static final short[] DFA69_special = DFA.unpackEncodedString(DFA69_specialS);
+    static final short[][] DFA69_transition;
 
     static {
-        int numStates = DFA70_transitionS.length;
-        DFA70_transition = new short[numStates][];
+        int numStates = DFA69_transitionS.length;
+        DFA69_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA70_transition[i] = DFA.unpackEncodedString(DFA70_transitionS[i]);
+            DFA69_transition[i] = DFA.unpackEncodedString(DFA69_transitionS[i]);
         }
     }
 
-    class DFA70 extends DFA {
+    class DFA69 extends DFA {
 
-        public DFA70(BaseRecognizer recognizer) {
+        public DFA69(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 70;
-            this.eot = DFA70_eot;
-            this.eof = DFA70_eof;
-            this.min = DFA70_min;
-            this.max = DFA70_max;
-            this.accept = DFA70_accept;
-            this.special = DFA70_special;
-            this.transition = DFA70_transition;
+            this.decisionNumber = 69;
+            this.eot = DFA69_eot;
+            this.eof = DFA69_eof;
+            this.min = DFA69_min;
+            this.max = DFA69_max;
+            this.accept = DFA69_accept;
+            this.special = DFA69_special;
+            this.transition = DFA69_transition;
         }
         public String getDescription() {
             return "4061:2: (this_TypeNameExpCS_0= ruleTypeNameExpCS | this_TypeLiteralCS_1= ruleTypeLiteralCS | this_CollectionPatternCS_2= ruleCollectionPatternCS )";
@@ -20462,101 +20451,101 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA70_16 = input.LA(1);
+                        int LA69_16 = input.LA(1);
 
                          
-                        int index70_16 = input.index();
+                        int index69_16 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred113_InternalCompleteOCL()) ) {s = 6;}
+                        if ( (synpred112_InternalCompleteOCL()) ) {s = 6;}
 
                         else if ( (true) ) {s = 22;}
 
                          
-                        input.seek(index70_16);
+                        input.seek(index69_16);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA70_17 = input.LA(1);
+                        int LA69_17 = input.LA(1);
 
                          
-                        int index70_17 = input.index();
+                        int index69_17 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred113_InternalCompleteOCL()) ) {s = 6;}
+                        if ( (synpred112_InternalCompleteOCL()) ) {s = 6;}
 
                         else if ( (true) ) {s = 22;}
 
                          
-                        input.seek(index70_17);
+                        input.seek(index69_17);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA70_18 = input.LA(1);
+                        int LA69_18 = input.LA(1);
 
                          
-                        int index70_18 = input.index();
+                        int index69_18 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred113_InternalCompleteOCL()) ) {s = 6;}
+                        if ( (synpred112_InternalCompleteOCL()) ) {s = 6;}
 
                         else if ( (true) ) {s = 22;}
 
                          
-                        input.seek(index70_18);
+                        input.seek(index69_18);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA70_19 = input.LA(1);
+                        int LA69_19 = input.LA(1);
 
                          
-                        int index70_19 = input.index();
+                        int index69_19 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred113_InternalCompleteOCL()) ) {s = 6;}
+                        if ( (synpred112_InternalCompleteOCL()) ) {s = 6;}
 
                         else if ( (true) ) {s = 22;}
 
                          
-                        input.seek(index70_19);
+                        input.seek(index69_19);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA70_20 = input.LA(1);
+                        int LA69_20 = input.LA(1);
 
                          
-                        int index70_20 = input.index();
+                        int index69_20 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred113_InternalCompleteOCL()) ) {s = 6;}
+                        if ( (synpred112_InternalCompleteOCL()) ) {s = 6;}
 
                         else if ( (true) ) {s = 22;}
 
                          
-                        input.seek(index70_20);
+                        input.seek(index69_20);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 70, _s, input);
+                new NoViableAltException(getDescription(), 69, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA73_eotS =
+    static final String DFA72_eotS =
         "\44\uffff";
-    static final String DFA73_eofS =
+    static final String DFA72_eofS =
         "\44\uffff";
-    static final String DFA73_minS =
+    static final String DFA72_minS =
         "\1\5\2\0\41\uffff";
-    static final String DFA73_maxS =
+    static final String DFA72_maxS =
         "\1\140\2\0\41\uffff";
-    static final String DFA73_acceptS =
+    static final String DFA72_acceptS =
         "\3\uffff\1\1\37\uffff\1\2";
-    static final String DFA73_specialS =
+    static final String DFA72_specialS =
         "\1\uffff\1\0\1\1\41\uffff}>";
-    static final String[] DFA73_transitionS = {
+    static final String[] DFA72_transitionS = {
             "\4\3\14\uffff\1\3\6\uffff\1\3\1\uffff\2\3\12\uffff\12\3\1\1"+
             "\1\2\1\3\15\uffff\1\3\1\uffff\5\3\4\uffff\5\3\6\uffff\1\3\4"+
             "\uffff\1\43\1\3",
@@ -20597,34 +20586,34 @@
             ""
     };
 
-    static final short[] DFA73_eot = DFA.unpackEncodedString(DFA73_eotS);
-    static final short[] DFA73_eof = DFA.unpackEncodedString(DFA73_eofS);
-    static final char[] DFA73_min = DFA.unpackEncodedStringToUnsignedChars(DFA73_minS);
-    static final char[] DFA73_max = DFA.unpackEncodedStringToUnsignedChars(DFA73_maxS);
-    static final short[] DFA73_accept = DFA.unpackEncodedString(DFA73_acceptS);
-    static final short[] DFA73_special = DFA.unpackEncodedString(DFA73_specialS);
-    static final short[][] DFA73_transition;
+    static final short[] DFA72_eot = DFA.unpackEncodedString(DFA72_eotS);
+    static final short[] DFA72_eof = DFA.unpackEncodedString(DFA72_eofS);
+    static final char[] DFA72_min = DFA.unpackEncodedStringToUnsignedChars(DFA72_minS);
+    static final char[] DFA72_max = DFA.unpackEncodedStringToUnsignedChars(DFA72_maxS);
+    static final short[] DFA72_accept = DFA.unpackEncodedString(DFA72_acceptS);
+    static final short[] DFA72_special = DFA.unpackEncodedString(DFA72_specialS);
+    static final short[][] DFA72_transition;
 
     static {
-        int numStates = DFA73_transitionS.length;
-        DFA73_transition = new short[numStates][];
+        int numStates = DFA72_transitionS.length;
+        DFA72_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA73_transition[i] = DFA.unpackEncodedString(DFA73_transitionS[i]);
+            DFA72_transition[i] = DFA.unpackEncodedString(DFA72_transitionS[i]);
         }
     }
 
-    class DFA73 extends DFA {
+    class DFA72 extends DFA {
 
-        public DFA73(BaseRecognizer recognizer) {
+        public DFA72(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 73;
-            this.eot = DFA73_eot;
-            this.eof = DFA73_eof;
-            this.min = DFA73_min;
-            this.max = DFA73_max;
-            this.accept = DFA73_accept;
-            this.special = DFA73_special;
-            this.transition = DFA73_transition;
+            this.decisionNumber = 72;
+            this.eot = DFA72_eot;
+            this.eof = DFA72_eof;
+            this.min = DFA72_min;
+            this.max = DFA72_max;
+            this.accept = DFA72_accept;
+            this.special = DFA72_special;
+            this.transition = DFA72_transition;
         }
         public String getDescription() {
             return "4138:1: ( (this_PrefixedPrimaryExpCS_0= rulePrefixedPrimaryExpCS ( () ( (lv_name_2_0= ruleBinaryOperatorName ) ) ( (lv_ownedRight_3_0= ruleExpCS ) ) )? ) | this_PrefixedLetExpCS_4= rulePrefixedLetExpCS )";
@@ -20634,57 +20623,57 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA73_1 = input.LA(1);
+                        int LA72_1 = input.LA(1);
 
                          
-                        int index73_1 = input.index();
+                        int index72_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred116_InternalCompleteOCL()) ) {s = 3;}
+                        if ( (synpred115_InternalCompleteOCL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 35;}
 
                          
-                        input.seek(index73_1);
+                        input.seek(index72_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA73_2 = input.LA(1);
+                        int LA72_2 = input.LA(1);
 
                          
-                        int index73_2 = input.index();
+                        int index72_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred116_InternalCompleteOCL()) ) {s = 3;}
+                        if ( (synpred115_InternalCompleteOCL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 35;}
 
                          
-                        input.seek(index73_2);
+                        input.seek(index72_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 73, _s, input);
+                new NoViableAltException(getDescription(), 72, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA76_eotS =
+    static final String DFA75_eotS =
         "\43\uffff";
-    static final String DFA76_eofS =
+    static final String DFA75_eofS =
         "\43\uffff";
-    static final String DFA76_minS =
+    static final String DFA75_minS =
         "\1\5\12\uffff\6\0\22\uffff";
-    static final String DFA76_maxS =
+    static final String DFA75_maxS =
         "\1\140\12\uffff\6\0\22\uffff";
-    static final String DFA76_acceptS =
+    static final String DFA75_acceptS =
         "\1\uffff\1\1\1\2\1\3\1\4\14\uffff\1\7\1\10\11\uffff\1\11\4\uffff"+
         "\1\5\1\6";
-    static final String DFA76_specialS =
+    static final String DFA75_specialS =
         "\13\uffff\1\0\1\1\1\2\1\3\1\4\1\5\22\uffff}>";
-    static final String[] DFA76_transitionS = {
+    static final String[] DFA75_transitionS = {
             "\2\34\2\4\14\uffff\1\1\6\uffff\1\34\1\uffff\2\34\12\uffff\12"+
             "\22\2\uffff\1\4\15\uffff\1\13\1\uffff\1\14\1\15\1\16\1\17\1"+
             "\20\4\uffff\1\21\4\4\6\uffff\1\2\5\uffff\1\3",
@@ -20724,34 +20713,34 @@
             ""
     };
 
-    static final short[] DFA76_eot = DFA.unpackEncodedString(DFA76_eotS);
-    static final short[] DFA76_eof = DFA.unpackEncodedString(DFA76_eofS);
-    static final char[] DFA76_min = DFA.unpackEncodedStringToUnsignedChars(DFA76_minS);
-    static final char[] DFA76_max = DFA.unpackEncodedStringToUnsignedChars(DFA76_maxS);
-    static final short[] DFA76_accept = DFA.unpackEncodedString(DFA76_acceptS);
-    static final short[] DFA76_special = DFA.unpackEncodedString(DFA76_specialS);
-    static final short[][] DFA76_transition;
+    static final short[] DFA75_eot = DFA.unpackEncodedString(DFA75_eotS);
+    static final short[] DFA75_eof = DFA.unpackEncodedString(DFA75_eofS);
+    static final char[] DFA75_min = DFA.unpackEncodedStringToUnsignedChars(DFA75_minS);
+    static final char[] DFA75_max = DFA.unpackEncodedStringToUnsignedChars(DFA75_maxS);
+    static final short[] DFA75_accept = DFA.unpackEncodedString(DFA75_acceptS);
+    static final short[] DFA75_special = DFA.unpackEncodedString(DFA75_specialS);
+    static final short[][] DFA75_transition;
 
     static {
-        int numStates = DFA76_transitionS.length;
-        DFA76_transition = new short[numStates][];
+        int numStates = DFA75_transitionS.length;
+        DFA75_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA76_transition[i] = DFA.unpackEncodedString(DFA76_transitionS[i]);
+            DFA75_transition[i] = DFA.unpackEncodedString(DFA75_transitionS[i]);
         }
     }
 
-    class DFA76 extends DFA {
+    class DFA75 extends DFA {
 
-        public DFA76(BaseRecognizer recognizer) {
+        public DFA75(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 76;
-            this.eot = DFA76_eot;
-            this.eof = DFA76_eof;
-            this.min = DFA76_min;
-            this.max = DFA76_max;
-            this.accept = DFA76_accept;
-            this.special = DFA76_special;
-            this.transition = DFA76_transition;
+            this.decisionNumber = 75;
+            this.eot = DFA75_eot;
+            this.eof = DFA75_eof;
+            this.min = DFA75_min;
+            this.max = DFA75_max;
+            this.accept = DFA75_accept;
+            this.special = DFA75_special;
+            this.transition = DFA75_transition;
         }
         public String getDescription() {
             return "4387:1: (this_NestedExpCS_0= ruleNestedExpCS | this_IfExpCS_1= ruleIfExpCS | this_SelfExpCS_2= ruleSelfExpCS | this_PrimitiveLiteralExpCS_3= rulePrimitiveLiteralExpCS | this_TupleLiteralExpCS_4= ruleTupleLiteralExpCS | this_CollectionLiteralExpCS_5= ruleCollectionLiteralExpCS | this_LambdaLiteralExpCS_6= ruleLambdaLiteralExpCS | this_TypeLiteralExpCS_7= ruleTypeLiteralExpCS | this_NameExpCS_8= ruleNameExpCS )";
@@ -20761,99 +20750,99 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA76_11 = input.LA(1);
+                        int LA75_11 = input.LA(1);
 
                          
-                        int index76_11 = input.index();
+                        int index75_11 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred123_InternalCompleteOCL()) ) {s = 33;}
+                        if ( (synpred122_InternalCompleteOCL()) ) {s = 33;}
 
-                        else if ( (synpred126_InternalCompleteOCL()) ) {s = 18;}
+                        else if ( (synpred125_InternalCompleteOCL()) ) {s = 18;}
 
                          
-                        input.seek(index76_11);
+                        input.seek(index75_11);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA76_12 = input.LA(1);
+                        int LA75_12 = input.LA(1);
 
                          
-                        int index76_12 = input.index();
+                        int index75_12 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred124_InternalCompleteOCL()) ) {s = 34;}
+                        if ( (synpred123_InternalCompleteOCL()) ) {s = 34;}
 
-                        else if ( (synpred126_InternalCompleteOCL()) ) {s = 18;}
+                        else if ( (synpred125_InternalCompleteOCL()) ) {s = 18;}
 
                          
-                        input.seek(index76_12);
+                        input.seek(index75_12);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA76_13 = input.LA(1);
+                        int LA75_13 = input.LA(1);
 
                          
-                        int index76_13 = input.index();
+                        int index75_13 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred124_InternalCompleteOCL()) ) {s = 34;}
+                        if ( (synpred123_InternalCompleteOCL()) ) {s = 34;}
 
-                        else if ( (synpred126_InternalCompleteOCL()) ) {s = 18;}
+                        else if ( (synpred125_InternalCompleteOCL()) ) {s = 18;}
 
                          
-                        input.seek(index76_13);
+                        input.seek(index75_13);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA76_14 = input.LA(1);
+                        int LA75_14 = input.LA(1);
 
                          
-                        int index76_14 = input.index();
+                        int index75_14 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred124_InternalCompleteOCL()) ) {s = 34;}
+                        if ( (synpred123_InternalCompleteOCL()) ) {s = 34;}
 
-                        else if ( (synpred126_InternalCompleteOCL()) ) {s = 18;}
+                        else if ( (synpred125_InternalCompleteOCL()) ) {s = 18;}
 
                          
-                        input.seek(index76_14);
+                        input.seek(index75_14);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA76_15 = input.LA(1);
+                        int LA75_15 = input.LA(1);
 
                          
-                        int index76_15 = input.index();
+                        int index75_15 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred124_InternalCompleteOCL()) ) {s = 34;}
+                        if ( (synpred123_InternalCompleteOCL()) ) {s = 34;}
 
-                        else if ( (synpred126_InternalCompleteOCL()) ) {s = 18;}
+                        else if ( (synpred125_InternalCompleteOCL()) ) {s = 18;}
 
                          
-                        input.seek(index76_15);
+                        input.seek(index75_15);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA76_16 = input.LA(1);
+                        int LA75_16 = input.LA(1);
 
                          
-                        int index76_16 = input.index();
+                        int index75_16 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred124_InternalCompleteOCL()) ) {s = 34;}
+                        if ( (synpred123_InternalCompleteOCL()) ) {s = 34;}
 
-                        else if ( (synpred126_InternalCompleteOCL()) ) {s = 18;}
+                        else if ( (synpred125_InternalCompleteOCL()) ) {s = 18;}
 
                          
-                        input.seek(index76_16);
+                        input.seek(index75_16);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 76, _s, input);
+                new NoViableAltException(getDescription(), 75, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -20984,484 +20973,484 @@
         public static final BitSet FOLLOW_EOF_in_entryRulePropertyContextDeclCS2862 = new BitSet(new long[]{0x0000000000000002L});
         public static final BitSet FOLLOW_19_in_rulePropertyContextDeclCS2899 = new BitSet(new long[]{0x00000080D0200060L});
         public static final BitSet FOLLOW_rulePathNameCS_in_rulePropertyContextDeclCS2920 = new BitSet(new long[]{0x0000000000800000L});
-        public static final BitSet FOLLOW_23_in_rulePropertyContextDeclCS2932 = new BitSet(new long[]{0x000FFCE0D0200062L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_23_in_rulePropertyContextDeclCS2932 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
         public static final BitSet FOLLOW_ruleTypeExpCS_in_rulePropertyContextDeclCS2953 = new BitSet(new long[]{0x0000006000000002L});
-        public static final BitSet FOLLOW_37_in_rulePropertyContextDeclCS2968 = new BitSet(new long[]{0x00000000D0800060L});
-        public static final BitSet FOLLOW_ruleConstraintCS_in_rulePropertyContextDeclCS2989 = new BitSet(new long[]{0x0000006000000002L});
-        public static final BitSet FOLLOW_38_in_rulePropertyContextDeclCS3009 = new BitSet(new long[]{0x0000000000800000L});
-        public static final BitSet FOLLOW_23_in_rulePropertyContextDeclCS3021 = new BitSet(new long[]{0x007FFC80D02001F0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleSpecificationCS_in_rulePropertyContextDeclCS3042 = new BitSet(new long[]{0x0000006000000002L});
-        public static final BitSet FOLLOW_ruleSpecificationCS_in_entryRuleSpecificationCS3081 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleSpecificationCS3091 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleSpecificationCS3137 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_UNQUOTED_STRING_in_ruleSpecificationCS3160 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTemplateSignatureCS_in_entryRuleTemplateSignatureCS3201 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTemplateSignatureCS3211 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_21_in_ruleTemplateSignatureCS3249 = new BitSet(new long[]{0x00000000D0000060L});
-        public static final BitSet FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3270 = new BitSet(new long[]{0x0000000004400000L});
-        public static final BitSet FOLLOW_26_in_ruleTemplateSignatureCS3283 = new BitSet(new long[]{0x00000000D0000060L});
-        public static final BitSet FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3304 = new BitSet(new long[]{0x0000000004400000L});
-        public static final BitSet FOLLOW_22_in_ruleTemplateSignatureCS3318 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_39_in_ruleTemplateSignatureCS3338 = new BitSet(new long[]{0x00000000D0000060L});
-        public static final BitSet FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3359 = new BitSet(new long[]{0x0000010004000000L});
-        public static final BitSet FOLLOW_26_in_ruleTemplateSignatureCS3372 = new BitSet(new long[]{0x00000000D0000060L});
-        public static final BitSet FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3393 = new BitSet(new long[]{0x0000010004000000L});
-        public static final BitSet FOLLOW_40_in_ruleTemplateSignatureCS3407 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypedRefCS_in_entryRuleTypedRefCS3444 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTypedRefCS3454 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeLiteralCS_in_ruleTypedRefCS3504 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypedTypeRefCS_in_ruleTypedRefCS3534 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_entryRuleUnrestrictedName3570 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleUnrestrictedName3581 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEssentialOCLUnrestrictedName_in_ruleUnrestrictedName3628 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_28_in_ruleUnrestrictedName3652 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_30_in_ruleUnrestrictedName3671 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_31_in_ruleUnrestrictedName3690 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_entryRuleNavigatingArgExpCS3730 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleNavigatingArgExpCS3740 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_41_in_ruleNavigatingArgExpCS3790 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleNavigatingArgExpCS3822 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigationOperatorName_in_entryRuleNavigationOperatorName3858 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleNavigationOperatorName3869 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEssentialOCLNavigationOperatorName_in_ruleNavigationOperatorName3916 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCompleteOCLNavigationOperatorName_in_ruleNavigationOperatorName3949 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrimitiveTypeIdentifier_in_entryRulePrimitiveTypeIdentifier3995 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePrimitiveTypeIdentifier4006 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_42_in_rulePrimitiveTypeIdentifier4044 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_43_in_rulePrimitiveTypeIdentifier4063 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_44_in_rulePrimitiveTypeIdentifier4082 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_45_in_rulePrimitiveTypeIdentifier4101 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_46_in_rulePrimitiveTypeIdentifier4120 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_47_in_rulePrimitiveTypeIdentifier4139 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_48_in_rulePrimitiveTypeIdentifier4158 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_49_in_rulePrimitiveTypeIdentifier4177 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_50_in_rulePrimitiveTypeIdentifier4196 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_51_in_rulePrimitiveTypeIdentifier4215 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEssentialOCLUnaryOperatorName_in_entryRuleEssentialOCLUnaryOperatorName4260 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEssentialOCLUnaryOperatorName4271 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_52_in_ruleEssentialOCLUnaryOperatorName4309 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_53_in_ruleEssentialOCLUnaryOperatorName4328 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEssentialOCLInfixOperatorName_in_entryRuleEssentialOCLInfixOperatorName4369 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEssentialOCLInfixOperatorName4380 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_54_in_ruleEssentialOCLInfixOperatorName4418 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_55_in_ruleEssentialOCLInfixOperatorName4437 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_56_in_ruleEssentialOCLInfixOperatorName4456 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_52_in_ruleEssentialOCLInfixOperatorName4475 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_40_in_ruleEssentialOCLInfixOperatorName4494 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_39_in_ruleEssentialOCLInfixOperatorName4513 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_57_in_ruleEssentialOCLInfixOperatorName4532 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_58_in_ruleEssentialOCLInfixOperatorName4551 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_27_in_ruleEssentialOCLInfixOperatorName4570 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_59_in_ruleEssentialOCLInfixOperatorName4589 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_60_in_ruleEssentialOCLInfixOperatorName4608 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_61_in_ruleEssentialOCLInfixOperatorName4627 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_62_in_ruleEssentialOCLInfixOperatorName4646 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_63_in_ruleEssentialOCLInfixOperatorName4665 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEssentialOCLNavigationOperatorName_in_entryRuleEssentialOCLNavigationOperatorName4706 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEssentialOCLNavigationOperatorName4717 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_64_in_ruleEssentialOCLNavigationOperatorName4755 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_65_in_ruleEssentialOCLNavigationOperatorName4774 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_66_in_ruleEssentialOCLNavigationOperatorName4793 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_67_in_ruleEssentialOCLNavigationOperatorName4812 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleBinaryOperatorName_in_entryRuleBinaryOperatorName4853 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleBinaryOperatorName4864 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleInfixOperatorName_in_ruleBinaryOperatorName4911 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigationOperatorName_in_ruleBinaryOperatorName4944 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleInfixOperatorName_in_entryRuleInfixOperatorName4990 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleInfixOperatorName5001 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEssentialOCLInfixOperatorName_in_ruleInfixOperatorName5047 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnaryOperatorName_in_entryRuleUnaryOperatorName5092 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleUnaryOperatorName5103 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEssentialOCLUnaryOperatorName_in_ruleUnaryOperatorName5149 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEssentialOCLUnrestrictedName_in_entryRuleEssentialOCLUnrestrictedName5194 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEssentialOCLUnrestrictedName5205 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIdentifier_in_ruleEssentialOCLUnrestrictedName5251 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEssentialOCLUnreservedName_in_entryRuleEssentialOCLUnreservedName5296 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEssentialOCLUnreservedName5307 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleEssentialOCLUnreservedName5354 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionTypeIdentifier_in_ruleEssentialOCLUnreservedName5387 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrimitiveTypeIdentifier_in_ruleEssentialOCLUnreservedName5420 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_ruleEssentialOCLUnreservedName5444 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnreservedName_in_entryRuleUnreservedName5485 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleUnreservedName5496 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEssentialOCLUnreservedName_in_ruleUnreservedName5542 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleURIPathNameCS_in_entryRuleURIPathNameCS5586 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleURIPathNameCS5596 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleURIFirstPathElementCS_in_ruleURIPathNameCS5642 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_69_in_ruleURIPathNameCS5655 = new BitSet(new long[]{0x000FFC00D0000060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleNextPathElementCS_in_ruleURIPathNameCS5676 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_ruleURIFirstPathElementCS_in_entryRuleURIFirstPathElementCS5714 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleURIFirstPathElementCS5724 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleURIFirstPathElementCS5776 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleURI_in_ruleURIFirstPathElementCS5822 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrimitiveTypeCS_in_entryRulePrimitiveTypeCS5859 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePrimitiveTypeCS5869 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrimitiveTypeIdentifier_in_rulePrimitiveTypeCS5914 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionTypeIdentifier_in_entryRuleCollectionTypeIdentifier5950 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleCollectionTypeIdentifier5961 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_70_in_ruleCollectionTypeIdentifier5999 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_71_in_ruleCollectionTypeIdentifier6018 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_72_in_ruleCollectionTypeIdentifier6037 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_73_in_ruleCollectionTypeIdentifier6056 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_74_in_ruleCollectionTypeIdentifier6075 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionTypeCS_in_entryRuleCollectionTypeCS6115 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleCollectionTypeCS6125 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionTypeIdentifier_in_ruleCollectionTypeCS6171 = new BitSet(new long[]{0x0000000000200002L});
-        public static final BitSet FOLLOW_21_in_ruleCollectionTypeCS6184 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleCollectionTypeCS6205 = new BitSet(new long[]{0x0000000000400000L});
-        public static final BitSet FOLLOW_22_in_ruleCollectionTypeCS6217 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTupleTypeCS_in_entryRuleTupleTypeCS6255 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTupleTypeCS6265 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_ruleTupleTypeCS6308 = new BitSet(new long[]{0x0000000000200002L});
-        public static final BitSet FOLLOW_21_in_ruleTupleTypeCS6334 = new BitSet(new long[]{0x00000000D0400060L});
-        public static final BitSet FOLLOW_ruleTuplePartCS_in_ruleTupleTypeCS6356 = new BitSet(new long[]{0x0000000004400000L});
-        public static final BitSet FOLLOW_26_in_ruleTupleTypeCS6369 = new BitSet(new long[]{0x00000000D0000060L});
-        public static final BitSet FOLLOW_ruleTuplePartCS_in_ruleTupleTypeCS6390 = new BitSet(new long[]{0x0000000004400000L});
-        public static final BitSet FOLLOW_22_in_ruleTupleTypeCS6406 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTuplePartCS_in_entryRuleTuplePartCS6444 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTuplePartCS6454 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleTuplePartCS6500 = new BitSet(new long[]{0x0000000000800000L});
-        public static final BitSet FOLLOW_23_in_ruleTuplePartCS6512 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleTuplePartCS6533 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionLiteralExpCS_in_entryRuleCollectionLiteralExpCS6569 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleCollectionLiteralExpCS6579 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionTypeCS_in_ruleCollectionLiteralExpCS6625 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-        public static final BitSet FOLLOW_75_in_ruleCollectionLiteralExpCS6637 = new BitSet(new long[]{0x007FFC80D0A001E0L,0x00000001840F97D0L});
-        public static final BitSet FOLLOW_ruleCollectionLiteralPartCS_in_ruleCollectionLiteralExpCS6659 = new BitSet(new long[]{0x0000000004000000L,0x0000000000001000L});
-        public static final BitSet FOLLOW_26_in_ruleCollectionLiteralExpCS6672 = new BitSet(new long[]{0x007FFC80D0A001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleCollectionLiteralPartCS_in_ruleCollectionLiteralExpCS6693 = new BitSet(new long[]{0x0000000004000000L,0x0000000000001000L});
-        public static final BitSet FOLLOW_76_in_ruleCollectionLiteralExpCS6709 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionLiteralPartCS_in_entryRuleCollectionLiteralPartCS6745 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleCollectionLiteralPartCS6755 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleCollectionLiteralPartCS6802 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002000L});
-        public static final BitSet FOLLOW_77_in_ruleCollectionLiteralPartCS6815 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleCollectionLiteralPartCS6836 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePatternExpCS_in_ruleCollectionLiteralPartCS6866 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionPatternCS_in_entryRuleCollectionPatternCS6902 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleCollectionPatternCS6912 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionTypeCS_in_ruleCollectionPatternCS6958 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-        public static final BitSet FOLLOW_75_in_ruleCollectionPatternCS6970 = new BitSet(new long[]{0x007FFC80D0A001E0L,0x00000001840F97D0L});
-        public static final BitSet FOLLOW_rulePatternExpCS_in_ruleCollectionPatternCS6992 = new BitSet(new long[]{0x0000000004000000L,0x0000000000004000L});
-        public static final BitSet FOLLOW_26_in_ruleCollectionPatternCS7005 = new BitSet(new long[]{0x007FFC80D0A001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_rulePatternExpCS_in_ruleCollectionPatternCS7026 = new BitSet(new long[]{0x0000000004000000L,0x0000000000004000L});
-        public static final BitSet FOLLOW_78_in_ruleCollectionPatternCS7041 = new BitSet(new long[]{0x0000000000000060L});
-        public static final BitSet FOLLOW_ruleIdentifier_in_ruleCollectionPatternCS7062 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
-        public static final BitSet FOLLOW_76_in_ruleCollectionPatternCS7077 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleConstructorPartCS_in_entryRuleConstructorPartCS7113 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleConstructorPartCS7123 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleConstructorPartCS7175 = new BitSet(new long[]{0x0000000008000000L});
-        public static final BitSet FOLLOW_27_in_ruleConstructorPartCS7187 = new BitSet(new long[]{0x007FFC80D0A001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleConstructorPartCS7210 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePatternExpCS_in_ruleConstructorPartCS7229 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePatternExpCS_in_entryRulePatternExpCS7268 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePatternExpCS7278 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rulePatternExpCS7324 = new BitSet(new long[]{0x0000000000800000L});
-        public static final BitSet FOLLOW_23_in_rulePatternExpCS7337 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_rulePatternExpCS7358 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleLambdaLiteralExpCS_in_entryRuleLambdaLiteralExpCS7394 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleLambdaLiteralExpCS7404 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_79_in_ruleLambdaLiteralExpCS7441 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-        public static final BitSet FOLLOW_75_in_ruleLambdaLiteralExpCS7453 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleLambdaLiteralExpCS7474 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
-        public static final BitSet FOLLOW_76_in_ruleLambdaLiteralExpCS7486 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrimitiveLiteralExpCS_in_entryRulePrimitiveLiteralExpCS7522 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePrimitiveLiteralExpCS7532 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNumberLiteralExpCS_in_rulePrimitiveLiteralExpCS7582 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleStringLiteralExpCS_in_rulePrimitiveLiteralExpCS7612 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleBooleanLiteralExpCS_in_rulePrimitiveLiteralExpCS7642 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnlimitedNaturalLiteralExpCS_in_rulePrimitiveLiteralExpCS7672 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleInvalidLiteralExpCS_in_rulePrimitiveLiteralExpCS7702 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNullLiteralExpCS_in_rulePrimitiveLiteralExpCS7732 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTupleLiteralExpCS_in_entryRuleTupleLiteralExpCS7767 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTupleLiteralExpCS7777 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_68_in_ruleTupleLiteralExpCS7814 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-        public static final BitSet FOLLOW_75_in_ruleTupleLiteralExpCS7826 = new BitSet(new long[]{0x00000000D0000060L});
-        public static final BitSet FOLLOW_ruleTupleLiteralPartCS_in_ruleTupleLiteralExpCS7847 = new BitSet(new long[]{0x0000000004000000L,0x0000000000001000L});
-        public static final BitSet FOLLOW_26_in_ruleTupleLiteralExpCS7860 = new BitSet(new long[]{0x00000000D0000060L});
-        public static final BitSet FOLLOW_ruleTupleLiteralPartCS_in_ruleTupleLiteralExpCS7881 = new BitSet(new long[]{0x0000000004000000L,0x0000000000001000L});
-        public static final BitSet FOLLOW_76_in_ruleTupleLiteralExpCS7895 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTupleLiteralPartCS_in_entryRuleTupleLiteralPartCS7931 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTupleLiteralPartCS7941 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleTupleLiteralPartCS7987 = new BitSet(new long[]{0x0000000008800000L});
-        public static final BitSet FOLLOW_23_in_ruleTupleLiteralPartCS8000 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleTupleLiteralPartCS8021 = new BitSet(new long[]{0x0000000008000000L});
-        public static final BitSet FOLLOW_27_in_ruleTupleLiteralPartCS8035 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleTupleLiteralPartCS8056 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNumberLiteralExpCS_in_entryRuleNumberLiteralExpCS8092 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleNumberLiteralExpCS8102 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNUMBER_LITERAL_in_ruleNumberLiteralExpCS8147 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleStringLiteralExpCS_in_entryRuleStringLiteralExpCS8182 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleStringLiteralExpCS8192 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleStringLiteral_in_ruleStringLiteralExpCS8237 = new BitSet(new long[]{0x0000000000000102L});
-        public static final BitSet FOLLOW_ruleBooleanLiteralExpCS_in_entryRuleBooleanLiteralExpCS8273 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleBooleanLiteralExpCS8283 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_80_in_ruleBooleanLiteralExpCS8326 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_81_in_ruleBooleanLiteralExpCS8363 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnlimitedNaturalLiteralExpCS_in_entryRuleUnlimitedNaturalLiteralExpCS8412 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleUnlimitedNaturalLiteralExpCS8422 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_54_in_ruleUnlimitedNaturalLiteralExpCS8471 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleInvalidLiteralExpCS_in_entryRuleInvalidLiteralExpCS8507 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleInvalidLiteralExpCS8517 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_82_in_ruleInvalidLiteralExpCS8566 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNullLiteralExpCS_in_entryRuleNullLiteralExpCS8602 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleNullLiteralExpCS8612 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_83_in_ruleNullLiteralExpCS8661 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeLiteralCS_in_entryRuleTypeLiteralCS8697 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTypeLiteralCS8707 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrimitiveTypeCS_in_ruleTypeLiteralCS8757 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionTypeCS_in_ruleTypeLiteralCS8787 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTupleTypeCS_in_ruleTypeLiteralCS8817 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeLiteralWithMultiplicityCS_in_entryRuleTypeLiteralWithMultiplicityCS8852 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTypeLiteralWithMultiplicityCS8862 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeLiteralCS_in_ruleTypeLiteralWithMultiplicityCS8912 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
-        public static final BitSet FOLLOW_ruleMultiplicityCS_in_ruleTypeLiteralWithMultiplicityCS8932 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeLiteralExpCS_in_entryRuleTypeLiteralExpCS8969 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTypeLiteralExpCS8979 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeLiteralWithMultiplicityCS_in_ruleTypeLiteralExpCS9024 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeNameExpCS_in_entryRuleTypeNameExpCS9059 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTypeNameExpCS9069 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePathNameCS_in_ruleTypeNameExpCS9115 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000800L});
-        public static final BitSet FOLLOW_ruleCurlyBracketedClauseCS_in_ruleTypeNameExpCS9137 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000800L});
-        public static final BitSet FOLLOW_75_in_ruleTypeNameExpCS9150 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleTypeNameExpCS9171 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
-        public static final BitSet FOLLOW_76_in_ruleTypeNameExpCS9183 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_entryRuleTypeExpCS9223 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTypeExpCS9233 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeNameExpCS_in_ruleTypeExpCS9284 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
-        public static final BitSet FOLLOW_ruleTypeLiteralCS_in_ruleTypeExpCS9314 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
-        public static final BitSet FOLLOW_ruleCollectionPatternCS_in_ruleTypeExpCS9344 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
-        public static final BitSet FOLLOW_ruleMultiplicityCS_in_ruleTypeExpCS9365 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleExpCS_in_entryRuleExpCS9402 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleExpCS9412 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrefixedPrimaryExpCS_in_ruleExpCS9463 = new BitSet(new long[]{0xFFD0018008060002L,0x000000000000000FL});
-        public static final BitSet FOLLOW_ruleBinaryOperatorName_in_ruleExpCS9496 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleExpCS9517 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrefixedLetExpCS_in_ruleExpCS9551 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrefixedLetExpCS_in_entryRulePrefixedLetExpCS9586 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePrefixedLetExpCS9596 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnaryOperatorName_in_rulePrefixedLetExpCS9655 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_rulePrefixedLetExpCS_in_rulePrefixedLetExpCS9676 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleLetExpCS_in_rulePrefixedLetExpCS9708 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrefixedPrimaryExpCS_in_entryRulePrefixedPrimaryExpCS9743 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePrefixedPrimaryExpCS9753 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnaryOperatorName_in_rulePrefixedPrimaryExpCS9812 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001040F87D0L});
-        public static final BitSet FOLLOW_rulePrefixedPrimaryExpCS_in_rulePrefixedPrimaryExpCS9833 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrimaryExpCS_in_rulePrefixedPrimaryExpCS9865 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrimaryExpCS_in_entryRulePrimaryExpCS9900 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePrimaryExpCS9910 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNestedExpCS_in_rulePrimaryExpCS9960 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIfExpCS_in_rulePrimaryExpCS9990 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSelfExpCS_in_rulePrimaryExpCS10020 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrimitiveLiteralExpCS_in_rulePrimaryExpCS10050 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTupleLiteralExpCS_in_rulePrimaryExpCS10080 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionLiteralExpCS_in_rulePrimaryExpCS10110 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleLambdaLiteralExpCS_in_rulePrimaryExpCS10140 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeLiteralExpCS_in_rulePrimaryExpCS10170 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNameExpCS_in_rulePrimaryExpCS10200 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNameExpCS_in_entryRuleNameExpCS10235 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleNameExpCS10245 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePathNameCS_in_ruleNameExpCS10291 = new BitSet(new long[]{0x0000000000200002L,0x0000000000300800L});
-        public static final BitSet FOLLOW_ruleSquareBracketedClauseCS_in_ruleNameExpCS10312 = new BitSet(new long[]{0x0000000000200002L,0x0000000000300800L});
-        public static final BitSet FOLLOW_ruleRoundBracketedClauseCS_in_ruleNameExpCS10334 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100800L});
-        public static final BitSet FOLLOW_ruleCurlyBracketedClauseCS_in_ruleNameExpCS10356 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
-        public static final BitSet FOLLOW_84_in_ruleNameExpCS10376 = new BitSet(new long[]{0x0000000100000000L});
-        public static final BitSet FOLLOW_32_in_ruleNameExpCS10401 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCurlyBracketedClauseCS_in_entryRuleCurlyBracketedClauseCS10439 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleCurlyBracketedClauseCS10449 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_75_in_ruleCurlyBracketedClauseCS10498 = new BitSet(new long[]{0x00000000D0000160L,0x0000000000001000L});
-        public static final BitSet FOLLOW_ruleConstructorPartCS_in_ruleCurlyBracketedClauseCS10521 = new BitSet(new long[]{0x0000000004000000L,0x0000000000001000L});
-        public static final BitSet FOLLOW_26_in_ruleCurlyBracketedClauseCS10534 = new BitSet(new long[]{0x00000000D0000060L});
-        public static final BitSet FOLLOW_ruleConstructorPartCS_in_ruleCurlyBracketedClauseCS10555 = new BitSet(new long[]{0x0000000004000000L,0x0000000000001000L});
-        public static final BitSet FOLLOW_ruleStringLiteral_in_ruleCurlyBracketedClauseCS10586 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
-        public static final BitSet FOLLOW_76_in_ruleCurlyBracketedClauseCS10599 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleRoundBracketedClauseCS_in_entryRuleRoundBracketedClauseCS10635 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleRoundBracketedClauseCS10645 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_21_in_ruleRoundBracketedClauseCS10694 = new BitSet(new long[]{0x007FFE80D0E001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleNavigatingArgCS_in_ruleRoundBracketedClauseCS10716 = new BitSet(new long[]{0x0000000004400000L,0x0000000003000000L});
-        public static final BitSet FOLLOW_ruleNavigatingCommaArgCS_in_ruleRoundBracketedClauseCS10737 = new BitSet(new long[]{0x0000000004400000L,0x0000000003000000L});
-        public static final BitSet FOLLOW_ruleNavigatingSemiArgCS_in_ruleRoundBracketedClauseCS10760 = new BitSet(new long[]{0x0000000004400000L,0x0000000001000000L});
-        public static final BitSet FOLLOW_ruleNavigatingCommaArgCS_in_ruleRoundBracketedClauseCS10781 = new BitSet(new long[]{0x0000000004400000L,0x0000000001000000L});
-        public static final BitSet FOLLOW_ruleNavigatingBarArgCS_in_ruleRoundBracketedClauseCS10806 = new BitSet(new long[]{0x0000000004400000L,0x0000000001000000L});
-        public static final BitSet FOLLOW_ruleNavigatingCommaArgCS_in_ruleRoundBracketedClauseCS10827 = new BitSet(new long[]{0x0000000004400000L,0x0000000001000000L});
-        public static final BitSet FOLLOW_22_in_ruleRoundBracketedClauseCS10844 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSquareBracketedClauseCS_in_entryRuleSquareBracketedClauseCS10880 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleSquareBracketedClauseCS10890 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_85_in_ruleSquareBracketedClauseCS10927 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleSquareBracketedClauseCS10948 = new BitSet(new long[]{0x0000000004000000L,0x0000000000400000L});
-        public static final BitSet FOLLOW_26_in_ruleSquareBracketedClauseCS10961 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleSquareBracketedClauseCS10982 = new BitSet(new long[]{0x0000000004000000L,0x0000000000400000L});
-        public static final BitSet FOLLOW_86_in_ruleSquareBracketedClauseCS10996 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingArgCS_in_entryRuleNavigatingArgCS11032 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleNavigatingArgCS11042 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingArgCS11089 = new BitSet(new long[]{0x0000000000800002L,0x0000000000800000L});
-        public static final BitSet FOLLOW_23_in_ruleNavigatingArgCS11103 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleNavigatingArgCS11124 = new BitSet(new long[]{0x0000000008000002L});
-        public static final BitSet FOLLOW_27_in_ruleNavigatingArgCS11137 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleNavigatingArgCS11158 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_87_in_ruleNavigatingArgCS11180 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleNavigatingArgCS11201 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_23_in_ruleNavigatingArgCS11224 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleNavigatingArgCS11245 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingBarArgCS_in_entryRuleNavigatingBarArgCS11282 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleNavigatingBarArgCS11292 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_88_in_ruleNavigatingBarArgCS11335 = new BitSet(new long[]{0x007FFE80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingBarArgCS11369 = new BitSet(new long[]{0x0000000000800002L});
-        public static final BitSet FOLLOW_23_in_ruleNavigatingBarArgCS11382 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleNavigatingBarArgCS11403 = new BitSet(new long[]{0x0000000008000002L});
-        public static final BitSet FOLLOW_27_in_ruleNavigatingBarArgCS11416 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleNavigatingBarArgCS11437 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingCommaArgCS_in_entryRuleNavigatingCommaArgCS11477 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleNavigatingCommaArgCS11487 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_26_in_ruleNavigatingCommaArgCS11530 = new BitSet(new long[]{0x007FFE80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingCommaArgCS11564 = new BitSet(new long[]{0x0000000000800002L,0x0000000000800000L});
-        public static final BitSet FOLLOW_23_in_ruleNavigatingCommaArgCS11578 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleNavigatingCommaArgCS11599 = new BitSet(new long[]{0x0000000008000002L});
-        public static final BitSet FOLLOW_27_in_ruleNavigatingCommaArgCS11612 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleNavigatingCommaArgCS11633 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_87_in_ruleNavigatingCommaArgCS11655 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleNavigatingCommaArgCS11676 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNavigatingSemiArgCS_in_entryRuleNavigatingSemiArgCS11715 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleNavigatingSemiArgCS11725 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_89_in_ruleNavigatingSemiArgCS11768 = new BitSet(new long[]{0x007FFE80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingSemiArgCS11802 = new BitSet(new long[]{0x0000000000800002L});
-        public static final BitSet FOLLOW_23_in_ruleNavigatingSemiArgCS11815 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleNavigatingSemiArgCS11836 = new BitSet(new long[]{0x0000000008000002L});
-        public static final BitSet FOLLOW_27_in_ruleNavigatingSemiArgCS11849 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleNavigatingSemiArgCS11870 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIfExpCS_in_entryRuleIfExpCS11910 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleIfExpCS11920 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_90_in_ruleIfExpCS11957 = new BitSet(new long[]{0x007FFC80D0A001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleIfExpCS11980 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-        public static final BitSet FOLLOW_rulePatternExpCS_in_ruleIfExpCS11999 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-        public static final BitSet FOLLOW_91_in_ruleIfExpCS12014 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleIfExpCS12035 = new BitSet(new long[]{0x0000000000000000L,0x0000000050000000L});
-        public static final BitSet FOLLOW_ruleElseIfThenExpCS_in_ruleIfExpCS12056 = new BitSet(new long[]{0x0000000000000000L,0x0000000050000000L});
-        public static final BitSet FOLLOW_92_in_ruleIfExpCS12069 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleIfExpCS12090 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
-        public static final BitSet FOLLOW_93_in_ruleIfExpCS12102 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleElseIfThenExpCS_in_entryRuleElseIfThenExpCS12138 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleElseIfThenExpCS12148 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_94_in_ruleElseIfThenExpCS12185 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleElseIfThenExpCS12206 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-        public static final BitSet FOLLOW_91_in_ruleElseIfThenExpCS12218 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleElseIfThenExpCS12239 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleLetExpCS_in_entryRuleLetExpCS12275 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleLetExpCS12285 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_95_in_ruleLetExpCS12322 = new BitSet(new long[]{0x00000000D0000060L});
-        public static final BitSet FOLLOW_ruleLetVariableCS_in_ruleLetExpCS12343 = new BitSet(new long[]{0x0000000004000000L,0x0000000000800000L});
-        public static final BitSet FOLLOW_26_in_ruleLetExpCS12356 = new BitSet(new long[]{0x00000000D0000060L});
-        public static final BitSet FOLLOW_ruleLetVariableCS_in_ruleLetExpCS12377 = new BitSet(new long[]{0x0000000004000000L,0x0000000000800000L});
-        public static final BitSet FOLLOW_87_in_ruleLetExpCS12391 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleLetExpCS12412 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleLetVariableCS_in_entryRuleLetVariableCS12448 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleLetVariableCS12458 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleLetVariableCS12504 = new BitSet(new long[]{0x0000000008A00000L});
-        public static final BitSet FOLLOW_ruleRoundBracketedClauseCS_in_ruleLetVariableCS12525 = new BitSet(new long[]{0x0000000008800000L});
-        public static final BitSet FOLLOW_23_in_ruleLetVariableCS12539 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleLetVariableCS12560 = new BitSet(new long[]{0x0000000008000000L});
-        public static final BitSet FOLLOW_27_in_ruleLetVariableCS12574 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleLetVariableCS12595 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNestedExpCS_in_entryRuleNestedExpCS12631 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleNestedExpCS12641 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_21_in_ruleNestedExpCS12678 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_ruleNestedExpCS12699 = new BitSet(new long[]{0x0000000000400000L});
-        public static final BitSet FOLLOW_22_in_ruleNestedExpCS12711 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleSelfExpCS_in_entryRuleSelfExpCS12747 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleSelfExpCS12757 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_96_in_ruleSelfExpCS12806 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleMultiplicityBoundsCS_in_entryRuleMultiplicityBoundsCS12842 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleMultiplicityBoundsCS12852 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleLOWER_in_ruleMultiplicityBoundsCS12898 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002000L});
-        public static final BitSet FOLLOW_77_in_ruleMultiplicityBoundsCS12911 = new BitSet(new long[]{0x0040000000000080L});
-        public static final BitSet FOLLOW_ruleUPPER_in_ruleMultiplicityBoundsCS12932 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleMultiplicityCS_in_entryRuleMultiplicityCS12970 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleMultiplicityCS12980 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_85_in_ruleMultiplicityCS13017 = new BitSet(new long[]{0x0140020000000080L});
-        public static final BitSet FOLLOW_ruleMultiplicityBoundsCS_in_ruleMultiplicityCS13043 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-        public static final BitSet FOLLOW_ruleMultiplicityStringCS_in_ruleMultiplicityCS13073 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-        public static final BitSet FOLLOW_86_in_ruleMultiplicityCS13085 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleMultiplicityStringCS_in_entryRuleMultiplicityStringCS13121 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleMultiplicityStringCS13131 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_54_in_ruleMultiplicityStringCS13175 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_56_in_ruleMultiplicityStringCS13204 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_41_in_ruleMultiplicityStringCS13233 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePathNameCS_in_entryRulePathNameCS13284 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRulePathNameCS13294 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleFirstPathElementCS_in_rulePathNameCS13340 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_69_in_rulePathNameCS13353 = new BitSet(new long[]{0x000FFC00D0000060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleNextPathElementCS_in_rulePathNameCS13374 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
-        public static final BitSet FOLLOW_ruleFirstPathElementCS_in_entryRuleFirstPathElementCS13412 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleFirstPathElementCS13422 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleFirstPathElementCS13473 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNextPathElementCS_in_entryRuleNextPathElementCS13508 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleNextPathElementCS13518 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnreservedName_in_ruleNextPathElementCS13569 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTemplateBindingCS_in_entryRuleTemplateBindingCS13604 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTemplateBindingCS13614 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_21_in_ruleTemplateBindingCS13651 = new BitSet(new long[]{0x000FFE80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTemplateParameterSubstitutionCS_in_ruleTemplateBindingCS13672 = new BitSet(new long[]{0x0000000004400000L});
-        public static final BitSet FOLLOW_26_in_ruleTemplateBindingCS13685 = new BitSet(new long[]{0x000FFE80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTemplateParameterSubstitutionCS_in_ruleTemplateBindingCS13706 = new BitSet(new long[]{0x0000000004400000L});
-        public static final BitSet FOLLOW_22_in_ruleTemplateBindingCS13720 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTemplateParameterSubstitutionCS_in_entryRuleTemplateParameterSubstitutionCS13756 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTemplateParameterSubstitutionCS13766 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeRefCS_in_ruleTemplateParameterSubstitutionCS13811 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeParameterCS_in_entryRuleTypeParameterCS13846 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTypeParameterCS13856 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleTypeParameterCS13902 = new BitSet(new long[]{0x0000000000000002L,0x0000000A00000000L});
-        public static final BitSet FOLLOW_97_in_ruleTypeParameterCS13916 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypedRefCS_in_ruleTypeParameterCS13937 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-        public static final BitSet FOLLOW_98_in_ruleTypeParameterCS13950 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypedRefCS_in_ruleTypeParameterCS13971 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-        public static final BitSet FOLLOW_99_in_ruleTypeParameterCS13993 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypedRefCS_in_ruleTypeParameterCS14014 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeRefCS_in_entryRuleTypeRefCS14053 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTypeRefCS14063 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypedRefCS_in_ruleTypeRefCS14113 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleWildcardTypeRefCS_in_ruleTypeRefCS14143 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypedTypeRefCS_in_entryRuleTypedTypeRefCS14178 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleTypedTypeRefCS14188 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePathNameCS_in_ruleTypedTypeRefCS14234 = new BitSet(new long[]{0x0000000000200002L});
-        public static final BitSet FOLLOW_ruleTemplateBindingCS_in_ruleTypedTypeRefCS14255 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleWildcardTypeRefCS_in_entryRuleWildcardTypeRefCS14292 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleWildcardTypeRefCS14302 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_41_in_ruleWildcardTypeRefCS14351 = new BitSet(new long[]{0x0000000000000002L,0x0000000A00000000L});
-        public static final BitSet FOLLOW_97_in_ruleWildcardTypeRefCS14365 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypedRefCS_in_ruleWildcardTypeRefCS14386 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_99_in_ruleWildcardTypeRefCS14406 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
-        public static final BitSet FOLLOW_ruleTypedRefCS_in_ruleWildcardTypeRefCS14427 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleID_in_entryRuleID14467 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleID14478 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_SIMPLE_ID_in_ruleID14518 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_ESCAPED_ID_in_ruleID14544 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleIdentifier_in_entryRuleIdentifier14590 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleIdentifier14601 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleID_in_ruleIdentifier14647 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleLOWER_in_entryRuleLOWER14692 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleLOWER14703 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_ruleLOWER14742 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleNUMBER_LITERAL_in_entryRuleNUMBER_LITERAL14787 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleNUMBER_LITERAL14798 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_ruleNUMBER_LITERAL14837 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleStringLiteral_in_entryRuleStringLiteral14882 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleStringLiteral14893 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_SINGLE_QUOTED_STRING_in_ruleStringLiteral14932 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleUPPER_in_entryRuleUPPER14977 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleUPPER14988 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_INT_in_ruleUPPER15028 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_54_in_ruleUPPER15052 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleURI_in_entryRuleURI15093 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleURI15104 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_RULE_SINGLE_QUOTED_STRING_in_ruleURI15143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_37_in_rulePropertyContextDeclCS2967 = new BitSet(new long[]{0x00000000D0800060L});
+        public static final BitSet FOLLOW_ruleConstraintCS_in_rulePropertyContextDeclCS2988 = new BitSet(new long[]{0x0000006000000002L});
+        public static final BitSet FOLLOW_38_in_rulePropertyContextDeclCS3008 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_23_in_rulePropertyContextDeclCS3020 = new BitSet(new long[]{0x007FFC80D02001F0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleSpecificationCS_in_rulePropertyContextDeclCS3041 = new BitSet(new long[]{0x0000006000000002L});
+        public static final BitSet FOLLOW_ruleSpecificationCS_in_entryRuleSpecificationCS3080 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSpecificationCS3090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleSpecificationCS3136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_UNQUOTED_STRING_in_ruleSpecificationCS3159 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTemplateSignatureCS_in_entryRuleTemplateSignatureCS3200 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTemplateSignatureCS3210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_21_in_ruleTemplateSignatureCS3248 = new BitSet(new long[]{0x00000000D0000060L});
+        public static final BitSet FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3269 = new BitSet(new long[]{0x0000000004400000L});
+        public static final BitSet FOLLOW_26_in_ruleTemplateSignatureCS3282 = new BitSet(new long[]{0x00000000D0000060L});
+        public static final BitSet FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3303 = new BitSet(new long[]{0x0000000004400000L});
+        public static final BitSet FOLLOW_22_in_ruleTemplateSignatureCS3317 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_39_in_ruleTemplateSignatureCS3337 = new BitSet(new long[]{0x00000000D0000060L});
+        public static final BitSet FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3358 = new BitSet(new long[]{0x0000010004000000L});
+        public static final BitSet FOLLOW_26_in_ruleTemplateSignatureCS3371 = new BitSet(new long[]{0x00000000D0000060L});
+        public static final BitSet FOLLOW_ruleTypeParameterCS_in_ruleTemplateSignatureCS3392 = new BitSet(new long[]{0x0000010004000000L});
+        public static final BitSet FOLLOW_40_in_ruleTemplateSignatureCS3406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypedRefCS_in_entryRuleTypedRefCS3443 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTypedRefCS3453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeLiteralCS_in_ruleTypedRefCS3503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypedTypeRefCS_in_ruleTypedRefCS3533 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_entryRuleUnrestrictedName3569 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleUnrestrictedName3580 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEssentialOCLUnrestrictedName_in_ruleUnrestrictedName3627 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_28_in_ruleUnrestrictedName3651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_30_in_ruleUnrestrictedName3670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_ruleUnrestrictedName3689 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_entryRuleNavigatingArgExpCS3729 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNavigatingArgExpCS3739 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_ruleNavigatingArgExpCS3789 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleNavigatingArgExpCS3821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigationOperatorName_in_entryRuleNavigationOperatorName3857 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNavigationOperatorName3868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEssentialOCLNavigationOperatorName_in_ruleNavigationOperatorName3915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCompleteOCLNavigationOperatorName_in_ruleNavigationOperatorName3948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrimitiveTypeIdentifier_in_entryRulePrimitiveTypeIdentifier3994 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePrimitiveTypeIdentifier4005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_rulePrimitiveTypeIdentifier4043 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rulePrimitiveTypeIdentifier4062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rulePrimitiveTypeIdentifier4081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rulePrimitiveTypeIdentifier4100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_46_in_rulePrimitiveTypeIdentifier4119 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_47_in_rulePrimitiveTypeIdentifier4138 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_48_in_rulePrimitiveTypeIdentifier4157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_49_in_rulePrimitiveTypeIdentifier4176 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_50_in_rulePrimitiveTypeIdentifier4195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rulePrimitiveTypeIdentifier4214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEssentialOCLUnaryOperatorName_in_entryRuleEssentialOCLUnaryOperatorName4259 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEssentialOCLUnaryOperatorName4270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_52_in_ruleEssentialOCLUnaryOperatorName4308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_53_in_ruleEssentialOCLUnaryOperatorName4327 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEssentialOCLInfixOperatorName_in_entryRuleEssentialOCLInfixOperatorName4368 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEssentialOCLInfixOperatorName4379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_ruleEssentialOCLInfixOperatorName4417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_55_in_ruleEssentialOCLInfixOperatorName4436 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_56_in_ruleEssentialOCLInfixOperatorName4455 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_52_in_ruleEssentialOCLInfixOperatorName4474 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_40_in_ruleEssentialOCLInfixOperatorName4493 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_39_in_ruleEssentialOCLInfixOperatorName4512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_57_in_ruleEssentialOCLInfixOperatorName4531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_ruleEssentialOCLInfixOperatorName4550 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_ruleEssentialOCLInfixOperatorName4569 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_59_in_ruleEssentialOCLInfixOperatorName4588 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_ruleEssentialOCLInfixOperatorName4607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_ruleEssentialOCLInfixOperatorName4626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_ruleEssentialOCLInfixOperatorName4645 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_63_in_ruleEssentialOCLInfixOperatorName4664 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEssentialOCLNavigationOperatorName_in_entryRuleEssentialOCLNavigationOperatorName4705 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEssentialOCLNavigationOperatorName4716 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_ruleEssentialOCLNavigationOperatorName4754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_ruleEssentialOCLNavigationOperatorName4773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_66_in_ruleEssentialOCLNavigationOperatorName4792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_ruleEssentialOCLNavigationOperatorName4811 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBinaryOperatorName_in_entryRuleBinaryOperatorName4852 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBinaryOperatorName4863 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleInfixOperatorName_in_ruleBinaryOperatorName4910 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigationOperatorName_in_ruleBinaryOperatorName4943 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleInfixOperatorName_in_entryRuleInfixOperatorName4989 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleInfixOperatorName5000 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEssentialOCLInfixOperatorName_in_ruleInfixOperatorName5046 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnaryOperatorName_in_entryRuleUnaryOperatorName5091 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleUnaryOperatorName5102 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEssentialOCLUnaryOperatorName_in_ruleUnaryOperatorName5148 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEssentialOCLUnrestrictedName_in_entryRuleEssentialOCLUnrestrictedName5193 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEssentialOCLUnrestrictedName5204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIdentifier_in_ruleEssentialOCLUnrestrictedName5250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEssentialOCLUnreservedName_in_entryRuleEssentialOCLUnreservedName5295 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEssentialOCLUnreservedName5306 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleEssentialOCLUnreservedName5353 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionTypeIdentifier_in_ruleEssentialOCLUnreservedName5386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrimitiveTypeIdentifier_in_ruleEssentialOCLUnreservedName5419 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_68_in_ruleEssentialOCLUnreservedName5443 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnreservedName_in_entryRuleUnreservedName5484 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleUnreservedName5495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEssentialOCLUnreservedName_in_ruleUnreservedName5541 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleURIPathNameCS_in_entryRuleURIPathNameCS5585 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleURIPathNameCS5595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleURIFirstPathElementCS_in_ruleURIPathNameCS5641 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
+        public static final BitSet FOLLOW_69_in_ruleURIPathNameCS5654 = new BitSet(new long[]{0x000FFC00D0000060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleNextPathElementCS_in_ruleURIPathNameCS5675 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleURIFirstPathElementCS_in_entryRuleURIFirstPathElementCS5713 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleURIFirstPathElementCS5723 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleURIFirstPathElementCS5775 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleURI_in_ruleURIFirstPathElementCS5821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrimitiveTypeCS_in_entryRulePrimitiveTypeCS5858 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePrimitiveTypeCS5868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrimitiveTypeIdentifier_in_rulePrimitiveTypeCS5913 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionTypeIdentifier_in_entryRuleCollectionTypeIdentifier5949 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCollectionTypeIdentifier5960 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_70_in_ruleCollectionTypeIdentifier5998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_71_in_ruleCollectionTypeIdentifier6017 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_72_in_ruleCollectionTypeIdentifier6036 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_ruleCollectionTypeIdentifier6055 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_74_in_ruleCollectionTypeIdentifier6074 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionTypeCS_in_entryRuleCollectionTypeCS6114 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCollectionTypeCS6124 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionTypeIdentifier_in_ruleCollectionTypeCS6170 = new BitSet(new long[]{0x0000000000200002L});
+        public static final BitSet FOLLOW_21_in_ruleCollectionTypeCS6183 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleCollectionTypeCS6204 = new BitSet(new long[]{0x0000000000400000L});
+        public static final BitSet FOLLOW_22_in_ruleCollectionTypeCS6216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTupleTypeCS_in_entryRuleTupleTypeCS6254 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTupleTypeCS6264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_68_in_ruleTupleTypeCS6307 = new BitSet(new long[]{0x0000000000200002L});
+        public static final BitSet FOLLOW_21_in_ruleTupleTypeCS6333 = new BitSet(new long[]{0x00000000D0400060L});
+        public static final BitSet FOLLOW_ruleTuplePartCS_in_ruleTupleTypeCS6355 = new BitSet(new long[]{0x0000000004400000L});
+        public static final BitSet FOLLOW_26_in_ruleTupleTypeCS6368 = new BitSet(new long[]{0x00000000D0000060L});
+        public static final BitSet FOLLOW_ruleTuplePartCS_in_ruleTupleTypeCS6389 = new BitSet(new long[]{0x0000000004400000L});
+        public static final BitSet FOLLOW_22_in_ruleTupleTypeCS6405 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTuplePartCS_in_entryRuleTuplePartCS6443 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTuplePartCS6453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleTuplePartCS6499 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_23_in_ruleTuplePartCS6511 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleTuplePartCS6532 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionLiteralExpCS_in_entryRuleCollectionLiteralExpCS6568 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCollectionLiteralExpCS6578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionTypeCS_in_ruleCollectionLiteralExpCS6624 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_75_in_ruleCollectionLiteralExpCS6636 = new BitSet(new long[]{0x007FFC80D0A001E0L,0x00000001840F97D0L});
+        public static final BitSet FOLLOW_ruleCollectionLiteralPartCS_in_ruleCollectionLiteralExpCS6658 = new BitSet(new long[]{0x0000000004000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_26_in_ruleCollectionLiteralExpCS6671 = new BitSet(new long[]{0x007FFC80D0A001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleCollectionLiteralPartCS_in_ruleCollectionLiteralExpCS6692 = new BitSet(new long[]{0x0000000004000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_76_in_ruleCollectionLiteralExpCS6708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionLiteralPartCS_in_entryRuleCollectionLiteralPartCS6744 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCollectionLiteralPartCS6754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleCollectionLiteralPartCS6801 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002000L});
+        public static final BitSet FOLLOW_77_in_ruleCollectionLiteralPartCS6814 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleCollectionLiteralPartCS6835 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePatternExpCS_in_ruleCollectionLiteralPartCS6865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionPatternCS_in_entryRuleCollectionPatternCS6901 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCollectionPatternCS6911 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionTypeCS_in_ruleCollectionPatternCS6957 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_75_in_ruleCollectionPatternCS6969 = new BitSet(new long[]{0x007FFC80D0A001E0L,0x00000001840F97D0L});
+        public static final BitSet FOLLOW_rulePatternExpCS_in_ruleCollectionPatternCS6991 = new BitSet(new long[]{0x0000000004000000L,0x0000000000004000L});
+        public static final BitSet FOLLOW_26_in_ruleCollectionPatternCS7004 = new BitSet(new long[]{0x007FFC80D0A001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_rulePatternExpCS_in_ruleCollectionPatternCS7025 = new BitSet(new long[]{0x0000000004000000L,0x0000000000004000L});
+        public static final BitSet FOLLOW_78_in_ruleCollectionPatternCS7040 = new BitSet(new long[]{0x0000000000000060L});
+        public static final BitSet FOLLOW_ruleIdentifier_in_ruleCollectionPatternCS7061 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_76_in_ruleCollectionPatternCS7076 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleConstructorPartCS_in_entryRuleConstructorPartCS7112 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleConstructorPartCS7122 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleConstructorPartCS7174 = new BitSet(new long[]{0x0000000008000000L});
+        public static final BitSet FOLLOW_27_in_ruleConstructorPartCS7186 = new BitSet(new long[]{0x007FFC80D0A001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleConstructorPartCS7209 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePatternExpCS_in_ruleConstructorPartCS7228 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePatternExpCS_in_entryRulePatternExpCS7267 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePatternExpCS7277 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_rulePatternExpCS7323 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_23_in_rulePatternExpCS7336 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_rulePatternExpCS7357 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLambdaLiteralExpCS_in_entryRuleLambdaLiteralExpCS7393 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLambdaLiteralExpCS7403 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_ruleLambdaLiteralExpCS7440 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_75_in_ruleLambdaLiteralExpCS7452 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleLambdaLiteralExpCS7473 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_76_in_ruleLambdaLiteralExpCS7485 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrimitiveLiteralExpCS_in_entryRulePrimitiveLiteralExpCS7521 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePrimitiveLiteralExpCS7531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNumberLiteralExpCS_in_rulePrimitiveLiteralExpCS7581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteralExpCS_in_rulePrimitiveLiteralExpCS7611 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanLiteralExpCS_in_rulePrimitiveLiteralExpCS7641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnlimitedNaturalLiteralExpCS_in_rulePrimitiveLiteralExpCS7671 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleInvalidLiteralExpCS_in_rulePrimitiveLiteralExpCS7701 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNullLiteralExpCS_in_rulePrimitiveLiteralExpCS7731 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTupleLiteralExpCS_in_entryRuleTupleLiteralExpCS7766 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTupleLiteralExpCS7776 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_68_in_ruleTupleLiteralExpCS7813 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_75_in_ruleTupleLiteralExpCS7825 = new BitSet(new long[]{0x00000000D0000060L});
+        public static final BitSet FOLLOW_ruleTupleLiteralPartCS_in_ruleTupleLiteralExpCS7846 = new BitSet(new long[]{0x0000000004000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_26_in_ruleTupleLiteralExpCS7859 = new BitSet(new long[]{0x00000000D0000060L});
+        public static final BitSet FOLLOW_ruleTupleLiteralPartCS_in_ruleTupleLiteralExpCS7880 = new BitSet(new long[]{0x0000000004000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_76_in_ruleTupleLiteralExpCS7894 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTupleLiteralPartCS_in_entryRuleTupleLiteralPartCS7930 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTupleLiteralPartCS7940 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleTupleLiteralPartCS7986 = new BitSet(new long[]{0x0000000008800000L});
+        public static final BitSet FOLLOW_23_in_ruleTupleLiteralPartCS7999 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleTupleLiteralPartCS8020 = new BitSet(new long[]{0x0000000008000000L});
+        public static final BitSet FOLLOW_27_in_ruleTupleLiteralPartCS8034 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleTupleLiteralPartCS8055 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNumberLiteralExpCS_in_entryRuleNumberLiteralExpCS8091 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNumberLiteralExpCS8101 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNUMBER_LITERAL_in_ruleNumberLiteralExpCS8146 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteralExpCS_in_entryRuleStringLiteralExpCS8181 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStringLiteralExpCS8191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_ruleStringLiteralExpCS8236 = new BitSet(new long[]{0x0000000000000102L});
+        public static final BitSet FOLLOW_ruleBooleanLiteralExpCS_in_entryRuleBooleanLiteralExpCS8272 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBooleanLiteralExpCS8282 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_ruleBooleanLiteralExpCS8325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_81_in_ruleBooleanLiteralExpCS8362 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnlimitedNaturalLiteralExpCS_in_entryRuleUnlimitedNaturalLiteralExpCS8411 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleUnlimitedNaturalLiteralExpCS8421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_ruleUnlimitedNaturalLiteralExpCS8470 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleInvalidLiteralExpCS_in_entryRuleInvalidLiteralExpCS8506 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleInvalidLiteralExpCS8516 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_ruleInvalidLiteralExpCS8565 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNullLiteralExpCS_in_entryRuleNullLiteralExpCS8601 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNullLiteralExpCS8611 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_83_in_ruleNullLiteralExpCS8660 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeLiteralCS_in_entryRuleTypeLiteralCS8696 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTypeLiteralCS8706 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrimitiveTypeCS_in_ruleTypeLiteralCS8756 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionTypeCS_in_ruleTypeLiteralCS8786 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTupleTypeCS_in_ruleTypeLiteralCS8816 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeLiteralWithMultiplicityCS_in_entryRuleTypeLiteralWithMultiplicityCS8851 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTypeLiteralWithMultiplicityCS8861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeLiteralCS_in_ruleTypeLiteralWithMultiplicityCS8911 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
+        public static final BitSet FOLLOW_ruleMultiplicityCS_in_ruleTypeLiteralWithMultiplicityCS8931 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeLiteralExpCS_in_entryRuleTypeLiteralExpCS8968 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTypeLiteralExpCS8978 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeLiteralWithMultiplicityCS_in_ruleTypeLiteralExpCS9023 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeNameExpCS_in_entryRuleTypeNameExpCS9058 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTypeNameExpCS9068 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePathNameCS_in_ruleTypeNameExpCS9114 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000800L});
+        public static final BitSet FOLLOW_ruleCurlyBracketedClauseCS_in_ruleTypeNameExpCS9136 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000800L});
+        public static final BitSet FOLLOW_75_in_ruleTypeNameExpCS9149 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleTypeNameExpCS9170 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_76_in_ruleTypeNameExpCS9182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_entryRuleTypeExpCS9222 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTypeExpCS9232 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeNameExpCS_in_ruleTypeExpCS9283 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
+        public static final BitSet FOLLOW_ruleTypeLiteralCS_in_ruleTypeExpCS9313 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
+        public static final BitSet FOLLOW_ruleCollectionPatternCS_in_ruleTypeExpCS9343 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
+        public static final BitSet FOLLOW_ruleMultiplicityCS_in_ruleTypeExpCS9364 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpCS_in_entryRuleExpCS9401 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExpCS9411 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrefixedPrimaryExpCS_in_ruleExpCS9462 = new BitSet(new long[]{0xFFD0018008060002L,0x000000000000000FL});
+        public static final BitSet FOLLOW_ruleBinaryOperatorName_in_ruleExpCS9495 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleExpCS9516 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrefixedLetExpCS_in_ruleExpCS9550 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrefixedLetExpCS_in_entryRulePrefixedLetExpCS9585 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePrefixedLetExpCS9595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnaryOperatorName_in_rulePrefixedLetExpCS9654 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_rulePrefixedLetExpCS_in_rulePrefixedLetExpCS9675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLetExpCS_in_rulePrefixedLetExpCS9707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrefixedPrimaryExpCS_in_entryRulePrefixedPrimaryExpCS9742 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePrefixedPrimaryExpCS9752 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnaryOperatorName_in_rulePrefixedPrimaryExpCS9811 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001040F87D0L});
+        public static final BitSet FOLLOW_rulePrefixedPrimaryExpCS_in_rulePrefixedPrimaryExpCS9832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrimaryExpCS_in_rulePrefixedPrimaryExpCS9864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrimaryExpCS_in_entryRulePrimaryExpCS9899 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePrimaryExpCS9909 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNestedExpCS_in_rulePrimaryExpCS9959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIfExpCS_in_rulePrimaryExpCS9989 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSelfExpCS_in_rulePrimaryExpCS10019 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrimitiveLiteralExpCS_in_rulePrimaryExpCS10049 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTupleLiteralExpCS_in_rulePrimaryExpCS10079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionLiteralExpCS_in_rulePrimaryExpCS10109 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLambdaLiteralExpCS_in_rulePrimaryExpCS10139 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeLiteralExpCS_in_rulePrimaryExpCS10169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNameExpCS_in_rulePrimaryExpCS10199 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNameExpCS_in_entryRuleNameExpCS10234 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNameExpCS10244 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePathNameCS_in_ruleNameExpCS10290 = new BitSet(new long[]{0x0000000000200002L,0x0000000000300800L});
+        public static final BitSet FOLLOW_ruleSquareBracketedClauseCS_in_ruleNameExpCS10311 = new BitSet(new long[]{0x0000000000200002L,0x0000000000300800L});
+        public static final BitSet FOLLOW_ruleRoundBracketedClauseCS_in_ruleNameExpCS10333 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100800L});
+        public static final BitSet FOLLOW_ruleCurlyBracketedClauseCS_in_ruleNameExpCS10355 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+        public static final BitSet FOLLOW_84_in_ruleNameExpCS10375 = new BitSet(new long[]{0x0000000100000000L});
+        public static final BitSet FOLLOW_32_in_ruleNameExpCS10400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCurlyBracketedClauseCS_in_entryRuleCurlyBracketedClauseCS10438 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCurlyBracketedClauseCS10448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_75_in_ruleCurlyBracketedClauseCS10497 = new BitSet(new long[]{0x00000000D0000160L,0x0000000000001000L});
+        public static final BitSet FOLLOW_ruleConstructorPartCS_in_ruleCurlyBracketedClauseCS10520 = new BitSet(new long[]{0x0000000004000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_26_in_ruleCurlyBracketedClauseCS10533 = new BitSet(new long[]{0x00000000D0000060L});
+        public static final BitSet FOLLOW_ruleConstructorPartCS_in_ruleCurlyBracketedClauseCS10554 = new BitSet(new long[]{0x0000000004000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_ruleCurlyBracketedClauseCS10585 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_76_in_ruleCurlyBracketedClauseCS10598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRoundBracketedClauseCS_in_entryRuleRoundBracketedClauseCS10634 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleRoundBracketedClauseCS10644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_21_in_ruleRoundBracketedClauseCS10693 = new BitSet(new long[]{0x007FFE80D0E001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleNavigatingArgCS_in_ruleRoundBracketedClauseCS10715 = new BitSet(new long[]{0x0000000004400000L,0x0000000003000000L});
+        public static final BitSet FOLLOW_ruleNavigatingCommaArgCS_in_ruleRoundBracketedClauseCS10736 = new BitSet(new long[]{0x0000000004400000L,0x0000000003000000L});
+        public static final BitSet FOLLOW_ruleNavigatingSemiArgCS_in_ruleRoundBracketedClauseCS10759 = new BitSet(new long[]{0x0000000004400000L,0x0000000001000000L});
+        public static final BitSet FOLLOW_ruleNavigatingCommaArgCS_in_ruleRoundBracketedClauseCS10780 = new BitSet(new long[]{0x0000000004400000L,0x0000000001000000L});
+        public static final BitSet FOLLOW_ruleNavigatingBarArgCS_in_ruleRoundBracketedClauseCS10805 = new BitSet(new long[]{0x0000000004400000L,0x0000000001000000L});
+        public static final BitSet FOLLOW_ruleNavigatingCommaArgCS_in_ruleRoundBracketedClauseCS10826 = new BitSet(new long[]{0x0000000004400000L,0x0000000001000000L});
+        public static final BitSet FOLLOW_22_in_ruleRoundBracketedClauseCS10843 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSquareBracketedClauseCS_in_entryRuleSquareBracketedClauseCS10879 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSquareBracketedClauseCS10889 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_ruleSquareBracketedClauseCS10926 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleSquareBracketedClauseCS10947 = new BitSet(new long[]{0x0000000004000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_26_in_ruleSquareBracketedClauseCS10960 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleSquareBracketedClauseCS10981 = new BitSet(new long[]{0x0000000004000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_86_in_ruleSquareBracketedClauseCS10995 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingArgCS_in_entryRuleNavigatingArgCS11031 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNavigatingArgCS11041 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingArgCS11088 = new BitSet(new long[]{0x0000000000800002L,0x0000000000800000L});
+        public static final BitSet FOLLOW_23_in_ruleNavigatingArgCS11102 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleNavigatingArgCS11123 = new BitSet(new long[]{0x0000000008000002L});
+        public static final BitSet FOLLOW_27_in_ruleNavigatingArgCS11136 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleNavigatingArgCS11157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_ruleNavigatingArgCS11179 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleNavigatingArgCS11200 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_ruleNavigatingArgCS11223 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleNavigatingArgCS11244 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingBarArgCS_in_entryRuleNavigatingBarArgCS11281 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNavigatingBarArgCS11291 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_ruleNavigatingBarArgCS11334 = new BitSet(new long[]{0x007FFE80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingBarArgCS11368 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_23_in_ruleNavigatingBarArgCS11381 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleNavigatingBarArgCS11402 = new BitSet(new long[]{0x0000000008000002L});
+        public static final BitSet FOLLOW_27_in_ruleNavigatingBarArgCS11415 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleNavigatingBarArgCS11436 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingCommaArgCS_in_entryRuleNavigatingCommaArgCS11476 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNavigatingCommaArgCS11486 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_ruleNavigatingCommaArgCS11529 = new BitSet(new long[]{0x007FFE80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingCommaArgCS11563 = new BitSet(new long[]{0x0000000000800002L,0x0000000000800000L});
+        public static final BitSet FOLLOW_23_in_ruleNavigatingCommaArgCS11577 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleNavigatingCommaArgCS11598 = new BitSet(new long[]{0x0000000008000002L});
+        public static final BitSet FOLLOW_27_in_ruleNavigatingCommaArgCS11611 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleNavigatingCommaArgCS11632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_ruleNavigatingCommaArgCS11654 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleNavigatingCommaArgCS11675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNavigatingSemiArgCS_in_entryRuleNavigatingSemiArgCS11714 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNavigatingSemiArgCS11724 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_ruleNavigatingSemiArgCS11767 = new BitSet(new long[]{0x007FFE80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleNavigatingArgExpCS_in_ruleNavigatingSemiArgCS11801 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_23_in_ruleNavigatingSemiArgCS11814 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleNavigatingSemiArgCS11835 = new BitSet(new long[]{0x0000000008000002L});
+        public static final BitSet FOLLOW_27_in_ruleNavigatingSemiArgCS11848 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleNavigatingSemiArgCS11869 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIfExpCS_in_entryRuleIfExpCS11909 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleIfExpCS11919 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_ruleIfExpCS11956 = new BitSet(new long[]{0x007FFC80D0A001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleIfExpCS11979 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rulePatternExpCS_in_ruleIfExpCS11998 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_91_in_ruleIfExpCS12013 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleIfExpCS12034 = new BitSet(new long[]{0x0000000000000000L,0x0000000050000000L});
+        public static final BitSet FOLLOW_ruleElseIfThenExpCS_in_ruleIfExpCS12055 = new BitSet(new long[]{0x0000000000000000L,0x0000000050000000L});
+        public static final BitSet FOLLOW_92_in_ruleIfExpCS12068 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleIfExpCS12089 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_93_in_ruleIfExpCS12101 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleElseIfThenExpCS_in_entryRuleElseIfThenExpCS12137 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleElseIfThenExpCS12147 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_ruleElseIfThenExpCS12184 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleElseIfThenExpCS12205 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_91_in_ruleElseIfThenExpCS12217 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleElseIfThenExpCS12238 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLetExpCS_in_entryRuleLetExpCS12274 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLetExpCS12284 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_95_in_ruleLetExpCS12321 = new BitSet(new long[]{0x00000000D0000060L});
+        public static final BitSet FOLLOW_ruleLetVariableCS_in_ruleLetExpCS12342 = new BitSet(new long[]{0x0000000004000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_26_in_ruleLetExpCS12355 = new BitSet(new long[]{0x00000000D0000060L});
+        public static final BitSet FOLLOW_ruleLetVariableCS_in_ruleLetExpCS12376 = new BitSet(new long[]{0x0000000004000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_87_in_ruleLetExpCS12390 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleLetExpCS12411 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLetVariableCS_in_entryRuleLetVariableCS12447 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLetVariableCS12457 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleLetVariableCS12503 = new BitSet(new long[]{0x0000000008A00000L});
+        public static final BitSet FOLLOW_ruleRoundBracketedClauseCS_in_ruleLetVariableCS12524 = new BitSet(new long[]{0x0000000008800000L});
+        public static final BitSet FOLLOW_23_in_ruleLetVariableCS12538 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypeExpCS_in_ruleLetVariableCS12559 = new BitSet(new long[]{0x0000000008000000L});
+        public static final BitSet FOLLOW_27_in_ruleLetVariableCS12573 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleLetVariableCS12594 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNestedExpCS_in_entryRuleNestedExpCS12630 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNestedExpCS12640 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_21_in_ruleNestedExpCS12677 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_ruleNestedExpCS12698 = new BitSet(new long[]{0x0000000000400000L});
+        public static final BitSet FOLLOW_22_in_ruleNestedExpCS12710 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSelfExpCS_in_entryRuleSelfExpCS12746 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSelfExpCS12756 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_96_in_ruleSelfExpCS12805 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleMultiplicityBoundsCS_in_entryRuleMultiplicityBoundsCS12841 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleMultiplicityBoundsCS12851 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLOWER_in_ruleMultiplicityBoundsCS12897 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002000L});
+        public static final BitSet FOLLOW_77_in_ruleMultiplicityBoundsCS12910 = new BitSet(new long[]{0x0040000000000080L});
+        public static final BitSet FOLLOW_ruleUPPER_in_ruleMultiplicityBoundsCS12931 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleMultiplicityCS_in_entryRuleMultiplicityCS12969 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleMultiplicityCS12979 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_ruleMultiplicityCS13016 = new BitSet(new long[]{0x0140020000000080L});
+        public static final BitSet FOLLOW_ruleMultiplicityBoundsCS_in_ruleMultiplicityCS13042 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_ruleMultiplicityStringCS_in_ruleMultiplicityCS13072 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_86_in_ruleMultiplicityCS13084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleMultiplicityStringCS_in_entryRuleMultiplicityStringCS13120 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleMultiplicityStringCS13130 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_ruleMultiplicityStringCS13174 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_56_in_ruleMultiplicityStringCS13203 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_ruleMultiplicityStringCS13232 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePathNameCS_in_entryRulePathNameCS13283 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePathNameCS13293 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFirstPathElementCS_in_rulePathNameCS13339 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
+        public static final BitSet FOLLOW_69_in_rulePathNameCS13352 = new BitSet(new long[]{0x000FFC00D0000060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleNextPathElementCS_in_rulePathNameCS13373 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleFirstPathElementCS_in_entryRuleFirstPathElementCS13411 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFirstPathElementCS13421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleFirstPathElementCS13472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNextPathElementCS_in_entryRuleNextPathElementCS13507 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNextPathElementCS13517 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnreservedName_in_ruleNextPathElementCS13568 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTemplateBindingCS_in_entryRuleTemplateBindingCS13603 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTemplateBindingCS13613 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_21_in_ruleTemplateBindingCS13650 = new BitSet(new long[]{0x000FFE80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTemplateParameterSubstitutionCS_in_ruleTemplateBindingCS13671 = new BitSet(new long[]{0x0000000004400000L});
+        public static final BitSet FOLLOW_26_in_ruleTemplateBindingCS13684 = new BitSet(new long[]{0x000FFE80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTemplateParameterSubstitutionCS_in_ruleTemplateBindingCS13705 = new BitSet(new long[]{0x0000000004400000L});
+        public static final BitSet FOLLOW_22_in_ruleTemplateBindingCS13719 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTemplateParameterSubstitutionCS_in_entryRuleTemplateParameterSubstitutionCS13755 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTemplateParameterSubstitutionCS13765 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeRefCS_in_ruleTemplateParameterSubstitutionCS13810 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeParameterCS_in_entryRuleTypeParameterCS13845 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTypeParameterCS13855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnrestrictedName_in_ruleTypeParameterCS13901 = new BitSet(new long[]{0x0000000000000002L,0x0000000A00000000L});
+        public static final BitSet FOLLOW_97_in_ruleTypeParameterCS13915 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypedRefCS_in_ruleTypeParameterCS13936 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+        public static final BitSet FOLLOW_98_in_ruleTypeParameterCS13949 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypedRefCS_in_ruleTypeParameterCS13970 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+        public static final BitSet FOLLOW_99_in_ruleTypeParameterCS13992 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypedRefCS_in_ruleTypeParameterCS14013 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeRefCS_in_entryRuleTypeRefCS14052 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTypeRefCS14062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypedRefCS_in_ruleTypeRefCS14112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleWildcardTypeRefCS_in_ruleTypeRefCS14142 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypedTypeRefCS_in_entryRuleTypedTypeRefCS14177 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTypedTypeRefCS14187 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePathNameCS_in_ruleTypedTypeRefCS14233 = new BitSet(new long[]{0x0000000000200002L});
+        public static final BitSet FOLLOW_ruleTemplateBindingCS_in_ruleTypedTypeRefCS14254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleWildcardTypeRefCS_in_entryRuleWildcardTypeRefCS14291 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleWildcardTypeRefCS14301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_ruleWildcardTypeRefCS14350 = new BitSet(new long[]{0x0000000000000002L,0x0000000A00000000L});
+        public static final BitSet FOLLOW_97_in_ruleWildcardTypeRefCS14364 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypedRefCS_in_ruleWildcardTypeRefCS14385 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_ruleWildcardTypeRefCS14405 = new BitSet(new long[]{0x000FFC80D0200060L,0x00000000000007D0L});
+        public static final BitSet FOLLOW_ruleTypedRefCS_in_ruleWildcardTypeRefCS14426 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleID_in_entryRuleID14466 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleID14477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_SIMPLE_ID_in_ruleID14517 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ESCAPED_ID_in_ruleID14543 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIdentifier_in_entryRuleIdentifier14589 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleIdentifier14600 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleID_in_ruleIdentifier14646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLOWER_in_entryRuleLOWER14691 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLOWER14702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleLOWER14741 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNUMBER_LITERAL_in_entryRuleNUMBER_LITERAL14786 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNUMBER_LITERAL14797 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleNUMBER_LITERAL14836 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_entryRuleStringLiteral14881 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStringLiteral14892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_SINGLE_QUOTED_STRING_in_ruleStringLiteral14931 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUPPER_in_entryRuleUPPER14976 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleUPPER14987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleUPPER15027 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_ruleUPPER15051 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleURI_in_entryRuleURI15092 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleURI15103 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_SINGLE_QUOTED_STRING_in_ruleURI15142 = new BitSet(new long[]{0x0000000000000002L});
         public static final BitSet FOLLOW_rulePropertyContextDeclCS_in_synpred13_InternalCompleteOCL839 = new BitSet(new long[]{0x0000000000000002L});
         public static final BitSet FOLLOW_ruleClassifierContextDeclCS_in_synpred14_InternalCompleteOCL869 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeLiteralCS_in_synpred113_InternalCompleteOCL9314 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_rulePrefixedPrimaryExpCS_in_synpred116_InternalCompleteOCL9463 = new BitSet(new long[]{0xFFD0018008060002L,0x000000000000000FL});
-        public static final BitSet FOLLOW_ruleBinaryOperatorName_in_synpred116_InternalCompleteOCL9496 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
-        public static final BitSet FOLLOW_ruleExpCS_in_synpred116_InternalCompleteOCL9517 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTupleLiteralExpCS_in_synpred123_InternalCompleteOCL10080 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleCollectionLiteralExpCS_in_synpred124_InternalCompleteOCL10110 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleTypeLiteralExpCS_in_synpred126_InternalCompleteOCL10170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeLiteralCS_in_synpred112_InternalCompleteOCL9313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrefixedPrimaryExpCS_in_synpred115_InternalCompleteOCL9462 = new BitSet(new long[]{0xFFD0018008060002L,0x000000000000000FL});
+        public static final BitSet FOLLOW_ruleBinaryOperatorName_in_synpred115_InternalCompleteOCL9495 = new BitSet(new long[]{0x007FFC80D02001E0L,0x00000001840F87D0L});
+        public static final BitSet FOLLOW_ruleExpCS_in_synpred115_InternalCompleteOCL9516 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTupleLiteralExpCS_in_synpred122_InternalCompleteOCL10079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionLiteralExpCS_in_synpred123_InternalCompleteOCL10109 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypeLiteralExpCS_in_synpred125_InternalCompleteOCL10169 = new BitSet(new long[]{0x0000000000000002L});
     }
 
 
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/serializer/AbstractCompleteOCLSemanticSequencer.java b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/serializer/AbstractCompleteOCLSemanticSequencer.java
index 9bb6a4f..e938720 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/serializer/AbstractCompleteOCLSemanticSequencer.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/serializer/AbstractCompleteOCLSemanticSequencer.java
@@ -1,3 +1,6 @@
+/*
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.completeocl.serializer;
 
 import com.google.inject.Inject;
@@ -80,40 +83,24 @@
 	@Inject
 	private CompleteOCLGrammarAccess grammarAccess;
 	
+	@Override
 	public void createSequence(EObject context, EObject semanticObject) {
 		if(semanticObject.eClass().getEPackage() == BaseCSPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
 			case BaseCSPackage.CONSTRAINT_CS:
-				if(context == grammarAccess.getConstraintCSRule()) {
-					sequence_ConstraintCS(context, (ConstraintCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ConstraintCS(context, (ConstraintCS) semanticObject); 
+				return; 
 			case BaseCSPackage.IMPORT_CS:
-				if(context == grammarAccess.getImportCSRule()) {
-					sequence_ImportCS(context, (ImportCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ImportCS(context, (ImportCS) semanticObject); 
+				return; 
 			case BaseCSPackage.LIBRARY_CS:
-				if(context == grammarAccess.getLibraryCSRule()) {
-					sequence_LibraryCS(context, (LibraryCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LibraryCS(context, (LibraryCS) semanticObject); 
+				return; 
 			case BaseCSPackage.MULTIPLICITY_BOUNDS_CS:
-				if(context == grammarAccess.getMultiplicityBoundsCSRule() ||
-				   context == grammarAccess.getMultiplicityCSRule()) {
-					sequence_MultiplicityBoundsCS(context, (MultiplicityBoundsCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_MultiplicityBoundsCS(context, (MultiplicityBoundsCS) semanticObject); 
+				return; 
 			case BaseCSPackage.MULTIPLICITY_STRING_CS:
-				if(context == grammarAccess.getMultiplicityCSRule() ||
-				   context == grammarAccess.getMultiplicityStringCSRule()) {
-					sequence_MultiplicityStringCS(context, (MultiplicityStringCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_MultiplicityStringCS(context, (MultiplicityStringCS) semanticObject); 
+				return; 
 			case BaseCSPackage.PARAMETER_CS:
 				if(context == grammarAccess.getDefParameterCSRule()) {
 					sequence_DefParameterCS(context, (ParameterCS) semanticObject); 
@@ -139,11 +126,8 @@
 				}
 				else break;
 			case BaseCSPackage.PATH_ELEMENT_WITH_URICS:
-				if(context == grammarAccess.getURIFirstPathElementCSRule()) {
-					sequence_URIFirstPathElementCS(context, (PathElementWithURICS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_URIFirstPathElementCS(context, (PathElementWithURICS) semanticObject); 
+				return; 
 			case BaseCSPackage.PATH_NAME_CS:
 				if(context == grammarAccess.getPathNameCSRule()) {
 					sequence_PathNameCS(context, (PathNameCS) semanticObject); 
@@ -172,29 +156,17 @@
 				}
 				else break;
 			case BaseCSPackage.TEMPLATE_BINDING_CS:
-				if(context == grammarAccess.getTemplateBindingCSRule()) {
-					sequence_TemplateBindingCS(context, (TemplateBindingCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateBindingCS(context, (TemplateBindingCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TEMPLATE_PARAMETER_SUBSTITUTION_CS:
-				if(context == grammarAccess.getTemplateParameterSubstitutionCSRule()) {
-					sequence_TemplateParameterSubstitutionCS(context, (TemplateParameterSubstitutionCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateParameterSubstitutionCS(context, (TemplateParameterSubstitutionCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TEMPLATE_SIGNATURE_CS:
-				if(context == grammarAccess.getTemplateSignatureCSRule()) {
-					sequence_TemplateSignatureCS(context, (TemplateSignatureCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateSignatureCS(context, (TemplateSignatureCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TUPLE_PART_CS:
-				if(context == grammarAccess.getTuplePartCSRule()) {
-					sequence_TuplePartCS(context, (TuplePartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TuplePartCS(context, (TuplePartCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TUPLE_TYPE_CS:
 				if(context == grammarAccess.getTupleTypeCSRule() ||
 				   context == grammarAccess.getTypeLiteralCSRule() ||
@@ -213,118 +185,54 @@
 				}
 				else break;
 			case BaseCSPackage.TYPE_PARAMETER_CS:
-				if(context == grammarAccess.getTypeParameterCSRule()) {
-					sequence_TypeParameterCS(context, (TypeParameterCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TypeParameterCS(context, (TypeParameterCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TYPED_TYPE_REF_CS:
-				if(context == grammarAccess.getTypeRefCSRule() ||
-				   context == grammarAccess.getTypedRefCSRule() ||
-				   context == grammarAccess.getTypedTypeRefCSRule()) {
-					sequence_TypedTypeRefCS(context, (TypedTypeRefCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TypedTypeRefCS(context, (TypedTypeRefCS) semanticObject); 
+				return; 
 			case BaseCSPackage.WILDCARD_TYPE_REF_CS:
-				if(context == grammarAccess.getTypeRefCSRule() ||
-				   context == grammarAccess.getWildcardTypeRefCSRule()) {
-					sequence_WildcardTypeRefCS(context, (WildcardTypeRefCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_WildcardTypeRefCS(context, (WildcardTypeRefCS) semanticObject); 
+				return; 
 			}
 		else if(semanticObject.eClass().getEPackage() == CompleteOCLCSPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
 			case CompleteOCLCSPackage.CLASSIFIER_CONTEXT_DECL_CS:
-				if(context == grammarAccess.getClassifierContextDeclCSRule() ||
-				   context == grammarAccess.getContextDeclCSRule()) {
-					sequence_ClassifierContextDeclCS(context, (ClassifierContextDeclCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ClassifierContextDeclCS(context, (ClassifierContextDeclCS) semanticObject); 
+				return; 
 			case CompleteOCLCSPackage.COMPLETE_OCL_DOCUMENT_CS:
-				if(context == grammarAccess.getCompleteOCLDocumentCSRule()) {
-					sequence_CompleteOCLDocumentCS(context, (CompleteOCLDocumentCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CompleteOCLDocumentCS(context, (CompleteOCLDocumentCS) semanticObject); 
+				return; 
 			case CompleteOCLCSPackage.DEF_OPERATION_CS:
-				if(context == grammarAccess.getDefCSRule() ||
-				   context == grammarAccess.getDefOperationCSRule()) {
-					sequence_DefOperationCS(context, (DefOperationCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_DefOperationCS(context, (DefOperationCS) semanticObject); 
+				return; 
 			case CompleteOCLCSPackage.DEF_PROPERTY_CS:
-				if(context == grammarAccess.getDefCSRule() ||
-				   context == grammarAccess.getDefPropertyCSRule()) {
-					sequence_DefPropertyCS(context, (DefPropertyCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_DefPropertyCS(context, (DefPropertyCS) semanticObject); 
+				return; 
 			case CompleteOCLCSPackage.INCLUDE_CS:
-				if(context == grammarAccess.getIncludeCSRule()) {
-					sequence_IncludeCS(context, (IncludeCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_IncludeCS(context, (IncludeCS) semanticObject); 
+				return; 
 			case CompleteOCLCSPackage.OCL_MESSAGE_ARG_CS:
-				if(context == grammarAccess.getNavigatingArgExpCSRule()) {
-					sequence_NavigatingArgExpCS(context, (OCLMessageArgCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NavigatingArgExpCS(context, (OCLMessageArgCS) semanticObject); 
+				return; 
 			case CompleteOCLCSPackage.OPERATION_CONTEXT_DECL_CS:
-				if(context == grammarAccess.getContextDeclCSRule() ||
-				   context == grammarAccess.getOperationContextDeclCSRule()) {
-					sequence_OperationContextDeclCS(context, (OperationContextDeclCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_OperationContextDeclCS(context, (OperationContextDeclCS) semanticObject); 
+				return; 
 			case CompleteOCLCSPackage.PACKAGE_DECLARATION_CS:
-				if(context == grammarAccess.getPackageDeclarationCSRule()) {
-					sequence_PackageDeclarationCS(context, (PackageDeclarationCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PackageDeclarationCS(context, (PackageDeclarationCS) semanticObject); 
+				return; 
 			case CompleteOCLCSPackage.PROPERTY_CONTEXT_DECL_CS:
-				if(context == grammarAccess.getContextDeclCSRule() ||
-				   context == grammarAccess.getPropertyContextDeclCSRule()) {
-					sequence_PropertyContextDeclCS(context, (PropertyContextDeclCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PropertyContextDeclCS(context, (PropertyContextDeclCS) semanticObject); 
+				return; 
 			}
 		else if(semanticObject.eClass().getEPackage() == EssentialOCLCSPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
 			case EssentialOCLCSPackage.BOOLEAN_LITERAL_EXP_CS:
-				if(context == grammarAccess.getBooleanLiteralExpCSRule() ||
-				   context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_BooleanLiteralExpCS(context, (BooleanLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_BooleanLiteralExpCS(context, (BooleanLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.COLLECTION_LITERAL_EXP_CS:
-				if(context == grammarAccess.getCollectionLiteralExpCSRule() ||
-				   context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_CollectionLiteralExpCS(context, (CollectionLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CollectionLiteralExpCS(context, (CollectionLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.COLLECTION_LITERAL_PART_CS:
-				if(context == grammarAccess.getCollectionLiteralPartCSRule()) {
-					sequence_CollectionLiteralPartCS(context, (CollectionLiteralPartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CollectionLiteralPartCS(context, (CollectionLiteralPartCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.COLLECTION_PATTERN_CS:
 				if(context == grammarAccess.getCollectionPatternCSRule()) {
 					sequence_CollectionPatternCS(context, (CollectionPatternCS) semanticObject); 
@@ -353,102 +261,41 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.CONSTRUCTOR_PART_CS:
-				if(context == grammarAccess.getConstructorPartCSRule()) {
-					sequence_ConstructorPartCS(context, (ConstructorPartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ConstructorPartCS(context, (ConstructorPartCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.CONTEXT_CS:
-				if(context == grammarAccess.getModelRule()) {
-					sequence_Model(context, (ContextCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_Model(context, (ContextCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.CURLY_BRACKETED_CLAUSE_CS:
-				if(context == grammarAccess.getCurlyBracketedClauseCSRule()) {
-					sequence_CurlyBracketedClauseCS(context, (CurlyBracketedClauseCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CurlyBracketedClauseCS(context, (CurlyBracketedClauseCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.EXP_SPECIFICATION_CS:
-				if(context == grammarAccess.getSpecificationCSRule()) {
-					sequence_SpecificationCS(context, (ExpSpecificationCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_SpecificationCS(context, (ExpSpecificationCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.IF_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getIfExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_IfExpCS(context, (IfExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_IfExpCS(context, (IfExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.IF_THEN_EXP_CS:
-				if(context == grammarAccess.getElseIfThenExpCSRule()) {
-					sequence_ElseIfThenExpCS(context, (IfThenExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ElseIfThenExpCS(context, (IfThenExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.INFIX_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule()) {
-					sequence_ExpCS(context, (InfixExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ExpCS(context, (InfixExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.INVALID_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getInvalidLiteralExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_InvalidLiteralExpCS(context, (InvalidLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_InvalidLiteralExpCS(context, (InvalidLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.LAMBDA_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getLambdaLiteralExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_LambdaLiteralExpCS(context, (LambdaLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LambdaLiteralExpCS(context, (LambdaLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.LET_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getLetExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedLetExpCSRule()) {
-					sequence_LetExpCS(context, (LetExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LetExpCS(context, (LetExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.LET_VARIABLE_CS:
-				if(context == grammarAccess.getLetVariableCSRule()) {
-					sequence_LetVariableCS(context, (LetVariableCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LetVariableCS(context, (LetVariableCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NAME_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNameExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_NameExpCS(context, (NameExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NameExpCS(context, (NameExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NAVIGATING_ARG_CS:
 				if(context == grammarAccess.getNavigatingArgCSRule()) {
 					sequence_NavigatingArgCS(context, (NavigatingArgCS) semanticObject); 
@@ -468,46 +315,17 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.NESTED_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getNestedExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_NestedExpCS(context, (NestedExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NestedExpCS(context, (NestedExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NULL_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getNullLiteralExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_NullLiteralExpCS(context, (NullLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NullLiteralExpCS(context, (NullLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NUMBER_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getNumberLiteralExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_NumberLiteralExpCS(context, (NumberLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NumberLiteralExpCS(context, (NumberLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.PATTERN_EXP_CS:
-				if(context == grammarAccess.getPatternExpCSRule()) {
-					sequence_PatternExpCS(context, (PatternExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PatternExpCS(context, (PatternExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.PREFIX_EXP_CS:
 				if(context == grammarAccess.getPrefixedLetExpCSRule()) {
 					sequence_PrefixedLetExpCS(context, (PrefixExpCS) semanticObject); 
@@ -525,68 +343,26 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.ROUND_BRACKETED_CLAUSE_CS:
-				if(context == grammarAccess.getRoundBracketedClauseCSRule()) {
-					sequence_RoundBracketedClauseCS(context, (RoundBracketedClauseCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_RoundBracketedClauseCS(context, (RoundBracketedClauseCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.SELF_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getSelfExpCSRule()) {
-					sequence_SelfExpCS(context, (SelfExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_SelfExpCS(context, (SelfExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.SQUARE_BRACKETED_CLAUSE_CS:
-				if(context == grammarAccess.getSquareBracketedClauseCSRule()) {
-					sequence_SquareBracketedClauseCS(context, (SquareBracketedClauseCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_SquareBracketedClauseCS(context, (SquareBracketedClauseCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.STRING_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule() ||
-				   context == grammarAccess.getStringLiteralExpCSRule()) {
-					sequence_StringLiteralExpCS(context, (StringLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_StringLiteralExpCS(context, (StringLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TUPLE_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getTupleLiteralExpCSRule()) {
-					sequence_TupleLiteralExpCS(context, (TupleLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TupleLiteralExpCS(context, (TupleLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TUPLE_LITERAL_PART_CS:
-				if(context == grammarAccess.getTupleLiteralPartCSRule()) {
-					sequence_TupleLiteralPartCS(context, (TupleLiteralPartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TupleLiteralPartCS(context, (TupleLiteralPartCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TYPE_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getTypeLiteralExpCSRule()) {
-					sequence_TypeLiteralExpCS(context, (TypeLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TypeLiteralExpCS(context, (TypeLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TYPE_NAME_EXP_CS:
 				if(context == grammarAccess.getTypeExpCSRule()) {
 					sequence_TypeExpCS_TypeNameExpCS(context, (TypeNameExpCS) semanticObject); 
@@ -598,17 +374,8 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.UNLIMITED_NATURAL_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule() ||
-				   context == grammarAccess.getUnlimitedNaturalLiteralExpCSRule()) {
-					sequence_UnlimitedNaturalLiteralExpCS(context, (UnlimitedNaturalLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_UnlimitedNaturalLiteralExpCS(context, (UnlimitedNaturalLiteralExpCS) semanticObject); 
+				return; 
 			}
 		if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
 	}
@@ -753,7 +520,7 @@
 	
 	/**
 	 * Constraint:
-	 *     (ownedPathName=PathNameCS ownedType=TypeExpCS? (ownedDerivedInvariants+=ConstraintCS | ownedDefaultExpressions+=SpecificationCS)*)
+	 *     (ownedPathName=PathNameCS ownedType=TypeExpCS (ownedDerivedInvariants+=ConstraintCS | ownedDefaultExpressions+=SpecificationCS)*)
 	 */
 	protected void sequence_PropertyContextDeclCS(EObject context, PropertyContextDeclCS semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/serializer/AbstractCompleteOCLSyntacticSequencer.java b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/serializer/AbstractCompleteOCLSyntacticSequencer.java
index 7a00490..ca94b48 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/serializer/AbstractCompleteOCLSyntacticSequencer.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/serializer/AbstractCompleteOCLSyntacticSequencer.java
@@ -1,3 +1,6 @@
+/*
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.completeocl.serializer;
 
 import com.google.inject.Inject;
@@ -72,32 +75,54 @@
 	}
 
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     UnrestrictedName?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (rule start) 'def' (ambiguity) ':' name=UnrestrictedName
+	 *     (rule start) 'def' (ambiguity) ':' ownedSignature=TemplateSignatureCS
+	 *     isStatic?='static' 'def' (ambiguity) ':' name=UnrestrictedName
+	 *     isStatic?='static' 'def' (ambiguity) ':' ownedSignature=TemplateSignatureCS
 	 */
 	protected void emit_DefOperationCS_UnrestrictedNameParserRuleCall_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     UnrestrictedName?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (rule start) 'def' (ambiguity) ':' name=UnrestrictedName
+	 *     isStatic?='static' 'def' (ambiguity) ':' name=UnrestrictedName
 	 */
 	protected void emit_DefPropertyCS_UnrestrictedNameParserRuleCall_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     UnrestrictedName?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedBodies+=SpecificationCS 'body' (ambiguity) ':' ownedBodies+=SpecificationCS
+	 *     ownedParameters+=ParameterCS ')' ':' 'body' (ambiguity) ':' ownedBodies+=SpecificationCS
+	 *     ownedPathName=PathNameCS '(' ')' ':' 'body' (ambiguity) ':' ownedBodies+=SpecificationCS
+	 *     ownedPostconditions+=ConstraintCS 'body' (ambiguity) ':' ownedBodies+=SpecificationCS
+	 *     ownedPreconditions+=ConstraintCS 'body' (ambiguity) ':' ownedBodies+=SpecificationCS
+	 *     ownedType=TypeExpCS 'body' (ambiguity) ':' ownedBodies+=SpecificationCS
 	 */
 	protected void emit_OperationContextDeclCS_UnrestrictedNameParserRuleCall_8_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('(' ')')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name='Tuple' (ambiguity) (rule end)
+	 *     name='Tuple' (ambiguity) ownedMultiplicity=MultiplicityCS
 	 */
 	protected void emit_TupleTypeCS___LeftParenthesisKeyword_1_0_RightParenthesisKeyword_1_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/services/CompleteOCLGrammarAccess.java b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/services/CompleteOCLGrammarAccess.java
index b050115..2c9e87c 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/services/CompleteOCLGrammarAccess.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/services/CompleteOCLGrammarAccess.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.completeocl.services;
 
 import com.google.inject.Singleton;
@@ -35,12 +35,18 @@
 		private final Assignment cOwnedContextsAssignment_1_1 = (Assignment)cAlternatives_1.eContents().get(1);
 		private final RuleCall cOwnedContextsContextDeclCSParserRuleCall_1_1_0 = (RuleCall)cOwnedContextsAssignment_1_1.eContents().get(0);
 		
-		////generate completeOCL "http://www.eclipse.org/ocl/examples/xtext/completeocl/CompleteOCL"
-		// CompleteOCLDocumentCS:
+		/// *
+		// * A Complete OCL document comprises
+		// * bullet[model imports for referenced and complemented models]
+		// * bullet[includes for additional Complete OCL documents]
+		// * bullet[libraries to augment or override the OCL Standard Library]
+		// * bullet[package declarations for package-grouped declarations]
+		// * bullet[context declarations for independent declarations]
+		// * /
+		//CompleteOCLDocumentCS:
 		//	(ownedImports+=ImportCS | ownedIncludes+=IncludeCS | ownedLibraries+=LibraryCS)* (ownedPackages+=PackageDeclarationCS
 		//	| ownedContexts+=ContextDeclCS)*;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//(ownedImports+=ImportCS | ownedIncludes+=IncludeCS | ownedLibraries+=LibraryCS)* (ownedPackages+=PackageDeclarationCS |
 		//ownedContexts+=ContextDeclCS)*
@@ -91,8 +97,7 @@
 		
 		//CompleteOCLNavigationOperatorName:
 		//	"^" | "^^";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"^" | "^^"
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -125,8 +130,7 @@
 		//ClassifierContextDeclCS:
 		//	"context" ownedSignature=TemplateSignatureCS? selfName=UnrestrictedName? ownedPathName=PathNameCS ("inv"
 		//	ownedInvariants+=ConstraintCS | ownedDefinitions+=DefCS)+;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"context" ownedSignature=TemplateSignatureCS? selfName=UnrestrictedName? ownedPathName=PathNameCS ("inv"
 		//ownedInvariants+=ConstraintCS | ownedDefinitions+=DefCS)+
@@ -190,10 +194,18 @@
 		private final Assignment cOwnedSpecificationAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cOwnedSpecificationSpecificationCSParserRuleCall_2_0 = (RuleCall)cOwnedSpecificationAssignment_2.eContents().get(0);
 		
+		/// *
+		// * A Constraint such as 
+		// * 
+		// * oclText[IsNull('should be null') : self = null]
+		// * 
+		// * comprises at least the OCL specification of the constraint. The constraint may
+		// * additionally have a name which may be followed by a parenthesized expression defining an OCL
+		// * expression to be evaluated to provide an error message.
+		// * /
 		//ConstraintCS returns base::ConstraintCS:
 		//	(name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS ")")?)? ":" ownedSpecification=SpecificationCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//(name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS ")")?)? ":" ownedSpecification=SpecificationCS
 		public Group getGroup() { return cGroup; }
@@ -239,10 +251,11 @@
 		private final RuleCall cClassifierContextDeclCSParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		private final RuleCall cOperationContextDeclCSParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
 		
-		//ContextDeclCS:
+		/// *
+		// * A Context declaration can be a Classifier, Operation of Property Context declaration.
+		// * / ContextDeclCS:
 		//	PropertyContextDeclCS | ClassifierContextDeclCS | OperationContextDeclCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//PropertyContextDeclCS | ClassifierContextDeclCS | OperationContextDeclCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -263,10 +276,11 @@
 		private final RuleCall cDefOperationCSParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cDefPropertyCSParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		
-		//DefCS:
+		/// *
+		// * A definition can be an, Operation or Property definition.
+		// * / DefCS:
 		//	DefOperationCS | DefPropertyCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//DefOperationCS | DefPropertyCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -306,12 +320,21 @@
 		private final Assignment cOwnedSpecificationAssignment_12 = (Assignment)cGroup.eContents().get(12);
 		private final RuleCall cOwnedSpecificationSpecificationCSParserRuleCall_12_0 = (RuleCall)cOwnedSpecificationAssignment_12.eContents().get(0);
 		
+		/// *
+		// * An operation definition provides an additional operation for its classifier context.
+		// * 
+		// * oclText[static def redundantName: isEven(i : Integer) : Boolean = i mod 2 = 0]
+		// * 
+		// * comprises at least an operation name, return type and an OCL expression that evaluates the operation value.
+		// * The operation may have parameters and may be declared static in which case there is no oclText[self].
+		// * 
+		// * For compatibility with invariants the definition may have a name that is never used.
+		// * /
 		//DefOperationCS:
 		//	isStatic?="static"? "def" UnrestrictedName? ":" ownedSignature=TemplateSignatureCS? name=UnrestrictedName "("
 		//	(ownedParameters+=DefParameterCS ("," ownedParameters+=DefParameterCS)*)? ")" ":" ownedType=TypeExpCS? "="
 		//	ownedSpecification=SpecificationCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//isStatic?="static"? "def" UnrestrictedName? ":" ownedSignature=TemplateSignatureCS? name=UnrestrictedName "("
 		//(ownedParameters+=DefParameterCS ("," ownedParameters+=DefParameterCS)*)? ")" ":" ownedType=TypeExpCS? "="
@@ -402,8 +425,7 @@
 		
 		//DefParameterCS returns base::ParameterCS:
 		//	name=UnrestrictedName ":" ownedType=TypeExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name=UnrestrictedName ":" ownedType=TypeExpCS
 		public Group getGroup() { return cGroup; }
@@ -441,11 +463,20 @@
 		private final Assignment cOwnedSpecificationAssignment_8 = (Assignment)cGroup.eContents().get(8);
 		private final RuleCall cOwnedSpecificationSpecificationCSParserRuleCall_8_0 = (RuleCall)cOwnedSpecificationAssignment_8.eContents().get(0);
 		
+		/// *
+		// * A property definition provides an additional property for its classifier context.
+		// * 
+		// * oclText[static def redundantName: upperCaseName : Boolean = name.toUpperCase()]
+		// * 
+		// * comprises at least a property name, type and an OCL expression that evaluates the property value.
+		// * The property may be declared static in which case there is no oclText[self].
+		// * 
+		// * For compatibility with invariants the definition may have a name that is never used.
+		// * /
 		//DefPropertyCS:
 		//	isStatic?="static"? "def" UnrestrictedName? ":" name=UnrestrictedName ":" ownedType=TypeExpCS "="
 		//	ownedSpecification=SpecificationCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//isStatic?="static"? "def" UnrestrictedName? ":" name=UnrestrictedName ":" ownedType=TypeExpCS "="
 		//ownedSpecification=SpecificationCS
@@ -506,8 +537,7 @@
 		
 		//ImportCS returns base::ImportCS:
 		//	"import" (name=Identifier ":")? ownedPathName=URIPathNameCS isAll?="::*"?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"import" (name=Identifier ":")? ownedPathName=URIPathNameCS isAll?="::*"?
 		public Group getGroup() { return cGroup; }
@@ -550,8 +580,7 @@
 		
 		//IncludeCS:
 		//	"include" referredNamespace=[pivot::Namespace|URI];
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"include" referredNamespace=[pivot::Namespace|URI]
 		public Group getGroup() { return cGroup; }
@@ -579,8 +608,7 @@
 		
 		//LibraryCS returns base::LibraryCS:
 		//	"library" referredPackage=[pivot::Package|URI];
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"library" referredPackage=[pivot::Package|URI]
 		public Group getGroup() { return cGroup; }
@@ -634,12 +662,27 @@
 		private final Assignment cOwnedBodiesAssignment_8_2_3 = (Assignment)cGroup_8_2.eContents().get(3);
 		private final RuleCall cOwnedBodiesSpecificationCSParserRuleCall_8_2_3_0 = (RuleCall)cOwnedBodiesAssignment_8_2_3.eContents().get(0);
 		
+		/// *
+		// * An operation context declaration complements an existing operation with additional details.
+		// * 
+		// * oclText[context (T) Stack::pop() : T]
+		// * oclText[pre NotEmptyPop: size() > 0]
+		// * oclText[post: size()@pre = size() + 1]
+		// * 
+		// * The operation declaration comprises at least an operation name, which must be qualified with at least a
+		// * class name. If used outside a package declaration, package name qualification is also needed. 
+		// * If the return type is omitted OclVoid is used.
+		// * The operation may also have operation parameters and template parameters.
+		// * The declaration may be followed by any number of preconditions,
+		// * and/or postconditions. It may also be followed by a body expression that defines the evaluation. 
+		// * 
+		// * For compatibility with invariants the body expression may have a name that is never used.
+		// * /
 		//OperationContextDeclCS:
 		//	"context" ownedSignature=TemplateSignatureCS? ownedPathName=PathNameCS "(" (ownedParameters+=ParameterCS (","
 		//	ownedParameters+=ParameterCS)*)? ")" ":" ownedType=TypeExpCS? ("pre" ownedPreconditions+=ConstraintCS | "post"
 		//	ownedPostconditions+=ConstraintCS | "body" UnrestrictedName? ":" ownedBodies+=SpecificationCS)*;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"context" ownedSignature=TemplateSignatureCS? ownedPathName=PathNameCS "(" (ownedParameters+=ParameterCS (","
 		//ownedParameters+=ParameterCS)*)? ")" ":" ownedType=TypeExpCS? ("pre" ownedPreconditions+=ConstraintCS | "post"
@@ -760,8 +803,7 @@
 		
 		//PackageDeclarationCS:
 		//	"package" ownedPathName=PathNameCS ("inv" ownedInvariants+=ConstraintCS)* ownedContexts+=ContextDeclCS* "endpackage";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"package" ownedPathName=PathNameCS ("inv" ownedInvariants+=ConstraintCS)* ownedContexts+=ContextDeclCS* "endpackage"
 		public Group getGroup() { return cGroup; }
@@ -809,8 +851,7 @@
 		
 		//ParameterCS returns base::ParameterCS:
 		//	(name=UnrestrictedName ":")? ownedType=TypeExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//(name=UnrestrictedName ":")? ownedType=TypeExpCS
 		public Group getGroup() { return cGroup; }
@@ -854,13 +895,33 @@
 		private final Assignment cOwnedDefaultExpressionsAssignment_4_1_2 = (Assignment)cGroup_4_1.eContents().get(2);
 		private final RuleCall cOwnedDefaultExpressionsSpecificationCSParserRuleCall_4_1_2_0 = (RuleCall)cOwnedDefaultExpressionsAssignment_4_1_2.eContents().get(0);
 		
+		/// *
+		// * A property context declaration complements an existing property with additional details.
+		// * 
+		// * oclText[context (T) Stack::isEmpty : Boolean]
+		// * oclText[derive IsEmpty: size() = 0]
+		// * 
+		// * The property declaration comprises at least a property name and type.
+		// * The type must be qualified with at least a class name.
+		// * If used outside a package declaration, package name qualification is also needed. 
+		// * The declaration may be followed by a derive constraint and/or an init expression.
+		// * 
+		// * A derive constraint provides an alternate mechanism for defining a class invariant;
+		// * the only difference is that the property is identified as a constrainedElement. As an
+		// * invariant the constraint provides an OCL expression that should always be true.
+		// * 
+		// * For a non-derived property, an init expression defines the value to be assigned to the property
+		// * when its containing object is first created. 
+		// * 
+		// * For a derived property, an init expression defines the evaluation of the property, which
+		// * may vary from access to access even for read-only properties. 
+		// * /
 		//PropertyContextDeclCS:
-		//	"context" ownedPathName=PathNameCS ":" ownedType=TypeExpCS? ("derive" ownedDerivedInvariants+=ConstraintCS | "init"
+		//	"context" ownedPathName=PathNameCS ":" ownedType=TypeExpCS ("derive" ownedDerivedInvariants+=ConstraintCS | "init"
 		//	":" ownedDefaultExpressions+=SpecificationCS)*;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
-		//"context" ownedPathName=PathNameCS ":" ownedType=TypeExpCS? ("derive" ownedDerivedInvariants+=ConstraintCS | "init" ":"
+		//"context" ownedPathName=PathNameCS ":" ownedType=TypeExpCS ("derive" ownedDerivedInvariants+=ConstraintCS | "init" ":"
 		//ownedDefaultExpressions+=SpecificationCS)*
 		public Group getGroup() { return cGroup; }
 
@@ -876,7 +937,7 @@
 		//":"
 		public Keyword getColonKeyword_2() { return cColonKeyword_2; }
 
-		//ownedType=TypeExpCS?
+		//ownedType=TypeExpCS
 		public Assignment getOwnedTypeAssignment_3() { return cOwnedTypeAssignment_3; }
 
 		//TypeExpCS
@@ -923,8 +984,7 @@
 		
 		//SpecificationCS returns essentialocl::ExpSpecificationCS:
 		//	ownedExpression=ExpCS | exprString=UNQUOTED_STRING;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedExpression=ExpCS | exprString=UNQUOTED_STRING
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -972,8 +1032,7 @@
 		//base::TemplateSignatureCS:
 		//	"(" ownedParameters+=TypeParameterCS ("," ownedParameters+=TypeParameterCS)* ")" | "<"
 		//	ownedParameters+=TypeParameterCS ("," ownedParameters+=TypeParameterCS)* ">";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"(" ownedParameters+=TypeParameterCS ("," ownedParameters+=TypeParameterCS)* ")" | "<" ownedParameters+=TypeParameterCS
 		//("," ownedParameters+=TypeParameterCS)* ">"
@@ -1042,8 +1101,7 @@
 		
 		//TypedRefCS returns base::TypedRefCS:
 		//	TypeLiteralCS | TypedTypeRefCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//TypeLiteralCS | TypedTypeRefCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -1077,8 +1135,7 @@
 		//
 		//	//| 'inv'
 		// | "import" | "include" | "library";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//EssentialOCLUnrestrictedName //| 'body'
 		// //| 'context'
@@ -1119,8 +1176,7 @@
 		// NavigatingArgExpCS returns
 		//essentialocl::ExpCS:
 		//	{OCLMessageArgCS} "?" | ExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{OCLMessageArgCS} "?" | ExpCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -1146,8 +1202,7 @@
 		
 		//NavigationOperatorName:
 		//	EssentialOCLNavigationOperatorName | CompleteOCLNavigationOperatorName;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//EssentialOCLNavigationOperatorName | CompleteOCLNavigationOperatorName
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -1176,8 +1231,7 @@
 		//PrimitiveTypeIdentifier:
 		//	"Boolean" | "Integer" | "Real" | "String" | "UnlimitedNatural" | "OclAny" | "OclInvalid" | "OclMessage" | "OclState"
 		//	| "OclVoid";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"Boolean" | "Integer" | "Real" | "String" | "UnlimitedNatural" | "OclAny" | "OclInvalid" | "OclMessage" | "OclState" |
 		//"OclVoid"
@@ -1291,7 +1345,6 @@
 		return grammar;
 	}
 	
-	
 	@Override
 	public Grammar getGrammar() {
 		return grammar;
@@ -1303,8 +1356,15 @@
 	}
 
 	
-	////generate completeOCL "http://www.eclipse.org/ocl/examples/xtext/completeocl/CompleteOCL"
-	// CompleteOCLDocumentCS:
+	/// *
+	// * A Complete OCL document comprises
+	// * bullet[model imports for referenced and complemented models]
+	// * bullet[includes for additional Complete OCL documents]
+	// * bullet[libraries to augment or override the OCL Standard Library]
+	// * bullet[package declarations for package-grouped declarations]
+	// * bullet[context declarations for independent declarations]
+	// * /
+	//CompleteOCLDocumentCS:
 	//	(ownedImports+=ImportCS | ownedIncludes+=IncludeCS | ownedLibraries+=LibraryCS)* (ownedPackages+=PackageDeclarationCS
 	//	| ownedContexts+=ContextDeclCS)*;
 	public CompleteOCLDocumentCSElements getCompleteOCLDocumentCSAccess() {
@@ -1344,6 +1404,15 @@
 		return getClassifierContextDeclCSAccess().getRule();
 	}
 
+	/// *
+	// * A Constraint such as 
+	// * 
+	// * oclText[IsNull('should be null') : self = null]
+	// * 
+	// * comprises at least the OCL specification of the constraint. The constraint may
+	// * additionally have a name which may be followed by a parenthesized expression defining an OCL
+	// * expression to be evaluated to provide an error message.
+	// * /
 	//ConstraintCS returns base::ConstraintCS:
 	//	(name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS ")")?)? ":" ownedSpecification=SpecificationCS;
 	public ConstraintCSElements getConstraintCSAccess() {
@@ -1354,7 +1423,9 @@
 		return getConstraintCSAccess().getRule();
 	}
 
-	//ContextDeclCS:
+	/// *
+	// * A Context declaration can be a Classifier, Operation of Property Context declaration.
+	// * / ContextDeclCS:
 	//	PropertyContextDeclCS | ClassifierContextDeclCS | OperationContextDeclCS;
 	public ContextDeclCSElements getContextDeclCSAccess() {
 		return pContextDeclCS;
@@ -1364,7 +1435,9 @@
 		return getContextDeclCSAccess().getRule();
 	}
 
-	//DefCS:
+	/// *
+	// * A definition can be an, Operation or Property definition.
+	// * / DefCS:
 	//	DefOperationCS | DefPropertyCS;
 	public DefCSElements getDefCSAccess() {
 		return pDefCS;
@@ -1374,6 +1447,16 @@
 		return getDefCSAccess().getRule();
 	}
 
+	/// *
+	// * An operation definition provides an additional operation for its classifier context.
+	// * 
+	// * oclText[static def redundantName: isEven(i : Integer) : Boolean = i mod 2 = 0]
+	// * 
+	// * comprises at least an operation name, return type and an OCL expression that evaluates the operation value.
+	// * The operation may have parameters and may be declared static in which case there is no oclText[self].
+	// * 
+	// * For compatibility with invariants the definition may have a name that is never used.
+	// * /
 	//DefOperationCS:
 	//	isStatic?="static"? "def" UnrestrictedName? ":" ownedSignature=TemplateSignatureCS? name=UnrestrictedName "("
 	//	(ownedParameters+=DefParameterCS ("," ownedParameters+=DefParameterCS)*)? ")" ":" ownedType=TypeExpCS? "="
@@ -1396,6 +1479,16 @@
 		return getDefParameterCSAccess().getRule();
 	}
 
+	/// *
+	// * A property definition provides an additional property for its classifier context.
+	// * 
+	// * oclText[static def redundantName: upperCaseName : Boolean = name.toUpperCase()]
+	// * 
+	// * comprises at least a property name, type and an OCL expression that evaluates the property value.
+	// * The property may be declared static in which case there is no oclText[self].
+	// * 
+	// * For compatibility with invariants the definition may have a name that is never used.
+	// * /
 	//DefPropertyCS:
 	//	isStatic?="static"? "def" UnrestrictedName? ":" name=UnrestrictedName ":" ownedType=TypeExpCS "="
 	//	ownedSpecification=SpecificationCS;
@@ -1437,6 +1530,22 @@
 		return getLibraryCSAccess().getRule();
 	}
 
+	/// *
+	// * An operation context declaration complements an existing operation with additional details.
+	// * 
+	// * oclText[context (T) Stack::pop() : T]
+	// * oclText[pre NotEmptyPop: size() > 0]
+	// * oclText[post: size()@pre = size() + 1]
+	// * 
+	// * The operation declaration comprises at least an operation name, which must be qualified with at least a
+	// * class name. If used outside a package declaration, package name qualification is also needed. 
+	// * If the return type is omitted OclVoid is used.
+	// * The operation may also have operation parameters and template parameters.
+	// * The declaration may be followed by any number of preconditions,
+	// * and/or postconditions. It may also be followed by a body expression that defines the evaluation. 
+	// * 
+	// * For compatibility with invariants the body expression may have a name that is never used.
+	// * /
 	//OperationContextDeclCS:
 	//	"context" ownedSignature=TemplateSignatureCS? ownedPathName=PathNameCS "(" (ownedParameters+=ParameterCS (","
 	//	ownedParameters+=ParameterCS)*)? ")" ":" ownedType=TypeExpCS? ("pre" ownedPreconditions+=ConstraintCS | "post"
@@ -1469,8 +1578,29 @@
 		return getParameterCSAccess().getRule();
 	}
 
+	/// *
+	// * A property context declaration complements an existing property with additional details.
+	// * 
+	// * oclText[context (T) Stack::isEmpty : Boolean]
+	// * oclText[derive IsEmpty: size() = 0]
+	// * 
+	// * The property declaration comprises at least a property name and type.
+	// * The type must be qualified with at least a class name.
+	// * If used outside a package declaration, package name qualification is also needed. 
+	// * The declaration may be followed by a derive constraint and/or an init expression.
+	// * 
+	// * A derive constraint provides an alternate mechanism for defining a class invariant;
+	// * the only difference is that the property is identified as a constrainedElement. As an
+	// * invariant the constraint provides an OCL expression that should always be true.
+	// * 
+	// * For a non-derived property, an init expression defines the value to be assigned to the property
+	// * when its containing object is first created. 
+	// * 
+	// * For a derived property, an init expression defines the evaluation of the property, which
+	// * may vary from access to access even for read-only properties. 
+	// * /
 	//PropertyContextDeclCS:
-	//	"context" ownedPathName=PathNameCS ":" ownedType=TypeExpCS? ("derive" ownedDerivedInvariants+=ConstraintCS | "init"
+	//	"context" ownedPathName=PathNameCS ":" ownedType=TypeExpCS ("derive" ownedDerivedInvariants+=ConstraintCS | "init"
 	//	":" ownedDefaultExpressions+=SpecificationCS)*;
 	public PropertyContextDeclCSElements getPropertyContextDeclCSAccess() {
 		return pPropertyContextDeclCS;
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/validation/AbstractCompleteOCLJavaValidator.java b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/validation/AbstractCompleteOCLJavaValidator.java
index 20a8bba..9ddd2a0 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/validation/AbstractCompleteOCLJavaValidator.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl/src-gen/org/eclipse/ocl/xtext/completeocl/validation/AbstractCompleteOCLJavaValidator.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.completeocl.validation;
  
 import java.util.ArrayList;
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/AbstractEssentialOCLUiModule.java b/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/AbstractEssentialOCLUiModule.java
index caa9b6b..e8c5b28 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/AbstractEssentialOCLUiModule.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/AbstractEssentialOCLUiModule.java
@@ -4,14 +4,13 @@
  */
 package org.eclipse.ocl.xtext.essentialocl.ui;
 
-import org.eclipse.xtext.ui.DefaultUiModule;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
  * Manual modifications go to {org.eclipse.ocl.xtext.essentialocl.ui.EssentialOCLUiModule}
  */
 @SuppressWarnings("all")
-public abstract class AbstractEssentialOCLUiModule extends DefaultUiModule {
+public abstract class AbstractEssentialOCLUiModule extends org.eclipse.xtext.ui.DefaultUiModule {
 	
 	public AbstractEssentialOCLUiModule(AbstractUIPlugin plugin) {
 		super(plugin);
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/AbstractEssentialOCLProposalProvider.java b/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/AbstractEssentialOCLProposalProvider.java
index 5a24977..1a34dfa 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/AbstractEssentialOCLProposalProvider.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/AbstractEssentialOCLProposalProvider.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.essentialocl.ui.contentassist;
 
 import org.eclipse.emf.ecore.EObject;
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/antlr/EssentialOCLParser.java b/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/antlr/EssentialOCLParser.java
index 4e58869..8b5526a 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/antlr/EssentialOCLParser.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/antlr/EssentialOCLParser.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.essentialocl.ui.contentassist.antlr;
 
 import java.util.Collection;
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/antlr/internal/InternalEssentialOCL.g b/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/antlr/internal/InternalEssentialOCL.g
index 104dd44..3f2fb64 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/antlr/internal/InternalEssentialOCL.g
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/antlr/internal/InternalEssentialOCL.g
@@ -1,12229 +1,12229 @@
-/*

-* generated by Xtext

-*/

-grammar InternalEssentialOCL;

-

-options {

-	superClass=AbstractInternalContentAssistParser;

-	backtrack=true;

-	

-}

-

-@lexer::header {

-package org.eclipse.ocl.xtext.essentialocl.ui.contentassist.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.ui.editor.contentassist.antlr.internal.Lexer;

-}

-

-@parser::header {

-package org.eclipse.ocl.xtext.essentialocl.ui.contentassist.antlr.internal; 

-

-import java.io.InputStream;

-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.XtextTokenStream;

-import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;

-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;

-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;

-import org.eclipse.ocl.xtext.essentialocl.services.EssentialOCLGrammarAccess;

-

-}

-

-@parser::members {

- 

- 	private EssentialOCLGrammarAccess grammarAccess;

- 	

-    public void setGrammarAccess(EssentialOCLGrammarAccess grammarAccess) {

-    	this.grammarAccess = grammarAccess;

-    }

-    

-    @Override

-    protected Grammar getGrammar() {

-    	return grammarAccess.getGrammar();

-    }

-    

-    @Override

-    protected String getValueForTokenName(String tokenName) {

-    	return tokenName;

-    }

-

-}

-

-

-

-

-// Entry rule entryRuleModel

-entryRuleModel 

-:

-{ before(grammarAccess.getModelRule()); }

-	 ruleModel

-{ after(grammarAccess.getModelRule()); } 

-	 EOF 

-;

-

-// Rule Model

-ruleModel

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getModelAccess().getOwnedExpressionAssignment()); }

-(rule__Model__OwnedExpressionAssignment)

-{ after(grammarAccess.getModelAccess().getOwnedExpressionAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnaryOperatorName

-entryRuleEssentialOCLUnaryOperatorName 

-:

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); }

-	 ruleEssentialOCLUnaryOperatorName

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLUnaryOperatorName

-ruleEssentialOCLUnaryOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }

-(rule__EssentialOCLUnaryOperatorName__Alternatives)

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLInfixOperatorName

-entryRuleEssentialOCLInfixOperatorName 

-:

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameRule()); }

-	 ruleEssentialOCLInfixOperatorName

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLInfixOperatorName

-ruleEssentialOCLInfixOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }

-(rule__EssentialOCLInfixOperatorName__Alternatives)

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLNavigationOperatorName

-entryRuleEssentialOCLNavigationOperatorName 

-:

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); }

-	 ruleEssentialOCLNavigationOperatorName

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLNavigationOperatorName

-ruleEssentialOCLNavigationOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }

-(rule__EssentialOCLNavigationOperatorName__Alternatives)

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleBinaryOperatorName

-entryRuleBinaryOperatorName 

-:

-{ before(grammarAccess.getBinaryOperatorNameRule()); }

-	 ruleBinaryOperatorName

-{ after(grammarAccess.getBinaryOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule BinaryOperatorName

-ruleBinaryOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }

-(rule__BinaryOperatorName__Alternatives)

-{ after(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleInfixOperatorName

-entryRuleInfixOperatorName 

-:

-{ before(grammarAccess.getInfixOperatorNameRule()); }

-	 ruleInfixOperatorName

-{ after(grammarAccess.getInfixOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule InfixOperatorName

-ruleInfixOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }

-	ruleEssentialOCLInfixOperatorName

-{ after(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigationOperatorName

-entryRuleNavigationOperatorName 

-:

-{ before(grammarAccess.getNavigationOperatorNameRule()); }

-	 ruleNavigationOperatorName

-{ after(grammarAccess.getNavigationOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule NavigationOperatorName

-ruleNavigationOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); }

-	ruleEssentialOCLNavigationOperatorName

-{ after(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnaryOperatorName

-entryRuleUnaryOperatorName 

-:

-{ before(grammarAccess.getUnaryOperatorNameRule()); }

-	 ruleUnaryOperatorName

-{ after(grammarAccess.getUnaryOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule UnaryOperatorName

-ruleUnaryOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }

-	ruleEssentialOCLUnaryOperatorName

-{ after(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLUnrestrictedName

-entryRuleEssentialOCLUnrestrictedName 

-:

-{ before(grammarAccess.getEssentialOCLUnrestrictedNameRule()); }

-	 ruleEssentialOCLUnrestrictedName

-{ after(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLUnrestrictedName

-ruleEssentialOCLUnrestrictedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }

-	ruleIdentifier

-{ after(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnrestrictedName

-entryRuleUnrestrictedName 

-:

-{ before(grammarAccess.getUnrestrictedNameRule()); }

-	 ruleUnrestrictedName

-{ after(grammarAccess.getUnrestrictedNameRule()); } 

-	 EOF 

-;

-

-// Rule UnrestrictedName

-ruleUnrestrictedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall()); }

-	ruleEssentialOCLUnrestrictedName

-{ after(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLUnreservedName

-entryRuleEssentialOCLUnreservedName 

-:

-{ before(grammarAccess.getEssentialOCLUnreservedNameRule()); }

-	 ruleEssentialOCLUnreservedName

-{ after(grammarAccess.getEssentialOCLUnreservedNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLUnreservedName

-ruleEssentialOCLUnreservedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }

-(rule__EssentialOCLUnreservedName__Alternatives)

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnreservedName

-entryRuleUnreservedName 

-:

-{ before(grammarAccess.getUnreservedNameRule()); }

-	 ruleUnreservedName

-{ after(grammarAccess.getUnreservedNameRule()); } 

-	 EOF 

-;

-

-// Rule UnreservedName

-ruleUnreservedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }

-	ruleEssentialOCLUnreservedName

-{ after(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-// Entry rule entryRuleURIFirstPathElementCS

-entryRuleURIFirstPathElementCS 

-:

-{ before(grammarAccess.getURIFirstPathElementCSRule()); }

-	 ruleURIFirstPathElementCS

-{ after(grammarAccess.getURIFirstPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule URIFirstPathElementCS

-ruleURIFirstPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }

-(rule__URIFirstPathElementCS__Alternatives)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimitiveTypeIdentifier

-entryRulePrimitiveTypeIdentifier 

-:

-{ before(grammarAccess.getPrimitiveTypeIdentifierRule()); }

-	 rulePrimitiveTypeIdentifier

-{ after(grammarAccess.getPrimitiveTypeIdentifierRule()); } 

-	 EOF 

-;

-

-// Rule PrimitiveTypeIdentifier

-rulePrimitiveTypeIdentifier

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }

-(rule__PrimitiveTypeIdentifier__Alternatives)

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimitiveTypeCS

-entryRulePrimitiveTypeCS 

-:

-{ before(grammarAccess.getPrimitiveTypeCSRule()); }

-	 rulePrimitiveTypeCS

-{ after(grammarAccess.getPrimitiveTypeCSRule()); } 

-	 EOF 

-;

-

-// Rule PrimitiveTypeCS

-rulePrimitiveTypeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }

-(rule__PrimitiveTypeCS__NameAssignment)

-{ after(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionTypeIdentifier

-entryRuleCollectionTypeIdentifier 

-:

-{ before(grammarAccess.getCollectionTypeIdentifierRule()); }

-	 ruleCollectionTypeIdentifier

-{ after(grammarAccess.getCollectionTypeIdentifierRule()); } 

-	 EOF 

-;

-

-// Rule CollectionTypeIdentifier

-ruleCollectionTypeIdentifier

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }

-(rule__CollectionTypeIdentifier__Alternatives)

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionTypeCS

-entryRuleCollectionTypeCS 

-:

-{ before(grammarAccess.getCollectionTypeCSRule()); }

-	 ruleCollectionTypeCS

-{ after(grammarAccess.getCollectionTypeCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionTypeCS

-ruleCollectionTypeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getGroup()); }

-(rule__CollectionTypeCS__Group__0)

-{ after(grammarAccess.getCollectionTypeCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTupleTypeCS

-entryRuleTupleTypeCS 

-:

-{ before(grammarAccess.getTupleTypeCSRule()); }

-	 ruleTupleTypeCS

-{ after(grammarAccess.getTupleTypeCSRule()); } 

-	 EOF 

-;

-

-// Rule TupleTypeCS

-ruleTupleTypeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup()); }

-(rule__TupleTypeCS__Group__0)

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTuplePartCS

-entryRuleTuplePartCS 

-:

-{ before(grammarAccess.getTuplePartCSRule()); }

-	 ruleTuplePartCS

-{ after(grammarAccess.getTuplePartCSRule()); } 

-	 EOF 

-;

-

-// Rule TuplePartCS

-ruleTuplePartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getGroup()); }

-(rule__TuplePartCS__Group__0)

-{ after(grammarAccess.getTuplePartCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionLiteralExpCS

-entryRuleCollectionLiteralExpCS 

-:

-{ before(grammarAccess.getCollectionLiteralExpCSRule()); }

-	 ruleCollectionLiteralExpCS

-{ after(grammarAccess.getCollectionLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionLiteralExpCS

-ruleCollectionLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }

-(rule__CollectionLiteralExpCS__Group__0)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionLiteralPartCS

-entryRuleCollectionLiteralPartCS 

-:

-{ before(grammarAccess.getCollectionLiteralPartCSRule()); }

-	 ruleCollectionLiteralPartCS

-{ after(grammarAccess.getCollectionLiteralPartCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionLiteralPartCS

-ruleCollectionLiteralPartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }

-(rule__CollectionLiteralPartCS__Alternatives)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionPatternCS

-entryRuleCollectionPatternCS 

-:

-{ before(grammarAccess.getCollectionPatternCSRule()); }

-	 ruleCollectionPatternCS

-{ after(grammarAccess.getCollectionPatternCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionPatternCS

-ruleCollectionPatternCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup()); }

-(rule__CollectionPatternCS__Group__0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleConstructorPartCS

-entryRuleConstructorPartCS 

-:

-{ before(grammarAccess.getConstructorPartCSRule()); }

-	 ruleConstructorPartCS

-{ after(grammarAccess.getConstructorPartCSRule()); } 

-	 EOF 

-;

-

-// Rule ConstructorPartCS

-ruleConstructorPartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getGroup()); }

-(rule__ConstructorPartCS__Group__0)

-{ after(grammarAccess.getConstructorPartCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePatternExpCS

-entryRulePatternExpCS 

-:

-{ before(grammarAccess.getPatternExpCSRule()); }

-	 rulePatternExpCS

-{ after(grammarAccess.getPatternExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PatternExpCS

-rulePatternExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getGroup()); }

-(rule__PatternExpCS__Group__0)

-{ after(grammarAccess.getPatternExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLambdaLiteralExpCS

-entryRuleLambdaLiteralExpCS 

-:

-{ before(grammarAccess.getLambdaLiteralExpCSRule()); }

-	 ruleLambdaLiteralExpCS

-{ after(grammarAccess.getLambdaLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule LambdaLiteralExpCS

-ruleLambdaLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }

-(rule__LambdaLiteralExpCS__Group__0)

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimitiveLiteralExpCS

-entryRulePrimitiveLiteralExpCS 

-:

-{ before(grammarAccess.getPrimitiveLiteralExpCSRule()); }

-	 rulePrimitiveLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrimitiveLiteralExpCS

-rulePrimitiveLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }

-(rule__PrimitiveLiteralExpCS__Alternatives)

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTupleLiteralExpCS

-entryRuleTupleLiteralExpCS 

-:

-{ before(grammarAccess.getTupleLiteralExpCSRule()); }

-	 ruleTupleLiteralExpCS

-{ after(grammarAccess.getTupleLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TupleLiteralExpCS

-ruleTupleLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }

-(rule__TupleLiteralExpCS__Group__0)

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTupleLiteralPartCS

-entryRuleTupleLiteralPartCS 

-:

-{ before(grammarAccess.getTupleLiteralPartCSRule()); }

-	 ruleTupleLiteralPartCS

-{ after(grammarAccess.getTupleLiteralPartCSRule()); } 

-	 EOF 

-;

-

-// Rule TupleLiteralPartCS

-ruleTupleLiteralPartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }

-(rule__TupleLiteralPartCS__Group__0)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNumberLiteralExpCS

-entryRuleNumberLiteralExpCS 

-:

-{ before(grammarAccess.getNumberLiteralExpCSRule()); }

-	 ruleNumberLiteralExpCS

-{ after(grammarAccess.getNumberLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NumberLiteralExpCS

-ruleNumberLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }

-(rule__NumberLiteralExpCS__SymbolAssignment)

-{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleStringLiteralExpCS

-entryRuleStringLiteralExpCS 

-:

-{ before(grammarAccess.getStringLiteralExpCSRule()); }

-	 ruleStringLiteralExpCS

-{ after(grammarAccess.getStringLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule StringLiteralExpCS

-ruleStringLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-(

-{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-(rule__StringLiteralExpCS__SegmentsAssignment)

-{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-)

-(

-{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-(rule__StringLiteralExpCS__SegmentsAssignment)*

-{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-)

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleBooleanLiteralExpCS

-entryRuleBooleanLiteralExpCS 

-:

-{ before(grammarAccess.getBooleanLiteralExpCSRule()); }

-	 ruleBooleanLiteralExpCS

-{ after(grammarAccess.getBooleanLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule BooleanLiteralExpCS

-ruleBooleanLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }

-(rule__BooleanLiteralExpCS__Alternatives)

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnlimitedNaturalLiteralExpCS

-entryRuleUnlimitedNaturalLiteralExpCS 

-:

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }

-	 ruleUnlimitedNaturalLiteralExpCS

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule UnlimitedNaturalLiteralExpCS

-ruleUnlimitedNaturalLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }

-(rule__UnlimitedNaturalLiteralExpCS__Group__0)

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleInvalidLiteralExpCS

-entryRuleInvalidLiteralExpCS 

-:

-{ before(grammarAccess.getInvalidLiteralExpCSRule()); }

-	 ruleInvalidLiteralExpCS

-{ after(grammarAccess.getInvalidLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule InvalidLiteralExpCS

-ruleInvalidLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }

-(rule__InvalidLiteralExpCS__Group__0)

-{ after(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNullLiteralExpCS

-entryRuleNullLiteralExpCS 

-:

-{ before(grammarAccess.getNullLiteralExpCSRule()); }

-	 ruleNullLiteralExpCS

-{ after(grammarAccess.getNullLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NullLiteralExpCS

-ruleNullLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }

-(rule__NullLiteralExpCS__Group__0)

-{ after(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeLiteralCS

-entryRuleTypeLiteralCS 

-:

-{ before(grammarAccess.getTypeLiteralCSRule()); }

-	 ruleTypeLiteralCS

-{ after(grammarAccess.getTypeLiteralCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeLiteralCS

-ruleTypeLiteralCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }

-(rule__TypeLiteralCS__Alternatives)

-{ after(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeLiteralWithMultiplicityCS

-entryRuleTypeLiteralWithMultiplicityCS 

-:

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }

-	 ruleTypeLiteralWithMultiplicityCS

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeLiteralWithMultiplicityCS

-ruleTypeLiteralWithMultiplicityCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }

-(rule__TypeLiteralWithMultiplicityCS__Group__0)

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeLiteralExpCS

-entryRuleTypeLiteralExpCS 

-:

-{ before(grammarAccess.getTypeLiteralExpCSRule()); }

-	 ruleTypeLiteralExpCS

-{ after(grammarAccess.getTypeLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeLiteralExpCS

-ruleTypeLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }

-(rule__TypeLiteralExpCS__OwnedTypeAssignment)

-{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeNameExpCS

-entryRuleTypeNameExpCS 

-:

-{ before(grammarAccess.getTypeNameExpCSRule()); }

-	 ruleTypeNameExpCS

-{ after(grammarAccess.getTypeNameExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeNameExpCS

-ruleTypeNameExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getGroup()); }

-(rule__TypeNameExpCS__Group__0)

-{ after(grammarAccess.getTypeNameExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeExpCS

-entryRuleTypeExpCS 

-:

-{ before(grammarAccess.getTypeExpCSRule()); }

-	 ruleTypeExpCS

-{ after(grammarAccess.getTypeExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeExpCS

-ruleTypeExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getGroup()); }

-(rule__TypeExpCS__Group__0)

-{ after(grammarAccess.getTypeExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleExpCS

-entryRuleExpCS 

-:

-{ before(grammarAccess.getExpCSRule()); }

-	 ruleExpCS

-{ after(grammarAccess.getExpCSRule()); } 

-	 EOF 

-;

-

-// Rule ExpCS

-ruleExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getExpCSAccess().getAlternatives()); }

-(rule__ExpCS__Alternatives)

-{ after(grammarAccess.getExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrefixedLetExpCS

-entryRulePrefixedLetExpCS 

-:

-{ before(grammarAccess.getPrefixedLetExpCSRule()); }

-	 rulePrefixedLetExpCS

-{ after(grammarAccess.getPrefixedLetExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrefixedLetExpCS

-rulePrefixedLetExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }

-(rule__PrefixedLetExpCS__Alternatives)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrefixedPrimaryExpCS

-entryRulePrefixedPrimaryExpCS 

-:

-{ before(grammarAccess.getPrefixedPrimaryExpCSRule()); }

-	 rulePrefixedPrimaryExpCS

-{ after(grammarAccess.getPrefixedPrimaryExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrefixedPrimaryExpCS

-rulePrefixedPrimaryExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }

-(rule__PrefixedPrimaryExpCS__Alternatives)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimaryExpCS

-entryRulePrimaryExpCS 

-:

-{ before(grammarAccess.getPrimaryExpCSRule()); }

-	 rulePrimaryExpCS

-{ after(grammarAccess.getPrimaryExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrimaryExpCS

-rulePrimaryExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }

-(rule__PrimaryExpCS__Alternatives)

-{ after(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNameExpCS

-entryRuleNameExpCS 

-:

-{ before(grammarAccess.getNameExpCSRule()); }

-	 ruleNameExpCS

-{ after(grammarAccess.getNameExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NameExpCS

-ruleNameExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNameExpCSAccess().getGroup()); }

-(rule__NameExpCS__Group__0)

-{ after(grammarAccess.getNameExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCurlyBracketedClauseCS

-entryRuleCurlyBracketedClauseCS 

-:

-{ before(grammarAccess.getCurlyBracketedClauseCSRule()); }

-	 ruleCurlyBracketedClauseCS

-{ after(grammarAccess.getCurlyBracketedClauseCSRule()); } 

-	 EOF 

-;

-

-// Rule CurlyBracketedClauseCS

-ruleCurlyBracketedClauseCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }

-(rule__CurlyBracketedClauseCS__Group__0)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleRoundBracketedClauseCS

-entryRuleRoundBracketedClauseCS 

-:

-{ before(grammarAccess.getRoundBracketedClauseCSRule()); }

-	 ruleRoundBracketedClauseCS

-{ after(grammarAccess.getRoundBracketedClauseCSRule()); } 

-	 EOF 

-;

-

-// Rule RoundBracketedClauseCS

-ruleRoundBracketedClauseCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }

-(rule__RoundBracketedClauseCS__Group__0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleSquareBracketedClauseCS

-entryRuleSquareBracketedClauseCS 

-:

-{ before(grammarAccess.getSquareBracketedClauseCSRule()); }

-	 ruleSquareBracketedClauseCS

-{ after(grammarAccess.getSquareBracketedClauseCSRule()); } 

-	 EOF 

-;

-

-// Rule SquareBracketedClauseCS

-ruleSquareBracketedClauseCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }

-(rule__SquareBracketedClauseCS__Group__0)

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingArgCS

-entryRuleNavigatingArgCS 

-:

-{ before(grammarAccess.getNavigatingArgCSRule()); }

-	 ruleNavigatingArgCS

-{ after(grammarAccess.getNavigatingArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingArgCS

-ruleNavigatingArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }

-(rule__NavigatingArgCS__Alternatives)

-{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingBarArgCS

-entryRuleNavigatingBarArgCS 

-:

-{ before(grammarAccess.getNavigatingBarArgCSRule()); }

-	 ruleNavigatingBarArgCS

-{ after(grammarAccess.getNavigatingBarArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingBarArgCS

-ruleNavigatingBarArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }

-(rule__NavigatingBarArgCS__Group__0)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingCommaArgCS

-entryRuleNavigatingCommaArgCS 

-:

-{ before(grammarAccess.getNavigatingCommaArgCSRule()); }

-	 ruleNavigatingCommaArgCS

-{ after(grammarAccess.getNavigatingCommaArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingCommaArgCS

-ruleNavigatingCommaArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }

-(rule__NavigatingCommaArgCS__Group__0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingSemiArgCS

-entryRuleNavigatingSemiArgCS 

-:

-{ before(grammarAccess.getNavigatingSemiArgCSRule()); }

-	 ruleNavigatingSemiArgCS

-{ after(grammarAccess.getNavigatingSemiArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingSemiArgCS

-ruleNavigatingSemiArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }

-(rule__NavigatingSemiArgCS__Group__0)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingArgExpCS

-entryRuleNavigatingArgExpCS 

-:

-{ before(grammarAccess.getNavigatingArgExpCSRule()); }

-	 ruleNavigatingArgExpCS

-{ after(grammarAccess.getNavigatingArgExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingArgExpCS

-ruleNavigatingArgExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); }

-	ruleExpCS

-{ after(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleIfExpCS

-entryRuleIfExpCS 

-:

-{ before(grammarAccess.getIfExpCSRule()); }

-	 ruleIfExpCS

-{ after(grammarAccess.getIfExpCSRule()); } 

-	 EOF 

-;

-

-// Rule IfExpCS

-ruleIfExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIfExpCSAccess().getGroup()); }

-(rule__IfExpCS__Group__0)

-{ after(grammarAccess.getIfExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleElseIfThenExpCS

-entryRuleElseIfThenExpCS 

-:

-{ before(grammarAccess.getElseIfThenExpCSRule()); }

-	 ruleElseIfThenExpCS

-{ after(grammarAccess.getElseIfThenExpCSRule()); } 

-	 EOF 

-;

-

-// Rule ElseIfThenExpCS

-ruleElseIfThenExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }

-(rule__ElseIfThenExpCS__Group__0)

-{ after(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLetExpCS

-entryRuleLetExpCS 

-:

-{ before(grammarAccess.getLetExpCSRule()); }

-	 ruleLetExpCS

-{ after(grammarAccess.getLetExpCSRule()); } 

-	 EOF 

-;

-

-// Rule LetExpCS

-ruleLetExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLetExpCSAccess().getGroup()); }

-(rule__LetExpCS__Group__0)

-{ after(grammarAccess.getLetExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLetVariableCS

-entryRuleLetVariableCS 

-:

-{ before(grammarAccess.getLetVariableCSRule()); }

-	 ruleLetVariableCS

-{ after(grammarAccess.getLetVariableCSRule()); } 

-	 EOF 

-;

-

-// Rule LetVariableCS

-ruleLetVariableCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getGroup()); }

-(rule__LetVariableCS__Group__0)

-{ after(grammarAccess.getLetVariableCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNestedExpCS

-entryRuleNestedExpCS 

-:

-{ before(grammarAccess.getNestedExpCSRule()); }

-	 ruleNestedExpCS

-{ after(grammarAccess.getNestedExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NestedExpCS

-ruleNestedExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getGroup()); }

-(rule__NestedExpCS__Group__0)

-{ after(grammarAccess.getNestedExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleSelfExpCS

-entryRuleSelfExpCS 

-:

-{ before(grammarAccess.getSelfExpCSRule()); }

-	 ruleSelfExpCS

-{ after(grammarAccess.getSelfExpCSRule()); } 

-	 EOF 

-;

-

-// Rule SelfExpCS

-ruleSelfExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getSelfExpCSAccess().getGroup()); }

-(rule__SelfExpCS__Group__0)

-{ after(grammarAccess.getSelfExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleMultiplicityBoundsCS

-entryRuleMultiplicityBoundsCS 

-:

-{ before(grammarAccess.getMultiplicityBoundsCSRule()); }

-	 ruleMultiplicityBoundsCS

-{ after(grammarAccess.getMultiplicityBoundsCSRule()); } 

-	 EOF 

-;

-

-// Rule MultiplicityBoundsCS

-ruleMultiplicityBoundsCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }

-(rule__MultiplicityBoundsCS__Group__0)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleMultiplicityCS

-entryRuleMultiplicityCS 

-:

-{ before(grammarAccess.getMultiplicityCSRule()); }

-	 ruleMultiplicityCS

-{ after(grammarAccess.getMultiplicityCSRule()); } 

-	 EOF 

-;

-

-// Rule MultiplicityCS

-ruleMultiplicityCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getGroup()); }

-(rule__MultiplicityCS__Group__0)

-{ after(grammarAccess.getMultiplicityCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleMultiplicityStringCS

-entryRuleMultiplicityStringCS 

-:

-{ before(grammarAccess.getMultiplicityStringCSRule()); }

-	 ruleMultiplicityStringCS

-{ after(grammarAccess.getMultiplicityStringCSRule()); } 

-	 EOF 

-;

-

-// Rule MultiplicityStringCS

-ruleMultiplicityStringCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }

-(rule__MultiplicityStringCS__StringBoundsAssignment)

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePathNameCS

-entryRulePathNameCS 

-:

-{ before(grammarAccess.getPathNameCSRule()); }

-	 rulePathNameCS

-{ after(grammarAccess.getPathNameCSRule()); } 

-	 EOF 

-;

-

-// Rule PathNameCS

-rulePathNameCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPathNameCSAccess().getGroup()); }

-(rule__PathNameCS__Group__0)

-{ after(grammarAccess.getPathNameCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleFirstPathElementCS

-entryRuleFirstPathElementCS 

-:

-{ before(grammarAccess.getFirstPathElementCSRule()); }

-	 ruleFirstPathElementCS

-{ after(grammarAccess.getFirstPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule FirstPathElementCS

-ruleFirstPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }

-(rule__FirstPathElementCS__ReferredElementAssignment)

-{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNextPathElementCS

-entryRuleNextPathElementCS 

-:

-{ before(grammarAccess.getNextPathElementCSRule()); }

-	 ruleNextPathElementCS

-{ after(grammarAccess.getNextPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule NextPathElementCS

-ruleNextPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }

-(rule__NextPathElementCS__ReferredElementAssignment)

-{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTemplateBindingCS

-entryRuleTemplateBindingCS 

-:

-{ before(grammarAccess.getTemplateBindingCSRule()); }

-	 ruleTemplateBindingCS

-{ after(grammarAccess.getTemplateBindingCSRule()); } 

-	 EOF 

-;

-

-// Rule TemplateBindingCS

-ruleTemplateBindingCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getGroup()); }

-(rule__TemplateBindingCS__Group__0)

-{ after(grammarAccess.getTemplateBindingCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTemplateParameterSubstitutionCS

-entryRuleTemplateParameterSubstitutionCS 

-:

-{ before(grammarAccess.getTemplateParameterSubstitutionCSRule()); }

-	 ruleTemplateParameterSubstitutionCS

-{ after(grammarAccess.getTemplateParameterSubstitutionCSRule()); } 

-	 EOF 

-;

-

-// Rule TemplateParameterSubstitutionCS

-ruleTemplateParameterSubstitutionCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }

-(rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment)

-{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-// Entry rule entryRuleTypeParameterCS

-entryRuleTypeParameterCS 

-:

-{ before(grammarAccess.getTypeParameterCSRule()); }

-	 ruleTypeParameterCS

-{ after(grammarAccess.getTypeParameterCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeParameterCS

-ruleTypeParameterCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup()); }

-(rule__TypeParameterCS__Group__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeRefCS

-entryRuleTypeRefCS 

-:

-{ before(grammarAccess.getTypeRefCSRule()); }

-	 ruleTypeRefCS

-{ after(grammarAccess.getTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeRefCS

-ruleTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeRefCSAccess().getAlternatives()); }

-(rule__TypeRefCS__Alternatives)

-{ after(grammarAccess.getTypeRefCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypedRefCS

-entryRuleTypedRefCS 

-:

-{ before(grammarAccess.getTypedRefCSRule()); }

-	 ruleTypedRefCS

-{ after(grammarAccess.getTypedRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypedRefCS

-ruleTypedRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall()); }

-	ruleTypedTypeRefCS

-{ after(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypedTypeRefCS

-entryRuleTypedTypeRefCS 

-:

-{ before(grammarAccess.getTypedTypeRefCSRule()); }

-	 ruleTypedTypeRefCS

-{ after(grammarAccess.getTypedTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypedTypeRefCS

-ruleTypedTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }

-(rule__TypedTypeRefCS__Group__0)

-{ after(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleWildcardTypeRefCS

-entryRuleWildcardTypeRefCS 

-:

-{ before(grammarAccess.getWildcardTypeRefCSRule()); }

-	 ruleWildcardTypeRefCS

-{ after(grammarAccess.getWildcardTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule WildcardTypeRefCS

-ruleWildcardTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }

-(rule__WildcardTypeRefCS__Group__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleID

-entryRuleID 

-:

-{ before(grammarAccess.getIDRule()); }

-	 ruleID

-{ after(grammarAccess.getIDRule()); } 

-	 EOF 

-;

-

-// Rule ID

-ruleID

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIDAccess().getAlternatives()); }

-(rule__ID__Alternatives)

-{ after(grammarAccess.getIDAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleIdentifier

-entryRuleIdentifier 

-:

-{ before(grammarAccess.getIdentifierRule()); }

-	 ruleIdentifier

-{ after(grammarAccess.getIdentifierRule()); } 

-	 EOF 

-;

-

-// Rule Identifier

-ruleIdentifier

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }

-	ruleID

-{ after(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLOWER

-entryRuleLOWER 

-:

-{ before(grammarAccess.getLOWERRule()); }

-	 ruleLOWER

-{ after(grammarAccess.getLOWERRule()); } 

-	 EOF 

-;

-

-// Rule LOWER

-ruleLOWER

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }

-	RULE_INT

-{ after(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNUMBER_LITERAL

-entryRuleNUMBER_LITERAL 

-:

-{ before(grammarAccess.getNUMBER_LITERALRule()); }

-	 ruleNUMBER_LITERAL

-{ after(grammarAccess.getNUMBER_LITERALRule()); } 

-	 EOF 

-;

-

-// Rule NUMBER_LITERAL

-ruleNUMBER_LITERAL

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }

-	RULE_INT

-{ after(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleStringLiteral

-entryRuleStringLiteral 

-:

-{ before(grammarAccess.getStringLiteralRule()); }

-	 ruleStringLiteral

-{ after(grammarAccess.getStringLiteralRule()); } 

-	 EOF 

-;

-

-// Rule StringLiteral

-ruleStringLiteral

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-	RULE_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUPPER

-entryRuleUPPER 

-:

-{ before(grammarAccess.getUPPERRule()); }

-	 ruleUPPER

-{ after(grammarAccess.getUPPERRule()); } 

-	 EOF 

-;

-

-// Rule UPPER

-ruleUPPER

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUPPERAccess().getAlternatives()); }

-(rule__UPPER__Alternatives)

-{ after(grammarAccess.getUPPERAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleURI

-entryRuleURI 

-:

-{ before(grammarAccess.getURIRule()); }

-	 ruleURI

-{ after(grammarAccess.getURIRule()); } 

-	 EOF 

-;

-

-// Rule URI

-ruleURI

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-	RULE_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-rule__EssentialOCLUnaryOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }

-

-	'-' 

-

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }

-

-	'not' 

-

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EssentialOCLInfixOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }

-

-	'*' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }

-

-	'/' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }

-

-	'+' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }

-

-	'-' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }

-

-	'>' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }

-

-	'<' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }

-

-	'>=' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }

-

-	'<=' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }

-

-	'=' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }

-

-	'<>' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }

-

-	'and' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }

-

-	'or' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }

-

-	'xor' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }

-

-	'implies' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EssentialOCLNavigationOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }

-

-	'.' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }

-

-	'->' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }

-

-	'?.' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }

-

-	'?->' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BinaryOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }

-	ruleInfixOperatorName

-{ after(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }

-	ruleNavigationOperatorName

-{ after(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EssentialOCLUnreservedName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }

-	ruleUnrestrictedName

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }

-	ruleCollectionTypeIdentifier

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }

-	rulePrimitiveTypeIdentifier

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }

-

-	'Tuple' 

-

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }

-(rule__URIFirstPathElementCS__ReferredElementAssignment_0)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }

-)

-

-    |(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }

-(rule__URIFirstPathElementCS__Group_1__0)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimitiveTypeIdentifier__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }

-

-	'Boolean' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }

-

-	'Integer' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }

-

-	'Real' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }

-

-	'String' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }

-

-	'UnlimitedNatural' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }

-

-	'OclAny' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }

-

-	'OclInvalid' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); }

-

-	'OclVoid' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeIdentifier__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }

-

-	'Set' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }

-

-	'Bag' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }

-

-	'Sequence' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }

-

-	'Collection' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }

-

-	'OrderedSet' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }

-(rule__CollectionLiteralPartCS__Group_0__0)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }

-(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }

-	ruleExpCS

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }

-	rulePatternExpCS

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimitiveLiteralExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }

-	ruleNumberLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }

-	ruleStringLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }

-	ruleBooleanLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }

-	ruleUnlimitedNaturalLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }

-	ruleInvalidLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }

-	ruleNullLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BooleanLiteralExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }

-(rule__BooleanLiteralExpCS__SymbolAssignment_0)

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }

-)

-

-    |(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }

-(rule__BooleanLiteralExpCS__SymbolAssignment_1)

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }

-	rulePrimitiveTypeCS

-{ after(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }

-	ruleCollectionTypeCS

-{ after(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }

-	ruleTupleTypeCS

-{ after(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__Alternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }

-	ruleTypeNameExpCS

-{ after(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }

-	ruleTypeLiteralCS

-{ after(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }

-	ruleCollectionPatternCS

-{ after(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getGroup_0()); }

-(rule__ExpCS__Group_0__0)

-{ after(grammarAccess.getExpCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }

-	rulePrefixedLetExpCS

-{ after(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }

-(rule__PrefixedLetExpCS__Group_0__0)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }

-	ruleLetExpCS

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }

-(rule__PrefixedPrimaryExpCS__Group_0__0)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }

-	rulePrimaryExpCS

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimaryExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }

-	ruleNestedExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }

-	ruleIfExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }

-	ruleSelfExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }

-	rulePrimitiveLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }

-	ruleTupleLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }

-	ruleCollectionLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }

-	ruleLambdaLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }

-	ruleTypeLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }

-	ruleNameExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }

-(rule__CurlyBracketedClauseCS__Group_2_0__0)?

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }

-(rule__CurlyBracketedClauseCS__ValueAssignment_2_1)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }

-(rule__NavigatingArgCS__Group_0__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }

-(rule__NavigatingArgCS__Group_1__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Alternatives_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }

-(rule__NavigatingArgCS__Group_0_1_0__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }

-(rule__NavigatingArgCS__Group_0_1_1__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }

-(rule__NavigatingCommaArgCS__Group_2_0__0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }

-(rule__NavigatingCommaArgCS__Group_2_1__0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedConditionAlternatives_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }

-	ruleExpCS

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }

-	rulePatternExpCS

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Alternatives_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }

-	ruleMultiplicityBoundsCS

-{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }

-	ruleMultiplicityStringCS

-{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityStringCS__StringBoundsAlternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }

-

-	'*' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }

-

-	'+' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }

-

-	'?' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Alternatives_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }

-(rule__TypeParameterCS__Group_1_0__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }

-(rule__TypeParameterCS__Group_1_1__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeRefCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }

-	ruleTypedRefCS

-{ after(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }

-	ruleWildcardTypeRefCS

-{ after(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }

-(rule__WildcardTypeRefCS__Group_2_0__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }

-(rule__WildcardTypeRefCS__Group_2_1__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ID__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }

-	RULE_SIMPLE_ID

-{ after(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }

-	RULE_ESCAPED_ID

-{ after(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UPPER__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }

-	RULE_INT

-{ after(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }

-

-	'*' 

-

-{ after(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-rule__URIFirstPathElementCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIFirstPathElementCS__Group_1__0__Impl

-	rule__URIFirstPathElementCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }

-(

-

-)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__URIFirstPathElementCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIFirstPathElementCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }

-(rule__URIFirstPathElementCS__ReferredElementAssignment_1_1)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionTypeCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group__0__Impl

-	rule__CollectionTypeCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }

-(rule__CollectionTypeCS__NameAssignment_0)

-{ after(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionTypeCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }

-(rule__CollectionTypeCS__Group_1__0)?

-{ after(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionTypeCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group_1__0__Impl

-	rule__CollectionTypeCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionTypeCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group_1__1__Impl

-	rule__CollectionTypeCS__Group_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }

-(rule__CollectionTypeCS__OwnedTypeAssignment_1_1)

-{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionTypeCS__Group_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TupleTypeCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group__0__Impl

-	rule__TupleTypeCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }

-(rule__TupleTypeCS__NameAssignment_0)

-{ after(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }

-(rule__TupleTypeCS__Group_1__0)?

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TupleTypeCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1__0__Impl

-	rule__TupleTypeCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1__1__Impl

-	rule__TupleTypeCS__Group_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }

-(rule__TupleTypeCS__Group_1_1__0)?

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TupleTypeCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1__0__Impl

-	rule__TupleTypeCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }

-(rule__TupleTypeCS__OwnedPartsAssignment_1_1_0)

-{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }

-(rule__TupleTypeCS__Group_1_1_1__0)*

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TupleTypeCS__Group_1_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1_1__0__Impl

-	rule__TupleTypeCS__Group_1_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }

-(rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1)

-{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TuplePartCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TuplePartCS__Group__0__Impl

-	rule__TuplePartCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }

-(rule__TuplePartCS__NameAssignment_0)

-{ after(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TuplePartCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TuplePartCS__Group__1__Impl

-	rule__TuplePartCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }

-

-	':' 

-

-{ after(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TuplePartCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TuplePartCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }

-(rule__TuplePartCS__OwnedTypeAssignment_2)

-{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__CollectionLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__0__Impl

-	rule__CollectionLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }

-(rule__CollectionLiteralExpCS__OwnedTypeAssignment_0)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__1__Impl

-	rule__CollectionLiteralExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__2__Impl

-	rule__CollectionLiteralExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }

-(rule__CollectionLiteralExpCS__Group_2__0)?

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__CollectionLiteralExpCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2__0__Impl

-	rule__CollectionLiteralExpCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }

-(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }

-(rule__CollectionLiteralExpCS__Group_2_1__0)*

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionLiteralExpCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2_1__0__Impl

-	rule__CollectionLiteralExpCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }

-(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionLiteralPartCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0__0__Impl

-	rule__CollectionLiteralPartCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }

-(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralPartCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }

-(rule__CollectionLiteralPartCS__Group_0_1__0)?

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionLiteralPartCS__Group_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0_1__0__Impl

-	rule__CollectionLiteralPartCS__Group_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }

-

-	'..' 

-

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralPartCS__Group_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }

-(rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionPatternCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__0__Impl

-	rule__CollectionPatternCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }

-(rule__CollectionPatternCS__OwnedTypeAssignment_0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__1__Impl

-	rule__CollectionPatternCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__2__Impl

-	rule__CollectionPatternCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }

-(rule__CollectionPatternCS__Group_2__0)?

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__CollectionPatternCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2__0__Impl

-	rule__CollectionPatternCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }

-(rule__CollectionPatternCS__OwnedPartsAssignment_2_0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2__1__Impl

-	rule__CollectionPatternCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }

-(rule__CollectionPatternCS__Group_2_1__0)*

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }

-(rule__CollectionPatternCS__Group_2_2__0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__CollectionPatternCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_1__0__Impl

-	rule__CollectionPatternCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }

-(rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1)

-{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionPatternCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_2__0__Impl

-	rule__CollectionPatternCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }

-

-	'++' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }

-(rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1)

-{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ConstructorPartCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstructorPartCS__Group__0__Impl

-	rule__ConstructorPartCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }

-(rule__ConstructorPartCS__ReferredPropertyAssignment_0)

-{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ConstructorPartCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstructorPartCS__Group__1__Impl

-	rule__ConstructorPartCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }

-

-	'=' 

-

-{ after(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ConstructorPartCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstructorPartCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }

-(rule__ConstructorPartCS__OwnedInitExpressionAssignment_2)

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PatternExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PatternExpCS__Group__0__Impl

-	rule__PatternExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }

-(rule__PatternExpCS__PatternVariableNameAssignment_0)?

-{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PatternExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PatternExpCS__Group__1__Impl

-	rule__PatternExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }

-

-	':' 

-

-{ after(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PatternExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PatternExpCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }

-(rule__PatternExpCS__OwnedPatternTypeAssignment_2)

-{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__LambdaLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__0__Impl

-	rule__LambdaLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }

-

-	'Lambda' 

-

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__1__Impl

-	rule__LambdaLiteralExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaLiteralExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__2__Impl

-	rule__LambdaLiteralExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }

-(rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2)

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaLiteralExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TupleLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__0__Impl

-	rule__TupleLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }

-

-	'Tuple' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__1__Impl

-	rule__TupleLiteralExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__2__Impl

-	rule__TupleLiteralExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }

-(rule__TupleLiteralExpCS__OwnedPartsAssignment_2)

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__3__Impl

-	rule__TupleLiteralExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }

-(rule__TupleLiteralExpCS__Group_3__0)*

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }

-

-	'}' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__TupleLiteralExpCS__Group_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group_3__0__Impl

-	rule__TupleLiteralExpCS__Group_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group_3__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }

-(rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1)

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TupleLiteralPartCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__0__Impl

-	rule__TupleLiteralPartCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }

-(rule__TupleLiteralPartCS__NameAssignment_0)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__1__Impl

-	rule__TupleLiteralPartCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }

-(rule__TupleLiteralPartCS__Group_1__0)?

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__2__Impl

-	rule__TupleLiteralPartCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }

-

-	'=' 

-

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }

-(rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TupleLiteralPartCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group_1__0__Impl

-	rule__TupleLiteralPartCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }

-

-	':' 

-

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }

-(rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__UnlimitedNaturalLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl

-	rule__UnlimitedNaturalLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__UnlimitedNaturalLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }

-

-	'*' 

-

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__InvalidLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvalidLiteralExpCS__Group__0__Impl

-	rule__InvalidLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvalidLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvalidLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvalidLiteralExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvalidLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }

-

-	'invalid' 

-

-{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NullLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NullLiteralExpCS__Group__0__Impl

-	rule__NullLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NullLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NullLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NullLiteralExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NullLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }

-

-	'null' 

-

-{ after(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeLiteralWithMultiplicityCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeLiteralWithMultiplicityCS__Group__0__Impl

-	rule__TypeLiteralWithMultiplicityCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralWithMultiplicityCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }

-	ruleTypeLiteralCS

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeLiteralWithMultiplicityCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeLiteralWithMultiplicityCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralWithMultiplicityCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }

-(rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1)?

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeNameExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group__0__Impl

-	rule__TypeNameExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-(rule__TypeNameExpCS__OwnedPathNameAssignment_0)

-{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }

-(rule__TypeNameExpCS__Group_1__0)?

-{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeNameExpCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1__0__Impl

-	rule__TypeNameExpCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }

-(rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0)

-{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }

-(rule__TypeNameExpCS__Group_1_1__0)?

-{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeNameExpCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1_1__0__Impl

-	rule__TypeNameExpCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1_1__1__Impl

-	rule__TypeNameExpCS__Group_1_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }

-(rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1)

-{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group_1_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TypeExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeExpCS__Group__0__Impl

-	rule__TypeExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }

-(rule__TypeExpCS__Alternatives_0)

-{ after(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }

-(rule__TypeExpCS__OwnedMultiplicityAssignment_1)?

-{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ExpCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0__0__Impl

-	rule__ExpCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }

-	rulePrefixedPrimaryExpCS

-{ after(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ExpCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getGroup_0_1()); }

-(rule__ExpCS__Group_0_1__0)?

-{ after(grammarAccess.getExpCSAccess().getGroup_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ExpCS__Group_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0_1__0__Impl

-	rule__ExpCS__Group_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }

-(

-

-)

-{ after(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ExpCS__Group_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0_1__1__Impl

-	rule__ExpCS__Group_0_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }

-(rule__ExpCS__NameAssignment_0_1_1)

-{ after(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ExpCS__Group_0_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }

-(rule__ExpCS__OwnedRightAssignment_0_1_2)

-{ after(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PrefixedLetExpCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedLetExpCS__Group_0__0__Impl

-	rule__PrefixedLetExpCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }

-(

-

-)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedLetExpCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedLetExpCS__Group_0__1__Impl

-	rule__PrefixedLetExpCS__Group_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }

-(rule__PrefixedLetExpCS__NameAssignment_0_1)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedLetExpCS__Group_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedLetExpCS__Group_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Group_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }

-(rule__PrefixedLetExpCS__OwnedRightAssignment_0_2)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PrefixedPrimaryExpCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedPrimaryExpCS__Group_0__0__Impl

-	rule__PrefixedPrimaryExpCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }

-(

-

-)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedPrimaryExpCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedPrimaryExpCS__Group_0__1__Impl

-	rule__PrefixedPrimaryExpCS__Group_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }

-(rule__PrefixedPrimaryExpCS__NameAssignment_0_1)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedPrimaryExpCS__Group_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedPrimaryExpCS__Group_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Group_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }

-(rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NameExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__0__Impl

-	rule__NameExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-(rule__NameExpCS__OwnedPathNameAssignment_0)

-{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__1__Impl

-	rule__NameExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }

-(rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1)*

-{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__2__Impl

-	rule__NameExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }

-(rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2)?

-{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__3__Impl

-	rule__NameExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }

-(rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3)?

-{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getGroup_4()); }

-(rule__NameExpCS__Group_4__0)?

-{ after(grammarAccess.getNameExpCSAccess().getGroup_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__NameExpCS__Group_4__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group_4__0__Impl

-	rule__NameExpCS__Group_4__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group_4__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }

-(rule__NameExpCS__IsPreAssignment_4_0)

-{ after(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group_4__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group_4__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group_4__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }

-

-	'pre' 

-

-{ after(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CurlyBracketedClauseCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__0__Impl

-	rule__CurlyBracketedClauseCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__1__Impl

-	rule__CurlyBracketedClauseCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__2__Impl

-	rule__CurlyBracketedClauseCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }

-(rule__CurlyBracketedClauseCS__Alternatives_2)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__CurlyBracketedClauseCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0__0__Impl

-	rule__CurlyBracketedClauseCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }

-(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }

-(rule__CurlyBracketedClauseCS__Group_2_0_1__0)*

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl

-	rule__CurlyBracketedClauseCS__Group_2_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }

-(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__0__Impl

-	rule__RoundBracketedClauseCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__1__Impl

-	rule__RoundBracketedClauseCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }

-

-	'(' 

-

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__2__Impl

-	rule__RoundBracketedClauseCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }

-(rule__RoundBracketedClauseCS__Group_2__0)?

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }

-

-	')' 

-

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__0__Impl

-	rule__RoundBracketedClauseCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__1__Impl

-	rule__RoundBracketedClauseCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__2__Impl

-	rule__RoundBracketedClauseCS__Group_2__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }

-(rule__RoundBracketedClauseCS__Group_2_2__0)?

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }

-(rule__RoundBracketedClauseCS__Group_2_3__0)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_2__0__Impl

-	rule__RoundBracketedClauseCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group_2_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_3__0__Impl

-	rule__RoundBracketedClauseCS__Group_2_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_3__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__SquareBracketedClauseCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__0__Impl

-	rule__SquareBracketedClauseCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }

-

-	'[' 

-

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__1__Impl

-	rule__SquareBracketedClauseCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }

-(rule__SquareBracketedClauseCS__OwnedTermsAssignment_1)

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__2__Impl

-	rule__SquareBracketedClauseCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }

-(rule__SquareBracketedClauseCS__Group_2__0)*

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }

-

-	']' 

-

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__SquareBracketedClauseCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group_2__0__Impl

-	rule__SquareBracketedClauseCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }

-(rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1)

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0__0__Impl

-	rule__NavigatingArgCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }

-(rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }

-(rule__NavigatingArgCS__Alternatives_0_1)?

-{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0_1_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0__0__Impl

-	rule__NavigatingArgCS__Group_0_1_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0__1__Impl

-	rule__NavigatingArgCS__Group_0_1_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }

-(rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }

-(rule__NavigatingArgCS__Group_0_1_0_2__0)?

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0_1_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0_2__0__Impl

-	rule__NavigatingArgCS__Group_0_1_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }

-(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_1__0__Impl

-	rule__NavigatingArgCS__Group_0_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }

-

-	'in' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }

-(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_1__0__Impl

-	rule__NavigatingArgCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }

-(rule__NavigatingArgCS__OwnedTypeAssignment_1_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingBarArgCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group__0__Impl

-	rule__NavigatingBarArgCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }

-(rule__NavigatingBarArgCS__PrefixAssignment_0)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group__1__Impl

-	rule__NavigatingBarArgCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-(rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }

-(rule__NavigatingBarArgCS__Group_2__0)?

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingBarArgCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2__0__Impl

-	rule__NavigatingBarArgCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2__1__Impl

-	rule__NavigatingBarArgCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }

-(rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }

-(rule__NavigatingBarArgCS__Group_2_2__0)?

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingBarArgCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2_2__0__Impl

-	rule__NavigatingBarArgCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-(rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group__0__Impl

-	rule__NavigatingCommaArgCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }

-(rule__NavigatingCommaArgCS__PrefixAssignment_0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group__1__Impl

-	rule__NavigatingCommaArgCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-(rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }

-(rule__NavigatingCommaArgCS__Alternatives_2)?

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0__0__Impl

-	rule__NavigatingCommaArgCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0__1__Impl

-	rule__NavigatingCommaArgCS__Group_2_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }

-(rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }

-(rule__NavigatingCommaArgCS__Group_2_0_2__0)?

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group_2_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl

-	rule__NavigatingCommaArgCS__Group_2_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }

-(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_1__0__Impl

-	rule__NavigatingCommaArgCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }

-

-	'in' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }

-(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingSemiArgCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group__0__Impl

-	rule__NavigatingSemiArgCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }

-(rule__NavigatingSemiArgCS__PrefixAssignment_0)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group__1__Impl

-	rule__NavigatingSemiArgCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-(rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }

-(rule__NavigatingSemiArgCS__Group_2__0)?

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingSemiArgCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2__0__Impl

-	rule__NavigatingSemiArgCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2__1__Impl

-	rule__NavigatingSemiArgCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }

-(rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }

-(rule__NavigatingSemiArgCS__Group_2_2__0)?

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingSemiArgCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2_2__0__Impl

-	rule__NavigatingSemiArgCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-(rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__IfExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__0__Impl

-	rule__IfExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }

-

-	'if' 

-

-{ after(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__1__Impl

-	rule__IfExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }

-(rule__IfExpCS__OwnedConditionAssignment_1)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__2__Impl

-	rule__IfExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }

-

-	'then' 

-

-{ after(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__3__Impl

-	rule__IfExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-(rule__IfExpCS__OwnedThenExpressionAssignment_3)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__4__Impl

-	rule__IfExpCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }

-(rule__IfExpCS__OwnedIfThenExpressionsAssignment_4)*

-{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__5__Impl

-	rule__IfExpCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }

-

-	'else' 

-

-{ after(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__6__Impl

-	rule__IfExpCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }

-(rule__IfExpCS__OwnedElseExpressionAssignment_6)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__7__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }

-

-	'endif' 

-

-{ after(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__ElseIfThenExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__0__Impl

-	rule__ElseIfThenExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }

-

-	'elseif' 

-

-{ after(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ElseIfThenExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__1__Impl

-	rule__ElseIfThenExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }

-(rule__ElseIfThenExpCS__OwnedConditionAssignment_1)

-{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ElseIfThenExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__2__Impl

-	rule__ElseIfThenExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }

-

-	'then' 

-

-{ after(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ElseIfThenExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-(rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3)

-{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__LetExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__0__Impl

-	rule__LetExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }

-

-	'let' 

-

-{ after(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__1__Impl

-	rule__LetExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }

-(rule__LetExpCS__OwnedVariablesAssignment_1)

-{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__2__Impl

-	rule__LetExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getGroup_2()); }

-(rule__LetExpCS__Group_2__0)*

-{ after(grammarAccess.getLetExpCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__3__Impl

-	rule__LetExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }

-

-	'in' 

-

-{ after(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }

-(rule__LetExpCS__OwnedInExpressionAssignment_4)

-{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LetExpCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group_2__0__Impl

-	rule__LetExpCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }

-(rule__LetExpCS__OwnedVariablesAssignment_2_1)

-{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LetVariableCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__0__Impl

-	rule__LetVariableCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }

-(rule__LetVariableCS__NameAssignment_0)

-{ after(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__1__Impl

-	rule__LetVariableCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }

-(rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1)?

-{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__2__Impl

-	rule__LetVariableCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getGroup_2()); }

-(rule__LetVariableCS__Group_2__0)?

-{ after(grammarAccess.getLetVariableCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__3__Impl

-	rule__LetVariableCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }

-

-	'=' 

-

-{ after(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }

-(rule__LetVariableCS__OwnedInitExpressionAssignment_4)

-{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LetVariableCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group_2__0__Impl

-	rule__LetVariableCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }

-(rule__LetVariableCS__OwnedTypeAssignment_2_1)

-{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NestedExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NestedExpCS__Group__0__Impl

-	rule__NestedExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NestedExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NestedExpCS__Group__1__Impl

-	rule__NestedExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }

-(rule__NestedExpCS__OwnedExpressionAssignment_1)

-{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NestedExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NestedExpCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }

-

-	')' 

-

-{ after(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__SelfExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SelfExpCS__Group__0__Impl

-	rule__SelfExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SelfExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SelfExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SelfExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SelfExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }

-

-	'self' 

-

-{ after(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__MultiplicityBoundsCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group__0__Impl

-	rule__MultiplicityBoundsCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }

-(rule__MultiplicityBoundsCS__LowerBoundAssignment_0)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityBoundsCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }

-(rule__MultiplicityBoundsCS__Group_1__0)?

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__MultiplicityBoundsCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group_1__0__Impl

-	rule__MultiplicityBoundsCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }

-

-	'..' 

-

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityBoundsCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }

-(rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__MultiplicityCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityCS__Group__0__Impl

-	rule__MultiplicityCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }

-

-	'[' 

-

-{ after(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityCS__Group__1__Impl

-	rule__MultiplicityCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }

-(rule__MultiplicityCS__Alternatives_1)

-{ after(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }

-

-	']' 

-

-{ after(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PathNameCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group__0__Impl

-	rule__PathNameCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-(rule__PathNameCS__OwnedPathElementsAssignment_0)

-{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PathNameCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getGroup_1()); }

-(rule__PathNameCS__Group_1__0)*

-{ after(grammarAccess.getPathNameCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__PathNameCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group_1__0__Impl

-	rule__PathNameCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }

-

-	'::' 

-

-{ after(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PathNameCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-(rule__PathNameCS__OwnedPathElementsAssignment_1_1)

-{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TemplateBindingCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__0__Impl

-	rule__TemplateBindingCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__1__Impl

-	rule__TemplateBindingCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }

-(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1)

-{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__2__Impl

-	rule__TemplateBindingCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }

-(rule__TemplateBindingCS__Group_2__0)*

-{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }

-

-	')' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TemplateBindingCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_2__0__Impl

-	rule__TemplateBindingCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }

-(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1)

-{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TypeParameterCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group__0__Impl

-	rule__TypeParameterCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }

-(rule__TypeParameterCS__NameAssignment_0)

-{ after(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }

-(rule__TypeParameterCS__Alternatives_1)?

-{ after(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__0__Impl

-	rule__TypeParameterCS__Group_1_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }

-

-	'extends' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__1__Impl

-	rule__TypeParameterCS__Group_1_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }

-(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }

-(rule__TypeParameterCS__Group_1_0_2__0)*

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0_2__0__Impl

-	rule__TypeParameterCS__Group_1_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }

-

-	'&&' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }

-(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_1__0__Impl

-	rule__TypeParameterCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }

-

-	'super' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }

-(rule__TypeParameterCS__OwnedSuperAssignment_1_1_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypedTypeRefCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedTypeRefCS__Group__0__Impl

-	rule__TypedTypeRefCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }

-(rule__TypedTypeRefCS__OwnedPathNameAssignment_0)

-{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypedTypeRefCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedTypeRefCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }

-(rule__TypedTypeRefCS__OwnedBindingAssignment_1)?

-{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__0__Impl

-	rule__WildcardTypeRefCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__1__Impl

-	rule__WildcardTypeRefCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }

-

-	'?' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }

-(rule__WildcardTypeRefCS__Alternatives_2)?

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_0__0__Impl

-	rule__WildcardTypeRefCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }

-

-	'extends' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }

-(rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_1__0__Impl

-	rule__WildcardTypeRefCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }

-

-	'super' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }

-(rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-rule__Model__OwnedExpressionAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getModelAccess().getOwnedExpressionExpCSParserRuleCall_0()); }

-	ruleExpCS{ after(grammarAccess.getModelAccess().getOwnedExpressionExpCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-rule__URIFirstPathElementCS__ReferredElementAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }

-)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__ReferredElementAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }

-	ruleURI{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }

-)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimitiveTypeCS__NameAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }

-	rulePrimitiveTypeIdentifier{ after(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }

-	ruleCollectionTypeIdentifier{ after(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__OwnedTypeAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-

-	'Tuple' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__OwnedPartsAssignment_1_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }

-	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }

-	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__OwnedTypeAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__OwnedTypeAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-	ruleCollectionTypeCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }

-	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }

-	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }

-	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }

-	rulePatternExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__OwnedTypeAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-	ruleCollectionTypeCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__OwnedPartsAssignment_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }

-	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }

-	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }

-	ruleIdentifier{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__ReferredPropertyAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }

-)

-{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__OwnedInitExpressionAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }

-(rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0)

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__PatternVariableNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__OwnedPatternTypeAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }

-	ruleExpCS{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__OwnedPartsAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }

-	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }

-	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }

-	ruleExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NumberLiteralExpCS__SymbolAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }

-	ruleNUMBER_LITERAL{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StringLiteralExpCS__SegmentsAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }

-	ruleStringLiteral{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BooleanLiteralExpCS__SymbolAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-

-	'true' 

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BooleanLiteralExpCS__SymbolAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-

-	'false' 

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-)

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-	ruleMultiplicityCS{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralExpCS__OwnedTypeAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }

-	ruleTypeLiteralWithMultiplicityCS{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__OwnedPathNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-	rulePathNameCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }

-	ruleCurlyBracketedClauseCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__OwnedMultiplicityAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-	ruleMultiplicityCS{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__NameAssignment_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }

-	ruleBinaryOperatorName{ after(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__OwnedRightAssignment_0_1_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }

-	ruleExpCS{ after(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__NameAssignment_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__OwnedRightAssignment_0_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }

-	rulePrefixedLetExpCS{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__NameAssignment_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }

-	rulePrefixedPrimaryExpCS{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedPathNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-	rulePathNameCS{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }

-	ruleSquareBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }

-	ruleRoundBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }

-	ruleCurlyBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__IsPreAssignment_4_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-(

-{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-

-	'@' 

-

-{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-)

-

-{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }

-	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }

-	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__ValueAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }

-	ruleStringLiteral{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }

-	ruleNavigatingArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }

-	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }

-	ruleNavigatingSemiArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }

-	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }

-	ruleNavigatingBarArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }

-	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__OwnedTermsAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }

-	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedTypeAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__PrefixAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-

-	'|' 

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__PrefixAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-

-	',' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__PrefixAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-

-	';' 

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedConditionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }

-(rule__IfExpCS__OwnedConditionAlternatives_1_0)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedThenExpressionAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedIfThenExpressionsAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }

-	ruleElseIfThenExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedElseExpressionAssignment_6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }

-	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__OwnedConditionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }

-	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__OwnedVariablesAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }

-	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__OwnedVariablesAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }

-	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__OwnedInExpressionAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }

-	ruleExpCS{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }

-	ruleRoundBracketedClauseCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__OwnedTypeAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__OwnedInitExpressionAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }

-	ruleExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__OwnedExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__LowerBoundAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }

-	ruleLOWER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }

-	ruleUPPER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityStringCS__StringBoundsAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }

-(rule__MultiplicityStringCS__StringBoundsAlternatives_0)

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__OwnedPathElementsAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }

-	ruleFirstPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__OwnedPathElementsAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }

-	ruleNextPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FirstPathElementCS__ReferredElementAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }

-)

-{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NextPathElementCS__ReferredElementAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }

-	ruleUnreservedName{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }

-)

-{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }

-	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }

-	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }

-	ruleTypeRefCS{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-rule__TypeParameterCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedSuperAssignment_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__OwnedPathNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-	rulePathNameCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__OwnedBindingAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }

-	ruleTemplateBindingCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');

-

-fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');

-

-RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';

-

-RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';

-

-RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';

-

-RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;

-

-RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;

-

-RULE_INT : ('0'..'9')+;

-

-RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';

-

-RULE_SL_COMMENT : '--' ~(('\n'|'\r'))* ('\r'? '\n')?;

-

-RULE_WS : (' '|'\t'|'\r'|'\n')+;

-

-RULE_ANY_OTHER : .;

-

-

+/*
+ * generated by Xtext
+ */
+grammar InternalEssentialOCL;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.ocl.xtext.essentialocl.ui.contentassist.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.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.eclipse.ocl.xtext.essentialocl.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+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.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.ocl.xtext.essentialocl.services.EssentialOCLGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private EssentialOCLGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(EssentialOCLGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleModel
+entryRuleModel 
+:
+{ before(grammarAccess.getModelRule()); }
+	 ruleModel
+{ after(grammarAccess.getModelRule()); } 
+	 EOF 
+;
+
+// Rule Model
+ruleModel
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getModelAccess().getOwnedExpressionAssignment()); }
+(rule__Model__OwnedExpressionAssignment)
+{ after(grammarAccess.getModelAccess().getOwnedExpressionAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnaryOperatorName
+entryRuleEssentialOCLUnaryOperatorName 
+:
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); }
+	 ruleEssentialOCLUnaryOperatorName
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLUnaryOperatorName
+ruleEssentialOCLUnaryOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }
+(rule__EssentialOCLUnaryOperatorName__Alternatives)
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLInfixOperatorName
+entryRuleEssentialOCLInfixOperatorName 
+:
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameRule()); }
+	 ruleEssentialOCLInfixOperatorName
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLInfixOperatorName
+ruleEssentialOCLInfixOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }
+(rule__EssentialOCLInfixOperatorName__Alternatives)
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLNavigationOperatorName
+entryRuleEssentialOCLNavigationOperatorName 
+:
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); }
+	 ruleEssentialOCLNavigationOperatorName
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLNavigationOperatorName
+ruleEssentialOCLNavigationOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }
+(rule__EssentialOCLNavigationOperatorName__Alternatives)
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBinaryOperatorName
+entryRuleBinaryOperatorName 
+:
+{ before(grammarAccess.getBinaryOperatorNameRule()); }
+	 ruleBinaryOperatorName
+{ after(grammarAccess.getBinaryOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule BinaryOperatorName
+ruleBinaryOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }
+(rule__BinaryOperatorName__Alternatives)
+{ after(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleInfixOperatorName
+entryRuleInfixOperatorName 
+:
+{ before(grammarAccess.getInfixOperatorNameRule()); }
+	 ruleInfixOperatorName
+{ after(grammarAccess.getInfixOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule InfixOperatorName
+ruleInfixOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }
+	ruleEssentialOCLInfixOperatorName
+{ after(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigationOperatorName
+entryRuleNavigationOperatorName 
+:
+{ before(grammarAccess.getNavigationOperatorNameRule()); }
+	 ruleNavigationOperatorName
+{ after(grammarAccess.getNavigationOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule NavigationOperatorName
+ruleNavigationOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); }
+	ruleEssentialOCLNavigationOperatorName
+{ after(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnaryOperatorName
+entryRuleUnaryOperatorName 
+:
+{ before(grammarAccess.getUnaryOperatorNameRule()); }
+	 ruleUnaryOperatorName
+{ after(grammarAccess.getUnaryOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule UnaryOperatorName
+ruleUnaryOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }
+	ruleEssentialOCLUnaryOperatorName
+{ after(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLUnrestrictedName
+entryRuleEssentialOCLUnrestrictedName 
+:
+{ before(grammarAccess.getEssentialOCLUnrestrictedNameRule()); }
+	 ruleEssentialOCLUnrestrictedName
+{ after(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLUnrestrictedName
+ruleEssentialOCLUnrestrictedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }
+	ruleIdentifier
+{ after(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnrestrictedName
+entryRuleUnrestrictedName 
+:
+{ before(grammarAccess.getUnrestrictedNameRule()); }
+	 ruleUnrestrictedName
+{ after(grammarAccess.getUnrestrictedNameRule()); } 
+	 EOF 
+;
+
+// Rule UnrestrictedName
+ruleUnrestrictedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall()); }
+	ruleEssentialOCLUnrestrictedName
+{ after(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLUnreservedName
+entryRuleEssentialOCLUnreservedName 
+:
+{ before(grammarAccess.getEssentialOCLUnreservedNameRule()); }
+	 ruleEssentialOCLUnreservedName
+{ after(grammarAccess.getEssentialOCLUnreservedNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLUnreservedName
+ruleEssentialOCLUnreservedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }
+(rule__EssentialOCLUnreservedName__Alternatives)
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnreservedName
+entryRuleUnreservedName 
+:
+{ before(grammarAccess.getUnreservedNameRule()); }
+	 ruleUnreservedName
+{ after(grammarAccess.getUnreservedNameRule()); } 
+	 EOF 
+;
+
+// Rule UnreservedName
+ruleUnreservedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }
+	ruleEssentialOCLUnreservedName
+{ after(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleURIFirstPathElementCS
+entryRuleURIFirstPathElementCS 
+:
+{ before(grammarAccess.getURIFirstPathElementCSRule()); }
+	 ruleURIFirstPathElementCS
+{ after(grammarAccess.getURIFirstPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule URIFirstPathElementCS
+ruleURIFirstPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }
+(rule__URIFirstPathElementCS__Alternatives)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimitiveTypeIdentifier
+entryRulePrimitiveTypeIdentifier 
+:
+{ before(grammarAccess.getPrimitiveTypeIdentifierRule()); }
+	 rulePrimitiveTypeIdentifier
+{ after(grammarAccess.getPrimitiveTypeIdentifierRule()); } 
+	 EOF 
+;
+
+// Rule PrimitiveTypeIdentifier
+rulePrimitiveTypeIdentifier
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }
+(rule__PrimitiveTypeIdentifier__Alternatives)
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimitiveTypeCS
+entryRulePrimitiveTypeCS 
+:
+{ before(grammarAccess.getPrimitiveTypeCSRule()); }
+	 rulePrimitiveTypeCS
+{ after(grammarAccess.getPrimitiveTypeCSRule()); } 
+	 EOF 
+;
+
+// Rule PrimitiveTypeCS
+rulePrimitiveTypeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }
+(rule__PrimitiveTypeCS__NameAssignment)
+{ after(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionTypeIdentifier
+entryRuleCollectionTypeIdentifier 
+:
+{ before(grammarAccess.getCollectionTypeIdentifierRule()); }
+	 ruleCollectionTypeIdentifier
+{ after(grammarAccess.getCollectionTypeIdentifierRule()); } 
+	 EOF 
+;
+
+// Rule CollectionTypeIdentifier
+ruleCollectionTypeIdentifier
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }
+(rule__CollectionTypeIdentifier__Alternatives)
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionTypeCS
+entryRuleCollectionTypeCS 
+:
+{ before(grammarAccess.getCollectionTypeCSRule()); }
+	 ruleCollectionTypeCS
+{ after(grammarAccess.getCollectionTypeCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionTypeCS
+ruleCollectionTypeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getGroup()); }
+(rule__CollectionTypeCS__Group__0)
+{ after(grammarAccess.getCollectionTypeCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTupleTypeCS
+entryRuleTupleTypeCS 
+:
+{ before(grammarAccess.getTupleTypeCSRule()); }
+	 ruleTupleTypeCS
+{ after(grammarAccess.getTupleTypeCSRule()); } 
+	 EOF 
+;
+
+// Rule TupleTypeCS
+ruleTupleTypeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup()); }
+(rule__TupleTypeCS__Group__0)
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTuplePartCS
+entryRuleTuplePartCS 
+:
+{ before(grammarAccess.getTuplePartCSRule()); }
+	 ruleTuplePartCS
+{ after(grammarAccess.getTuplePartCSRule()); } 
+	 EOF 
+;
+
+// Rule TuplePartCS
+ruleTuplePartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getGroup()); }
+(rule__TuplePartCS__Group__0)
+{ after(grammarAccess.getTuplePartCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionLiteralExpCS
+entryRuleCollectionLiteralExpCS 
+:
+{ before(grammarAccess.getCollectionLiteralExpCSRule()); }
+	 ruleCollectionLiteralExpCS
+{ after(grammarAccess.getCollectionLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionLiteralExpCS
+ruleCollectionLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }
+(rule__CollectionLiteralExpCS__Group__0)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionLiteralPartCS
+entryRuleCollectionLiteralPartCS 
+:
+{ before(grammarAccess.getCollectionLiteralPartCSRule()); }
+	 ruleCollectionLiteralPartCS
+{ after(grammarAccess.getCollectionLiteralPartCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionLiteralPartCS
+ruleCollectionLiteralPartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }
+(rule__CollectionLiteralPartCS__Alternatives)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionPatternCS
+entryRuleCollectionPatternCS 
+:
+{ before(grammarAccess.getCollectionPatternCSRule()); }
+	 ruleCollectionPatternCS
+{ after(grammarAccess.getCollectionPatternCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionPatternCS
+ruleCollectionPatternCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup()); }
+(rule__CollectionPatternCS__Group__0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleConstructorPartCS
+entryRuleConstructorPartCS 
+:
+{ before(grammarAccess.getConstructorPartCSRule()); }
+	 ruleConstructorPartCS
+{ after(grammarAccess.getConstructorPartCSRule()); } 
+	 EOF 
+;
+
+// Rule ConstructorPartCS
+ruleConstructorPartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getGroup()); }
+(rule__ConstructorPartCS__Group__0)
+{ after(grammarAccess.getConstructorPartCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePatternExpCS
+entryRulePatternExpCS 
+:
+{ before(grammarAccess.getPatternExpCSRule()); }
+	 rulePatternExpCS
+{ after(grammarAccess.getPatternExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PatternExpCS
+rulePatternExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getGroup()); }
+(rule__PatternExpCS__Group__0)
+{ after(grammarAccess.getPatternExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLambdaLiteralExpCS
+entryRuleLambdaLiteralExpCS 
+:
+{ before(grammarAccess.getLambdaLiteralExpCSRule()); }
+	 ruleLambdaLiteralExpCS
+{ after(grammarAccess.getLambdaLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule LambdaLiteralExpCS
+ruleLambdaLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }
+(rule__LambdaLiteralExpCS__Group__0)
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimitiveLiteralExpCS
+entryRulePrimitiveLiteralExpCS 
+:
+{ before(grammarAccess.getPrimitiveLiteralExpCSRule()); }
+	 rulePrimitiveLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrimitiveLiteralExpCS
+rulePrimitiveLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }
+(rule__PrimitiveLiteralExpCS__Alternatives)
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTupleLiteralExpCS
+entryRuleTupleLiteralExpCS 
+:
+{ before(grammarAccess.getTupleLiteralExpCSRule()); }
+	 ruleTupleLiteralExpCS
+{ after(grammarAccess.getTupleLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TupleLiteralExpCS
+ruleTupleLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }
+(rule__TupleLiteralExpCS__Group__0)
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTupleLiteralPartCS
+entryRuleTupleLiteralPartCS 
+:
+{ before(grammarAccess.getTupleLiteralPartCSRule()); }
+	 ruleTupleLiteralPartCS
+{ after(grammarAccess.getTupleLiteralPartCSRule()); } 
+	 EOF 
+;
+
+// Rule TupleLiteralPartCS
+ruleTupleLiteralPartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }
+(rule__TupleLiteralPartCS__Group__0)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNumberLiteralExpCS
+entryRuleNumberLiteralExpCS 
+:
+{ before(grammarAccess.getNumberLiteralExpCSRule()); }
+	 ruleNumberLiteralExpCS
+{ after(grammarAccess.getNumberLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NumberLiteralExpCS
+ruleNumberLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }
+(rule__NumberLiteralExpCS__SymbolAssignment)
+{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStringLiteralExpCS
+entryRuleStringLiteralExpCS 
+:
+{ before(grammarAccess.getStringLiteralExpCSRule()); }
+	 ruleStringLiteralExpCS
+{ after(grammarAccess.getStringLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule StringLiteralExpCS
+ruleStringLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+(
+{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+(rule__StringLiteralExpCS__SegmentsAssignment)
+{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+)
+(
+{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+(rule__StringLiteralExpCS__SegmentsAssignment)*
+{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBooleanLiteralExpCS
+entryRuleBooleanLiteralExpCS 
+:
+{ before(grammarAccess.getBooleanLiteralExpCSRule()); }
+	 ruleBooleanLiteralExpCS
+{ after(grammarAccess.getBooleanLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule BooleanLiteralExpCS
+ruleBooleanLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }
+(rule__BooleanLiteralExpCS__Alternatives)
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnlimitedNaturalLiteralExpCS
+entryRuleUnlimitedNaturalLiteralExpCS 
+:
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }
+	 ruleUnlimitedNaturalLiteralExpCS
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule UnlimitedNaturalLiteralExpCS
+ruleUnlimitedNaturalLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }
+(rule__UnlimitedNaturalLiteralExpCS__Group__0)
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleInvalidLiteralExpCS
+entryRuleInvalidLiteralExpCS 
+:
+{ before(grammarAccess.getInvalidLiteralExpCSRule()); }
+	 ruleInvalidLiteralExpCS
+{ after(grammarAccess.getInvalidLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule InvalidLiteralExpCS
+ruleInvalidLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }
+(rule__InvalidLiteralExpCS__Group__0)
+{ after(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNullLiteralExpCS
+entryRuleNullLiteralExpCS 
+:
+{ before(grammarAccess.getNullLiteralExpCSRule()); }
+	 ruleNullLiteralExpCS
+{ after(grammarAccess.getNullLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NullLiteralExpCS
+ruleNullLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }
+(rule__NullLiteralExpCS__Group__0)
+{ after(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeLiteralCS
+entryRuleTypeLiteralCS 
+:
+{ before(grammarAccess.getTypeLiteralCSRule()); }
+	 ruleTypeLiteralCS
+{ after(grammarAccess.getTypeLiteralCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeLiteralCS
+ruleTypeLiteralCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }
+(rule__TypeLiteralCS__Alternatives)
+{ after(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeLiteralWithMultiplicityCS
+entryRuleTypeLiteralWithMultiplicityCS 
+:
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }
+	 ruleTypeLiteralWithMultiplicityCS
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeLiteralWithMultiplicityCS
+ruleTypeLiteralWithMultiplicityCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }
+(rule__TypeLiteralWithMultiplicityCS__Group__0)
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeLiteralExpCS
+entryRuleTypeLiteralExpCS 
+:
+{ before(grammarAccess.getTypeLiteralExpCSRule()); }
+	 ruleTypeLiteralExpCS
+{ after(grammarAccess.getTypeLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeLiteralExpCS
+ruleTypeLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }
+(rule__TypeLiteralExpCS__OwnedTypeAssignment)
+{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeNameExpCS
+entryRuleTypeNameExpCS 
+:
+{ before(grammarAccess.getTypeNameExpCSRule()); }
+	 ruleTypeNameExpCS
+{ after(grammarAccess.getTypeNameExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeNameExpCS
+ruleTypeNameExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getGroup()); }
+(rule__TypeNameExpCS__Group__0)
+{ after(grammarAccess.getTypeNameExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeExpCS
+entryRuleTypeExpCS 
+:
+{ before(grammarAccess.getTypeExpCSRule()); }
+	 ruleTypeExpCS
+{ after(grammarAccess.getTypeExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeExpCS
+ruleTypeExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getGroup()); }
+(rule__TypeExpCS__Group__0)
+{ after(grammarAccess.getTypeExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleExpCS
+entryRuleExpCS 
+:
+{ before(grammarAccess.getExpCSRule()); }
+	 ruleExpCS
+{ after(grammarAccess.getExpCSRule()); } 
+	 EOF 
+;
+
+// Rule ExpCS
+ruleExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getExpCSAccess().getAlternatives()); }
+(rule__ExpCS__Alternatives)
+{ after(grammarAccess.getExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrefixedLetExpCS
+entryRulePrefixedLetExpCS 
+:
+{ before(grammarAccess.getPrefixedLetExpCSRule()); }
+	 rulePrefixedLetExpCS
+{ after(grammarAccess.getPrefixedLetExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrefixedLetExpCS
+rulePrefixedLetExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }
+(rule__PrefixedLetExpCS__Alternatives)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrefixedPrimaryExpCS
+entryRulePrefixedPrimaryExpCS 
+:
+{ before(grammarAccess.getPrefixedPrimaryExpCSRule()); }
+	 rulePrefixedPrimaryExpCS
+{ after(grammarAccess.getPrefixedPrimaryExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrefixedPrimaryExpCS
+rulePrefixedPrimaryExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }
+(rule__PrefixedPrimaryExpCS__Alternatives)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimaryExpCS
+entryRulePrimaryExpCS 
+:
+{ before(grammarAccess.getPrimaryExpCSRule()); }
+	 rulePrimaryExpCS
+{ after(grammarAccess.getPrimaryExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrimaryExpCS
+rulePrimaryExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }
+(rule__PrimaryExpCS__Alternatives)
+{ after(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNameExpCS
+entryRuleNameExpCS 
+:
+{ before(grammarAccess.getNameExpCSRule()); }
+	 ruleNameExpCS
+{ after(grammarAccess.getNameExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NameExpCS
+ruleNameExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNameExpCSAccess().getGroup()); }
+(rule__NameExpCS__Group__0)
+{ after(grammarAccess.getNameExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCurlyBracketedClauseCS
+entryRuleCurlyBracketedClauseCS 
+:
+{ before(grammarAccess.getCurlyBracketedClauseCSRule()); }
+	 ruleCurlyBracketedClauseCS
+{ after(grammarAccess.getCurlyBracketedClauseCSRule()); } 
+	 EOF 
+;
+
+// Rule CurlyBracketedClauseCS
+ruleCurlyBracketedClauseCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }
+(rule__CurlyBracketedClauseCS__Group__0)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRoundBracketedClauseCS
+entryRuleRoundBracketedClauseCS 
+:
+{ before(grammarAccess.getRoundBracketedClauseCSRule()); }
+	 ruleRoundBracketedClauseCS
+{ after(grammarAccess.getRoundBracketedClauseCSRule()); } 
+	 EOF 
+;
+
+// Rule RoundBracketedClauseCS
+ruleRoundBracketedClauseCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }
+(rule__RoundBracketedClauseCS__Group__0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSquareBracketedClauseCS
+entryRuleSquareBracketedClauseCS 
+:
+{ before(grammarAccess.getSquareBracketedClauseCSRule()); }
+	 ruleSquareBracketedClauseCS
+{ after(grammarAccess.getSquareBracketedClauseCSRule()); } 
+	 EOF 
+;
+
+// Rule SquareBracketedClauseCS
+ruleSquareBracketedClauseCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }
+(rule__SquareBracketedClauseCS__Group__0)
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingArgCS
+entryRuleNavigatingArgCS 
+:
+{ before(grammarAccess.getNavigatingArgCSRule()); }
+	 ruleNavigatingArgCS
+{ after(grammarAccess.getNavigatingArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingArgCS
+ruleNavigatingArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }
+(rule__NavigatingArgCS__Alternatives)
+{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingBarArgCS
+entryRuleNavigatingBarArgCS 
+:
+{ before(grammarAccess.getNavigatingBarArgCSRule()); }
+	 ruleNavigatingBarArgCS
+{ after(grammarAccess.getNavigatingBarArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingBarArgCS
+ruleNavigatingBarArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }
+(rule__NavigatingBarArgCS__Group__0)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingCommaArgCS
+entryRuleNavigatingCommaArgCS 
+:
+{ before(grammarAccess.getNavigatingCommaArgCSRule()); }
+	 ruleNavigatingCommaArgCS
+{ after(grammarAccess.getNavigatingCommaArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingCommaArgCS
+ruleNavigatingCommaArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }
+(rule__NavigatingCommaArgCS__Group__0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingSemiArgCS
+entryRuleNavigatingSemiArgCS 
+:
+{ before(grammarAccess.getNavigatingSemiArgCSRule()); }
+	 ruleNavigatingSemiArgCS
+{ after(grammarAccess.getNavigatingSemiArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingSemiArgCS
+ruleNavigatingSemiArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }
+(rule__NavigatingSemiArgCS__Group__0)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingArgExpCS
+entryRuleNavigatingArgExpCS 
+:
+{ before(grammarAccess.getNavigatingArgExpCSRule()); }
+	 ruleNavigatingArgExpCS
+{ after(grammarAccess.getNavigatingArgExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingArgExpCS
+ruleNavigatingArgExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); }
+	ruleExpCS
+{ after(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIfExpCS
+entryRuleIfExpCS 
+:
+{ before(grammarAccess.getIfExpCSRule()); }
+	 ruleIfExpCS
+{ after(grammarAccess.getIfExpCSRule()); } 
+	 EOF 
+;
+
+// Rule IfExpCS
+ruleIfExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIfExpCSAccess().getGroup()); }
+(rule__IfExpCS__Group__0)
+{ after(grammarAccess.getIfExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleElseIfThenExpCS
+entryRuleElseIfThenExpCS 
+:
+{ before(grammarAccess.getElseIfThenExpCSRule()); }
+	 ruleElseIfThenExpCS
+{ after(grammarAccess.getElseIfThenExpCSRule()); } 
+	 EOF 
+;
+
+// Rule ElseIfThenExpCS
+ruleElseIfThenExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }
+(rule__ElseIfThenExpCS__Group__0)
+{ after(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLetExpCS
+entryRuleLetExpCS 
+:
+{ before(grammarAccess.getLetExpCSRule()); }
+	 ruleLetExpCS
+{ after(grammarAccess.getLetExpCSRule()); } 
+	 EOF 
+;
+
+// Rule LetExpCS
+ruleLetExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLetExpCSAccess().getGroup()); }
+(rule__LetExpCS__Group__0)
+{ after(grammarAccess.getLetExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLetVariableCS
+entryRuleLetVariableCS 
+:
+{ before(grammarAccess.getLetVariableCSRule()); }
+	 ruleLetVariableCS
+{ after(grammarAccess.getLetVariableCSRule()); } 
+	 EOF 
+;
+
+// Rule LetVariableCS
+ruleLetVariableCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getGroup()); }
+(rule__LetVariableCS__Group__0)
+{ after(grammarAccess.getLetVariableCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNestedExpCS
+entryRuleNestedExpCS 
+:
+{ before(grammarAccess.getNestedExpCSRule()); }
+	 ruleNestedExpCS
+{ after(grammarAccess.getNestedExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NestedExpCS
+ruleNestedExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getGroup()); }
+(rule__NestedExpCS__Group__0)
+{ after(grammarAccess.getNestedExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSelfExpCS
+entryRuleSelfExpCS 
+:
+{ before(grammarAccess.getSelfExpCSRule()); }
+	 ruleSelfExpCS
+{ after(grammarAccess.getSelfExpCSRule()); } 
+	 EOF 
+;
+
+// Rule SelfExpCS
+ruleSelfExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSelfExpCSAccess().getGroup()); }
+(rule__SelfExpCS__Group__0)
+{ after(grammarAccess.getSelfExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMultiplicityBoundsCS
+entryRuleMultiplicityBoundsCS 
+:
+{ before(grammarAccess.getMultiplicityBoundsCSRule()); }
+	 ruleMultiplicityBoundsCS
+{ after(grammarAccess.getMultiplicityBoundsCSRule()); } 
+	 EOF 
+;
+
+// Rule MultiplicityBoundsCS
+ruleMultiplicityBoundsCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }
+(rule__MultiplicityBoundsCS__Group__0)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMultiplicityCS
+entryRuleMultiplicityCS 
+:
+{ before(grammarAccess.getMultiplicityCSRule()); }
+	 ruleMultiplicityCS
+{ after(grammarAccess.getMultiplicityCSRule()); } 
+	 EOF 
+;
+
+// Rule MultiplicityCS
+ruleMultiplicityCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getGroup()); }
+(rule__MultiplicityCS__Group__0)
+{ after(grammarAccess.getMultiplicityCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMultiplicityStringCS
+entryRuleMultiplicityStringCS 
+:
+{ before(grammarAccess.getMultiplicityStringCSRule()); }
+	 ruleMultiplicityStringCS
+{ after(grammarAccess.getMultiplicityStringCSRule()); } 
+	 EOF 
+;
+
+// Rule MultiplicityStringCS
+ruleMultiplicityStringCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }
+(rule__MultiplicityStringCS__StringBoundsAssignment)
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePathNameCS
+entryRulePathNameCS 
+:
+{ before(grammarAccess.getPathNameCSRule()); }
+	 rulePathNameCS
+{ after(grammarAccess.getPathNameCSRule()); } 
+	 EOF 
+;
+
+// Rule PathNameCS
+rulePathNameCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPathNameCSAccess().getGroup()); }
+(rule__PathNameCS__Group__0)
+{ after(grammarAccess.getPathNameCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFirstPathElementCS
+entryRuleFirstPathElementCS 
+:
+{ before(grammarAccess.getFirstPathElementCSRule()); }
+	 ruleFirstPathElementCS
+{ after(grammarAccess.getFirstPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule FirstPathElementCS
+ruleFirstPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }
+(rule__FirstPathElementCS__ReferredElementAssignment)
+{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNextPathElementCS
+entryRuleNextPathElementCS 
+:
+{ before(grammarAccess.getNextPathElementCSRule()); }
+	 ruleNextPathElementCS
+{ after(grammarAccess.getNextPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule NextPathElementCS
+ruleNextPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }
+(rule__NextPathElementCS__ReferredElementAssignment)
+{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTemplateBindingCS
+entryRuleTemplateBindingCS 
+:
+{ before(grammarAccess.getTemplateBindingCSRule()); }
+	 ruleTemplateBindingCS
+{ after(grammarAccess.getTemplateBindingCSRule()); } 
+	 EOF 
+;
+
+// Rule TemplateBindingCS
+ruleTemplateBindingCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getGroup()); }
+(rule__TemplateBindingCS__Group__0)
+{ after(grammarAccess.getTemplateBindingCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTemplateParameterSubstitutionCS
+entryRuleTemplateParameterSubstitutionCS 
+:
+{ before(grammarAccess.getTemplateParameterSubstitutionCSRule()); }
+	 ruleTemplateParameterSubstitutionCS
+{ after(grammarAccess.getTemplateParameterSubstitutionCSRule()); } 
+	 EOF 
+;
+
+// Rule TemplateParameterSubstitutionCS
+ruleTemplateParameterSubstitutionCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }
+(rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment)
+{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleTypeParameterCS
+entryRuleTypeParameterCS 
+:
+{ before(grammarAccess.getTypeParameterCSRule()); }
+	 ruleTypeParameterCS
+{ after(grammarAccess.getTypeParameterCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeParameterCS
+ruleTypeParameterCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup()); }
+(rule__TypeParameterCS__Group__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeRefCS
+entryRuleTypeRefCS 
+:
+{ before(grammarAccess.getTypeRefCSRule()); }
+	 ruleTypeRefCS
+{ after(grammarAccess.getTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeRefCS
+ruleTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeRefCSAccess().getAlternatives()); }
+(rule__TypeRefCS__Alternatives)
+{ after(grammarAccess.getTypeRefCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypedRefCS
+entryRuleTypedRefCS 
+:
+{ before(grammarAccess.getTypedRefCSRule()); }
+	 ruleTypedRefCS
+{ after(grammarAccess.getTypedRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypedRefCS
+ruleTypedRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall()); }
+	ruleTypedTypeRefCS
+{ after(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypedTypeRefCS
+entryRuleTypedTypeRefCS 
+:
+{ before(grammarAccess.getTypedTypeRefCSRule()); }
+	 ruleTypedTypeRefCS
+{ after(grammarAccess.getTypedTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypedTypeRefCS
+ruleTypedTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }
+(rule__TypedTypeRefCS__Group__0)
+{ after(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleWildcardTypeRefCS
+entryRuleWildcardTypeRefCS 
+:
+{ before(grammarAccess.getWildcardTypeRefCSRule()); }
+	 ruleWildcardTypeRefCS
+{ after(grammarAccess.getWildcardTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule WildcardTypeRefCS
+ruleWildcardTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }
+(rule__WildcardTypeRefCS__Group__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleID
+entryRuleID 
+:
+{ before(grammarAccess.getIDRule()); }
+	 ruleID
+{ after(grammarAccess.getIDRule()); } 
+	 EOF 
+;
+
+// Rule ID
+ruleID
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIDAccess().getAlternatives()); }
+(rule__ID__Alternatives)
+{ after(grammarAccess.getIDAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIdentifier
+entryRuleIdentifier 
+:
+{ before(grammarAccess.getIdentifierRule()); }
+	 ruleIdentifier
+{ after(grammarAccess.getIdentifierRule()); } 
+	 EOF 
+;
+
+// Rule Identifier
+ruleIdentifier
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }
+	ruleID
+{ after(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLOWER
+entryRuleLOWER 
+:
+{ before(grammarAccess.getLOWERRule()); }
+	 ruleLOWER
+{ after(grammarAccess.getLOWERRule()); } 
+	 EOF 
+;
+
+// Rule LOWER
+ruleLOWER
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }
+	RULE_INT
+{ after(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNUMBER_LITERAL
+entryRuleNUMBER_LITERAL 
+:
+{ before(grammarAccess.getNUMBER_LITERALRule()); }
+	 ruleNUMBER_LITERAL
+{ after(grammarAccess.getNUMBER_LITERALRule()); } 
+	 EOF 
+;
+
+// Rule NUMBER_LITERAL
+ruleNUMBER_LITERAL
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }
+	RULE_INT
+{ after(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStringLiteral
+entryRuleStringLiteral 
+:
+{ before(grammarAccess.getStringLiteralRule()); }
+	 ruleStringLiteral
+{ after(grammarAccess.getStringLiteralRule()); } 
+	 EOF 
+;
+
+// Rule StringLiteral
+ruleStringLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+	RULE_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUPPER
+entryRuleUPPER 
+:
+{ before(grammarAccess.getUPPERRule()); }
+	 ruleUPPER
+{ after(grammarAccess.getUPPERRule()); } 
+	 EOF 
+;
+
+// Rule UPPER
+ruleUPPER
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUPPERAccess().getAlternatives()); }
+(rule__UPPER__Alternatives)
+{ after(grammarAccess.getUPPERAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleURI
+entryRuleURI 
+:
+{ before(grammarAccess.getURIRule()); }
+	 ruleURI
+{ after(grammarAccess.getURIRule()); } 
+	 EOF 
+;
+
+// Rule URI
+ruleURI
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+	RULE_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+rule__EssentialOCLUnaryOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }
+
+	'-' 
+
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }
+
+	'not' 
+
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EssentialOCLInfixOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }
+
+	'*' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }
+
+	'/' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }
+
+	'+' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }
+
+	'-' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }
+
+	'>' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }
+
+	'<' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }
+
+	'>=' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }
+
+	'<=' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }
+
+	'=' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }
+
+	'<>' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }
+
+	'and' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }
+
+	'or' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }
+
+	'xor' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }
+
+	'implies' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EssentialOCLNavigationOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }
+
+	'.' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }
+
+	'->' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }
+
+	'?.' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }
+
+	'?->' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BinaryOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }
+	ruleInfixOperatorName
+{ after(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }
+	ruleNavigationOperatorName
+{ after(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EssentialOCLUnreservedName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }
+	ruleUnrestrictedName
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }
+	ruleCollectionTypeIdentifier
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }
+	rulePrimitiveTypeIdentifier
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }
+
+	'Tuple' 
+
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }
+(rule__URIFirstPathElementCS__ReferredElementAssignment_0)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }
+(rule__URIFirstPathElementCS__Group_1__0)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimitiveTypeIdentifier__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }
+
+	'Boolean' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }
+
+	'Integer' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }
+
+	'Real' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }
+
+	'String' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }
+
+	'UnlimitedNatural' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }
+
+	'OclAny' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }
+
+	'OclInvalid' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); }
+
+	'OclVoid' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeIdentifier__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }
+
+	'Set' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }
+
+	'Bag' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }
+
+	'Sequence' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }
+
+	'Collection' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }
+
+	'OrderedSet' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }
+(rule__CollectionLiteralPartCS__Group_0__0)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }
+(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }
+	ruleExpCS
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }
+	rulePatternExpCS
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimitiveLiteralExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }
+	ruleNumberLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }
+	ruleStringLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }
+	ruleBooleanLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }
+	ruleUnlimitedNaturalLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }
+	ruleInvalidLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }
+	ruleNullLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanLiteralExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }
+(rule__BooleanLiteralExpCS__SymbolAssignment_0)
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }
+(rule__BooleanLiteralExpCS__SymbolAssignment_1)
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }
+	rulePrimitiveTypeCS
+{ after(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }
+	ruleCollectionTypeCS
+{ after(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }
+	ruleTupleTypeCS
+{ after(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }
+	ruleTypeNameExpCS
+{ after(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }
+	ruleTypeLiteralCS
+{ after(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }
+	ruleCollectionPatternCS
+{ after(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getGroup_0()); }
+(rule__ExpCS__Group_0__0)
+{ after(grammarAccess.getExpCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }
+	rulePrefixedLetExpCS
+{ after(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }
+(rule__PrefixedLetExpCS__Group_0__0)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }
+	ruleLetExpCS
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }
+(rule__PrefixedPrimaryExpCS__Group_0__0)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }
+	rulePrimaryExpCS
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }
+	ruleNestedExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }
+	ruleIfExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }
+	ruleSelfExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }
+	rulePrimitiveLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }
+	ruleTupleLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }
+	ruleCollectionLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }
+	ruleLambdaLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }
+	ruleTypeLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }
+	ruleNameExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }
+(rule__CurlyBracketedClauseCS__Group_2_0__0)?
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }
+(rule__CurlyBracketedClauseCS__ValueAssignment_2_1)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }
+(rule__NavigatingArgCS__Group_0__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }
+(rule__NavigatingArgCS__Group_1__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Alternatives_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }
+(rule__NavigatingArgCS__Group_0_1_0__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }
+(rule__NavigatingArgCS__Group_0_1_1__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }
+(rule__NavigatingCommaArgCS__Group_2_0__0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }
+(rule__NavigatingCommaArgCS__Group_2_1__0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedConditionAlternatives_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }
+	ruleExpCS
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }
+	rulePatternExpCS
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }
+	ruleMultiplicityBoundsCS
+{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }
+	ruleMultiplicityStringCS
+{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityStringCS__StringBoundsAlternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }
+
+	'*' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }
+
+	'+' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }
+
+	'?' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }
+(rule__TypeParameterCS__Group_1_0__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }
+(rule__TypeParameterCS__Group_1_1__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeRefCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }
+	ruleTypedRefCS
+{ after(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }
+	ruleWildcardTypeRefCS
+{ after(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }
+(rule__WildcardTypeRefCS__Group_2_0__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }
+(rule__WildcardTypeRefCS__Group_2_1__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ID__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }
+	RULE_SIMPLE_ID
+{ after(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }
+	RULE_ESCAPED_ID
+{ after(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UPPER__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }
+	RULE_INT
+{ after(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }
+
+	'*' 
+
+{ after(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+rule__URIFirstPathElementCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIFirstPathElementCS__Group_1__0__Impl
+	rule__URIFirstPathElementCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }
+(
+
+)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__URIFirstPathElementCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIFirstPathElementCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }
+(rule__URIFirstPathElementCS__ReferredElementAssignment_1_1)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionTypeCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group__0__Impl
+	rule__CollectionTypeCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }
+(rule__CollectionTypeCS__NameAssignment_0)
+{ after(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionTypeCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }
+(rule__CollectionTypeCS__Group_1__0)?
+{ after(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionTypeCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group_1__0__Impl
+	rule__CollectionTypeCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionTypeCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group_1__1__Impl
+	rule__CollectionTypeCS__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }
+(rule__CollectionTypeCS__OwnedTypeAssignment_1_1)
+{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionTypeCS__Group_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TupleTypeCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group__0__Impl
+	rule__TupleTypeCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }
+(rule__TupleTypeCS__NameAssignment_0)
+{ after(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }
+(rule__TupleTypeCS__Group_1__0)?
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TupleTypeCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1__0__Impl
+	rule__TupleTypeCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1__1__Impl
+	rule__TupleTypeCS__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }
+(rule__TupleTypeCS__Group_1_1__0)?
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TupleTypeCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1__0__Impl
+	rule__TupleTypeCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }
+(rule__TupleTypeCS__OwnedPartsAssignment_1_1_0)
+{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }
+(rule__TupleTypeCS__Group_1_1_1__0)*
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TupleTypeCS__Group_1_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1_1__0__Impl
+	rule__TupleTypeCS__Group_1_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }
+(rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1)
+{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TuplePartCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TuplePartCS__Group__0__Impl
+	rule__TuplePartCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }
+(rule__TuplePartCS__NameAssignment_0)
+{ after(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TuplePartCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TuplePartCS__Group__1__Impl
+	rule__TuplePartCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }
+
+	':' 
+
+{ after(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TuplePartCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TuplePartCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }
+(rule__TuplePartCS__OwnedTypeAssignment_2)
+{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__CollectionLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__0__Impl
+	rule__CollectionLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }
+(rule__CollectionLiteralExpCS__OwnedTypeAssignment_0)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__1__Impl
+	rule__CollectionLiteralExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__2__Impl
+	rule__CollectionLiteralExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }
+(rule__CollectionLiteralExpCS__Group_2__0)?
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__CollectionLiteralExpCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2__0__Impl
+	rule__CollectionLiteralExpCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }
+(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }
+(rule__CollectionLiteralExpCS__Group_2_1__0)*
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionLiteralExpCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2_1__0__Impl
+	rule__CollectionLiteralExpCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }
+(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionLiteralPartCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0__0__Impl
+	rule__CollectionLiteralPartCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }
+(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralPartCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }
+(rule__CollectionLiteralPartCS__Group_0_1__0)?
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionLiteralPartCS__Group_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0_1__0__Impl
+	rule__CollectionLiteralPartCS__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }
+
+	'..' 
+
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralPartCS__Group_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }
+(rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionPatternCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__0__Impl
+	rule__CollectionPatternCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }
+(rule__CollectionPatternCS__OwnedTypeAssignment_0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__1__Impl
+	rule__CollectionPatternCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__2__Impl
+	rule__CollectionPatternCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }
+(rule__CollectionPatternCS__Group_2__0)?
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__CollectionPatternCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2__0__Impl
+	rule__CollectionPatternCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }
+(rule__CollectionPatternCS__OwnedPartsAssignment_2_0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2__1__Impl
+	rule__CollectionPatternCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }
+(rule__CollectionPatternCS__Group_2_1__0)*
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }
+(rule__CollectionPatternCS__Group_2_2__0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__CollectionPatternCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_1__0__Impl
+	rule__CollectionPatternCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }
+(rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1)
+{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionPatternCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_2__0__Impl
+	rule__CollectionPatternCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }
+
+	'++' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }
+(rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1)
+{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ConstructorPartCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstructorPartCS__Group__0__Impl
+	rule__ConstructorPartCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }
+(rule__ConstructorPartCS__ReferredPropertyAssignment_0)
+{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstructorPartCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstructorPartCS__Group__1__Impl
+	rule__ConstructorPartCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstructorPartCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstructorPartCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }
+(rule__ConstructorPartCS__OwnedInitExpressionAssignment_2)
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PatternExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PatternExpCS__Group__0__Impl
+	rule__PatternExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }
+(rule__PatternExpCS__PatternVariableNameAssignment_0)?
+{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PatternExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PatternExpCS__Group__1__Impl
+	rule__PatternExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }
+
+	':' 
+
+{ after(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PatternExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PatternExpCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }
+(rule__PatternExpCS__OwnedPatternTypeAssignment_2)
+{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LambdaLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__0__Impl
+	rule__LambdaLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }
+
+	'Lambda' 
+
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__1__Impl
+	rule__LambdaLiteralExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaLiteralExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__2__Impl
+	rule__LambdaLiteralExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }
+(rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2)
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaLiteralExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TupleLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__0__Impl
+	rule__TupleLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }
+
+	'Tuple' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__1__Impl
+	rule__TupleLiteralExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__2__Impl
+	rule__TupleLiteralExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }
+(rule__TupleLiteralExpCS__OwnedPartsAssignment_2)
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__3__Impl
+	rule__TupleLiteralExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }
+(rule__TupleLiteralExpCS__Group_3__0)*
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__TupleLiteralExpCS__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group_3__0__Impl
+	rule__TupleLiteralExpCS__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }
+(rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1)
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TupleLiteralPartCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__0__Impl
+	rule__TupleLiteralPartCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }
+(rule__TupleLiteralPartCS__NameAssignment_0)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__1__Impl
+	rule__TupleLiteralPartCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }
+(rule__TupleLiteralPartCS__Group_1__0)?
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__2__Impl
+	rule__TupleLiteralPartCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }
+
+	'=' 
+
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }
+(rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TupleLiteralPartCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group_1__0__Impl
+	rule__TupleLiteralPartCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }
+
+	':' 
+
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }
+(rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__UnlimitedNaturalLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl
+	rule__UnlimitedNaturalLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__UnlimitedNaturalLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }
+
+	'*' 
+
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__InvalidLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvalidLiteralExpCS__Group__0__Impl
+	rule__InvalidLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvalidLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvalidLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvalidLiteralExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvalidLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }
+
+	'invalid' 
+
+{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NullLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NullLiteralExpCS__Group__0__Impl
+	rule__NullLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NullLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NullLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NullLiteralExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NullLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }
+
+	'null' 
+
+{ after(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeLiteralWithMultiplicityCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeLiteralWithMultiplicityCS__Group__0__Impl
+	rule__TypeLiteralWithMultiplicityCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralWithMultiplicityCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }
+	ruleTypeLiteralCS
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeLiteralWithMultiplicityCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeLiteralWithMultiplicityCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralWithMultiplicityCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }
+(rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1)?
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeNameExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group__0__Impl
+	rule__TypeNameExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+(rule__TypeNameExpCS__OwnedPathNameAssignment_0)
+{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }
+(rule__TypeNameExpCS__Group_1__0)?
+{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeNameExpCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1__0__Impl
+	rule__TypeNameExpCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }
+(rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0)
+{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }
+(rule__TypeNameExpCS__Group_1_1__0)?
+{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeNameExpCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1_1__0__Impl
+	rule__TypeNameExpCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1_1__1__Impl
+	rule__TypeNameExpCS__Group_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }
+(rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1)
+{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TypeExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeExpCS__Group__0__Impl
+	rule__TypeExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }
+(rule__TypeExpCS__Alternatives_0)
+{ after(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }
+(rule__TypeExpCS__OwnedMultiplicityAssignment_1)?
+{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ExpCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0__0__Impl
+	rule__ExpCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }
+	rulePrefixedPrimaryExpCS
+{ after(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExpCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getGroup_0_1()); }
+(rule__ExpCS__Group_0_1__0)?
+{ after(grammarAccess.getExpCSAccess().getGroup_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ExpCS__Group_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0_1__0__Impl
+	rule__ExpCS__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }
+(
+
+)
+{ after(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExpCS__Group_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0_1__1__Impl
+	rule__ExpCS__Group_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }
+(rule__ExpCS__NameAssignment_0_1_1)
+{ after(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExpCS__Group_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }
+(rule__ExpCS__OwnedRightAssignment_0_1_2)
+{ after(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PrefixedLetExpCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedLetExpCS__Group_0__0__Impl
+	rule__PrefixedLetExpCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }
+(
+
+)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedLetExpCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedLetExpCS__Group_0__1__Impl
+	rule__PrefixedLetExpCS__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }
+(rule__PrefixedLetExpCS__NameAssignment_0_1)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedLetExpCS__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedLetExpCS__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }
+(rule__PrefixedLetExpCS__OwnedRightAssignment_0_2)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PrefixedPrimaryExpCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedPrimaryExpCS__Group_0__0__Impl
+	rule__PrefixedPrimaryExpCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }
+(
+
+)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedPrimaryExpCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedPrimaryExpCS__Group_0__1__Impl
+	rule__PrefixedPrimaryExpCS__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }
+(rule__PrefixedPrimaryExpCS__NameAssignment_0_1)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedPrimaryExpCS__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedPrimaryExpCS__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }
+(rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NameExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__0__Impl
+	rule__NameExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+(rule__NameExpCS__OwnedPathNameAssignment_0)
+{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__1__Impl
+	rule__NameExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }
+(rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1)*
+{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__2__Impl
+	rule__NameExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }
+(rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2)?
+{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__3__Impl
+	rule__NameExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }
+(rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3)?
+{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getGroup_4()); }
+(rule__NameExpCS__Group_4__0)?
+{ after(grammarAccess.getNameExpCSAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NameExpCS__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group_4__0__Impl
+	rule__NameExpCS__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }
+(rule__NameExpCS__IsPreAssignment_4_0)
+{ after(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }
+
+	'pre' 
+
+{ after(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CurlyBracketedClauseCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__0__Impl
+	rule__CurlyBracketedClauseCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__1__Impl
+	rule__CurlyBracketedClauseCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__2__Impl
+	rule__CurlyBracketedClauseCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }
+(rule__CurlyBracketedClauseCS__Alternatives_2)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__CurlyBracketedClauseCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0__0__Impl
+	rule__CurlyBracketedClauseCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }
+(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }
+(rule__CurlyBracketedClauseCS__Group_2_0_1__0)*
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl
+	rule__CurlyBracketedClauseCS__Group_2_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }
+(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__0__Impl
+	rule__RoundBracketedClauseCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__1__Impl
+	rule__RoundBracketedClauseCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__2__Impl
+	rule__RoundBracketedClauseCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }
+(rule__RoundBracketedClauseCS__Group_2__0)?
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }
+
+	')' 
+
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__0__Impl
+	rule__RoundBracketedClauseCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__1__Impl
+	rule__RoundBracketedClauseCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__2__Impl
+	rule__RoundBracketedClauseCS__Group_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }
+(rule__RoundBracketedClauseCS__Group_2_2__0)?
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }
+(rule__RoundBracketedClauseCS__Group_2_3__0)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_2__0__Impl
+	rule__RoundBracketedClauseCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group_2_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_3__0__Impl
+	rule__RoundBracketedClauseCS__Group_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__SquareBracketedClauseCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__0__Impl
+	rule__SquareBracketedClauseCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__1__Impl
+	rule__SquareBracketedClauseCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }
+(rule__SquareBracketedClauseCS__OwnedTermsAssignment_1)
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__2__Impl
+	rule__SquareBracketedClauseCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }
+(rule__SquareBracketedClauseCS__Group_2__0)*
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }
+
+	']' 
+
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__SquareBracketedClauseCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group_2__0__Impl
+	rule__SquareBracketedClauseCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }
+(rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1)
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0__0__Impl
+	rule__NavigatingArgCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }
+(rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }
+(rule__NavigatingArgCS__Alternatives_0_1)?
+{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0_1_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0__0__Impl
+	rule__NavigatingArgCS__Group_0_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0__1__Impl
+	rule__NavigatingArgCS__Group_0_1_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }
+(rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }
+(rule__NavigatingArgCS__Group_0_1_0_2__0)?
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0_1_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0_2__0__Impl
+	rule__NavigatingArgCS__Group_0_1_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }
+(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_1__0__Impl
+	rule__NavigatingArgCS__Group_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }
+
+	'in' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }
+(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_1__0__Impl
+	rule__NavigatingArgCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }
+(rule__NavigatingArgCS__OwnedTypeAssignment_1_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingBarArgCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group__0__Impl
+	rule__NavigatingBarArgCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }
+(rule__NavigatingBarArgCS__PrefixAssignment_0)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group__1__Impl
+	rule__NavigatingBarArgCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+(rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }
+(rule__NavigatingBarArgCS__Group_2__0)?
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingBarArgCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2__0__Impl
+	rule__NavigatingBarArgCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2__1__Impl
+	rule__NavigatingBarArgCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }
+(rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }
+(rule__NavigatingBarArgCS__Group_2_2__0)?
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingBarArgCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2_2__0__Impl
+	rule__NavigatingBarArgCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+(rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group__0__Impl
+	rule__NavigatingCommaArgCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }
+(rule__NavigatingCommaArgCS__PrefixAssignment_0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group__1__Impl
+	rule__NavigatingCommaArgCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+(rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }
+(rule__NavigatingCommaArgCS__Alternatives_2)?
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0__0__Impl
+	rule__NavigatingCommaArgCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0__1__Impl
+	rule__NavigatingCommaArgCS__Group_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }
+(rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }
+(rule__NavigatingCommaArgCS__Group_2_0_2__0)?
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group_2_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl
+	rule__NavigatingCommaArgCS__Group_2_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }
+(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_1__0__Impl
+	rule__NavigatingCommaArgCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }
+
+	'in' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }
+(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingSemiArgCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group__0__Impl
+	rule__NavigatingSemiArgCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }
+(rule__NavigatingSemiArgCS__PrefixAssignment_0)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group__1__Impl
+	rule__NavigatingSemiArgCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+(rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }
+(rule__NavigatingSemiArgCS__Group_2__0)?
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingSemiArgCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2__0__Impl
+	rule__NavigatingSemiArgCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2__1__Impl
+	rule__NavigatingSemiArgCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }
+(rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }
+(rule__NavigatingSemiArgCS__Group_2_2__0)?
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingSemiArgCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2_2__0__Impl
+	rule__NavigatingSemiArgCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+(rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__IfExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__0__Impl
+	rule__IfExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }
+
+	'if' 
+
+{ after(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__1__Impl
+	rule__IfExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }
+(rule__IfExpCS__OwnedConditionAssignment_1)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__2__Impl
+	rule__IfExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }
+
+	'then' 
+
+{ after(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__3__Impl
+	rule__IfExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+(rule__IfExpCS__OwnedThenExpressionAssignment_3)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__4__Impl
+	rule__IfExpCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }
+(rule__IfExpCS__OwnedIfThenExpressionsAssignment_4)*
+{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__5__Impl
+	rule__IfExpCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }
+
+	'else' 
+
+{ after(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__6__Impl
+	rule__IfExpCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }
+(rule__IfExpCS__OwnedElseExpressionAssignment_6)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }
+
+	'endif' 
+
+{ after(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ElseIfThenExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__0__Impl
+	rule__ElseIfThenExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }
+
+	'elseif' 
+
+{ after(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ElseIfThenExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__1__Impl
+	rule__ElseIfThenExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }
+(rule__ElseIfThenExpCS__OwnedConditionAssignment_1)
+{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ElseIfThenExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__2__Impl
+	rule__ElseIfThenExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }
+
+	'then' 
+
+{ after(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ElseIfThenExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+(rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3)
+{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__LetExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__0__Impl
+	rule__LetExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }
+
+	'let' 
+
+{ after(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__1__Impl
+	rule__LetExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }
+(rule__LetExpCS__OwnedVariablesAssignment_1)
+{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__2__Impl
+	rule__LetExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getGroup_2()); }
+(rule__LetExpCS__Group_2__0)*
+{ after(grammarAccess.getLetExpCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__3__Impl
+	rule__LetExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }
+
+	'in' 
+
+{ after(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }
+(rule__LetExpCS__OwnedInExpressionAssignment_4)
+{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LetExpCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group_2__0__Impl
+	rule__LetExpCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }
+(rule__LetExpCS__OwnedVariablesAssignment_2_1)
+{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LetVariableCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__0__Impl
+	rule__LetVariableCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }
+(rule__LetVariableCS__NameAssignment_0)
+{ after(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__1__Impl
+	rule__LetVariableCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }
+(rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1)?
+{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__2__Impl
+	rule__LetVariableCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getGroup_2()); }
+(rule__LetVariableCS__Group_2__0)?
+{ after(grammarAccess.getLetVariableCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__3__Impl
+	rule__LetVariableCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }
+
+	'=' 
+
+{ after(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }
+(rule__LetVariableCS__OwnedInitExpressionAssignment_4)
+{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LetVariableCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group_2__0__Impl
+	rule__LetVariableCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }
+(rule__LetVariableCS__OwnedTypeAssignment_2_1)
+{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NestedExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NestedExpCS__Group__0__Impl
+	rule__NestedExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NestedExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NestedExpCS__Group__1__Impl
+	rule__NestedExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }
+(rule__NestedExpCS__OwnedExpressionAssignment_1)
+{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NestedExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NestedExpCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }
+
+	')' 
+
+{ after(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__SelfExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SelfExpCS__Group__0__Impl
+	rule__SelfExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SelfExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SelfExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SelfExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SelfExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }
+
+	'self' 
+
+{ after(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MultiplicityBoundsCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group__0__Impl
+	rule__MultiplicityBoundsCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }
+(rule__MultiplicityBoundsCS__LowerBoundAssignment_0)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityBoundsCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }
+(rule__MultiplicityBoundsCS__Group_1__0)?
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MultiplicityBoundsCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group_1__0__Impl
+	rule__MultiplicityBoundsCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }
+
+	'..' 
+
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityBoundsCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }
+(rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MultiplicityCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityCS__Group__0__Impl
+	rule__MultiplicityCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityCS__Group__1__Impl
+	rule__MultiplicityCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }
+(rule__MultiplicityCS__Alternatives_1)
+{ after(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }
+
+	']' 
+
+{ after(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PathNameCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group__0__Impl
+	rule__PathNameCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+(rule__PathNameCS__OwnedPathElementsAssignment_0)
+{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PathNameCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getGroup_1()); }
+(rule__PathNameCS__Group_1__0)*
+{ after(grammarAccess.getPathNameCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PathNameCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group_1__0__Impl
+	rule__PathNameCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }
+
+	'::' 
+
+{ after(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PathNameCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+(rule__PathNameCS__OwnedPathElementsAssignment_1_1)
+{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TemplateBindingCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__0__Impl
+	rule__TemplateBindingCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__1__Impl
+	rule__TemplateBindingCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }
+(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1)
+{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__2__Impl
+	rule__TemplateBindingCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }
+(rule__TemplateBindingCS__Group_2__0)*
+{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }
+
+	')' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TemplateBindingCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_2__0__Impl
+	rule__TemplateBindingCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }
+(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1)
+{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TypeParameterCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group__0__Impl
+	rule__TypeParameterCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }
+(rule__TypeParameterCS__NameAssignment_0)
+{ after(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }
+(rule__TypeParameterCS__Alternatives_1)?
+{ after(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__0__Impl
+	rule__TypeParameterCS__Group_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__1__Impl
+	rule__TypeParameterCS__Group_1_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }
+(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }
+(rule__TypeParameterCS__Group_1_0_2__0)*
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0_2__0__Impl
+	rule__TypeParameterCS__Group_1_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }
+
+	'&&' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }
+(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_1__0__Impl
+	rule__TypeParameterCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }
+
+	'super' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }
+(rule__TypeParameterCS__OwnedSuperAssignment_1_1_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypedTypeRefCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedTypeRefCS__Group__0__Impl
+	rule__TypedTypeRefCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }
+(rule__TypedTypeRefCS__OwnedPathNameAssignment_0)
+{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedTypeRefCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedTypeRefCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }
+(rule__TypedTypeRefCS__OwnedBindingAssignment_1)?
+{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__0__Impl
+	rule__WildcardTypeRefCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__1__Impl
+	rule__WildcardTypeRefCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }
+
+	'?' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }
+(rule__WildcardTypeRefCS__Alternatives_2)?
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_0__0__Impl
+	rule__WildcardTypeRefCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }
+(rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_1__0__Impl
+	rule__WildcardTypeRefCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }
+
+	'super' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }
+(rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+rule__Model__OwnedExpressionAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getModelAccess().getOwnedExpressionExpCSParserRuleCall_0()); }
+	ruleExpCS{ after(grammarAccess.getModelAccess().getOwnedExpressionExpCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__URIFirstPathElementCS__ReferredElementAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }
+)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__ReferredElementAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }
+	ruleURI{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }
+)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimitiveTypeCS__NameAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }
+	rulePrimitiveTypeIdentifier{ after(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }
+	ruleCollectionTypeIdentifier{ after(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__OwnedTypeAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+
+	'Tuple' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__OwnedPartsAssignment_1_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }
+	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }
+	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__OwnedTypeAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__OwnedTypeAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+	ruleCollectionTypeCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }
+	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }
+	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }
+	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }
+	rulePatternExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__OwnedTypeAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+	ruleCollectionTypeCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__OwnedPartsAssignment_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }
+	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }
+	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }
+	ruleIdentifier{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__ReferredPropertyAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }
+)
+{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__OwnedInitExpressionAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }
+(rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0)
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__PatternVariableNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__OwnedPatternTypeAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }
+	ruleExpCS{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__OwnedPartsAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }
+	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }
+	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }
+	ruleExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NumberLiteralExpCS__SymbolAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }
+	ruleNUMBER_LITERAL{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StringLiteralExpCS__SegmentsAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }
+	ruleStringLiteral{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanLiteralExpCS__SymbolAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+
+	'true' 
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanLiteralExpCS__SymbolAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+
+	'false' 
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+)
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+	ruleMultiplicityCS{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralExpCS__OwnedTypeAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }
+	ruleTypeLiteralWithMultiplicityCS{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__OwnedPathNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+	rulePathNameCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }
+	ruleCurlyBracketedClauseCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__OwnedMultiplicityAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+	ruleMultiplicityCS{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__NameAssignment_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }
+	ruleBinaryOperatorName{ after(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__OwnedRightAssignment_0_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }
+	ruleExpCS{ after(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__NameAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__OwnedRightAssignment_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }
+	rulePrefixedLetExpCS{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__NameAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }
+	rulePrefixedPrimaryExpCS{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedPathNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+	rulePathNameCS{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }
+	ruleSquareBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }
+	ruleRoundBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }
+	ruleCurlyBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__IsPreAssignment_4_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+(
+{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+
+	'@' 
+
+{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+)
+
+{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }
+	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }
+	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__ValueAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }
+	ruleStringLiteral{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }
+	ruleNavigatingArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }
+	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }
+	ruleNavigatingSemiArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }
+	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }
+	ruleNavigatingBarArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }
+	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__OwnedTermsAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }
+	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedTypeAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__PrefixAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+
+	'|' 
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__PrefixAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__PrefixAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+
+	';' 
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedConditionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }
+(rule__IfExpCS__OwnedConditionAlternatives_1_0)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedThenExpressionAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedIfThenExpressionsAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }
+	ruleElseIfThenExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedElseExpressionAssignment_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }
+	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__OwnedConditionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }
+	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__OwnedVariablesAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }
+	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__OwnedVariablesAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }
+	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__OwnedInExpressionAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }
+	ruleExpCS{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }
+	ruleRoundBracketedClauseCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__OwnedTypeAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__OwnedInitExpressionAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }
+	ruleExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__OwnedExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__LowerBoundAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }
+	ruleLOWER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }
+	ruleUPPER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityStringCS__StringBoundsAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }
+(rule__MultiplicityStringCS__StringBoundsAlternatives_0)
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__OwnedPathElementsAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }
+	ruleFirstPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__OwnedPathElementsAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }
+	ruleNextPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FirstPathElementCS__ReferredElementAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }
+)
+{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NextPathElementCS__ReferredElementAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }
+	ruleUnreservedName{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }
+)
+{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }
+	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }
+	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }
+	ruleTypeRefCS{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__TypeParameterCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedSuperAssignment_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__OwnedPathNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+	rulePathNameCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__OwnedBindingAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }
+	ruleTemplateBindingCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');
+
+fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');
+
+RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';
+
+RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';
+
+RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';
+
+RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;
+
+RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;
+
+RULE_INT : ('0'..'9')+;
+
+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/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/antlr/internal/InternalEssentialOCL.tokens b/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/antlr/internal/InternalEssentialOCL.tokens
index f122844..04bc69e 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/antlr/internal/InternalEssentialOCL.tokens
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl.ui/src-gen/org/eclipse/ocl/xtext/essentialocl/ui/contentassist/antlr/internal/InternalEssentialOCL.tokens
@@ -1,142 +1,142 @@
-'&&'=74

-'('=50

-')'=51

-'*'=18

-'+'=20

-'++'=57

-','=52

-'-'=16

-'->'=32

-'.'=31

-'..'=56

-'/'=19

-':'=53

-'::'=72

-';'=80

-'<'=22

-'<='=24

-'<>'=26

-'='=25

-'>'=21

-'>='=23

-'?'=49

-'?->'=34

-'?.'=33

-'@'=78

-'Bag'=45

-'Boolean'=36

-'Collection'=47

-'Integer'=37

-'Lambda'=58

-'OclAny'=41

-'OclInvalid'=42

-'OclVoid'=43

-'OrderedSet'=48

-'Real'=38

-'Sequence'=46

-'Set'=44

-'String'=39

-'Tuple'=35

-'UnlimitedNatural'=40

-'['=62

-']'=63

-'and'=27

-'else'=67

-'elseif'=69

-'endif'=68

-'extends'=73

-'false'=77

-'if'=65

-'implies'=30

-'in'=64

-'invalid'=59

-'let'=70

-'not'=17

-'null'=60

-'or'=28

-'pre'=61

-'self'=71

-'super'=75

-'then'=66

-'true'=76

-'xor'=29

-'{'=54

-'|'=79

-'}'=55

-RULE_ANY_OTHER=15

-RULE_DOUBLE_QUOTED_STRING=10

-RULE_ESCAPED_CHARACTER=8

-RULE_ESCAPED_ID=7

-RULE_INT=4

-RULE_LETTER_CHARACTER=9

-RULE_ML_COMMENT=12

-RULE_ML_SINGLE_QUOTED_STRING=11

-RULE_SIMPLE_ID=6

-RULE_SINGLE_QUOTED_STRING=5

-RULE_SL_COMMENT=13

-RULE_WS=14

-T__16=16

-T__17=17

-T__18=18

-T__19=19

-T__20=20

-T__21=21

-T__22=22

-T__23=23

-T__24=24

-T__25=25

-T__26=26

-T__27=27

-T__28=28

-T__29=29

-T__30=30

-T__31=31

-T__32=32

-T__33=33

-T__34=34

-T__35=35

-T__36=36

-T__37=37

-T__38=38

-T__39=39

-T__40=40

-T__41=41

-T__42=42

-T__43=43

-T__44=44

-T__45=45

-T__46=46

-T__47=47

-T__48=48

-T__49=49

-T__50=50

-T__51=51

-T__52=52

-T__53=53

-T__54=54

-T__55=55

-T__56=56

-T__57=57

-T__58=58

-T__59=59

-T__60=60

-T__61=61

-T__62=62

-T__63=63

-T__64=64

-T__65=65

-T__66=66

-T__67=67

-T__68=68

-T__69=69

-T__70=70

-T__71=71

-T__72=72

-T__73=73

-T__74=74

-T__75=75

-T__76=76

-T__77=77

-T__78=78

-T__79=79

-T__80=80

+'&&'=74
+'('=50
+')'=51
+'*'=18
+'+'=20
+'++'=57
+','=52
+'-'=16
+'->'=32
+'.'=31
+'..'=56
+'/'=19
+':'=53
+'::'=72
+';'=80
+'<'=22
+'<='=24
+'<>'=26
+'='=25
+'>'=21
+'>='=23
+'?'=49
+'?->'=34
+'?.'=33
+'@'=78
+'Bag'=45
+'Boolean'=36
+'Collection'=47
+'Integer'=37
+'Lambda'=58
+'OclAny'=41
+'OclInvalid'=42
+'OclVoid'=43
+'OrderedSet'=48
+'Real'=38
+'Sequence'=46
+'Set'=44
+'String'=39
+'Tuple'=35
+'UnlimitedNatural'=40
+'['=62
+']'=63
+'and'=27
+'else'=67
+'elseif'=69
+'endif'=68
+'extends'=73
+'false'=77
+'if'=65
+'implies'=30
+'in'=64
+'invalid'=59
+'let'=70
+'not'=17
+'null'=60
+'or'=28
+'pre'=61
+'self'=71
+'super'=75
+'then'=66
+'true'=76
+'xor'=29
+'{'=54
+'|'=79
+'}'=55
+RULE_ANY_OTHER=15
+RULE_DOUBLE_QUOTED_STRING=10
+RULE_ESCAPED_CHARACTER=8
+RULE_ESCAPED_ID=7
+RULE_INT=4
+RULE_LETTER_CHARACTER=9
+RULE_ML_COMMENT=12
+RULE_ML_SINGLE_QUOTED_STRING=11
+RULE_SIMPLE_ID=6
+RULE_SINGLE_QUOTED_STRING=5
+RULE_SL_COMMENT=13
+RULE_WS=14
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/AbstractEssentialOCLRuntimeModule.java b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/AbstractEssentialOCLRuntimeModule.java
index 79fb797..40a930c 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/AbstractEssentialOCLRuntimeModule.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/AbstractEssentialOCLRuntimeModule.java
@@ -6,7 +6,6 @@
 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;
@@ -14,8 +13,8 @@
 /**
  * Manual modifications go to {org.eclipse.ocl.xtext.essentialocl.EssentialOCLRuntimeModule}
  */
- @SuppressWarnings("all")
-public abstract class AbstractEssentialOCLRuntimeModule extends DefaultRuntimeModule {
+@SuppressWarnings("all")
+public abstract class AbstractEssentialOCLRuntimeModule extends org.eclipse.xtext.service.DefaultRuntimeModule {
 
 	protected Properties properties = null;
 
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/EssentialOCLStandaloneSetupGenerated.java b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/EssentialOCLStandaloneSetupGenerated.java
index 88c7ebd..0d4aa18 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/EssentialOCLStandaloneSetupGenerated.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/EssentialOCLStandaloneSetupGenerated.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.essentialocl;
 
 import org.eclipse.emf.ecore.EPackage;
@@ -16,6 +16,7 @@
 @SuppressWarnings("all")
 public class EssentialOCLStandaloneSetupGenerated implements ISetup {
 
+	@Override
 	public Injector createInjectorAndDoEMFRegistration() {
 		org.eclipse.ocl.xtext.base.BaseStandaloneSetup.doSetup();
 
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/EssentialOCLAntlrTokenFileProvider.java b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/EssentialOCLAntlrTokenFileProvider.java
index 0896c33..54c8246 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/EssentialOCLAntlrTokenFileProvider.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/EssentialOCLAntlrTokenFileProvider.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.essentialocl.parser.antlr;
 
 import java.io.InputStream;
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/EssentialOCLParser.java b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/EssentialOCLParser.java
index c268595..5fc8ee1 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/EssentialOCLParser.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/EssentialOCLParser.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.essentialocl.parser.antlr;
 
 import com.google.inject.Inject;
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/internal/InternalEssentialOCL.g b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/internal/InternalEssentialOCL.g
index 4091a26..fbcd714 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/internal/InternalEssentialOCL.g
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/internal/InternalEssentialOCL.g
@@ -1,5060 +1,5060 @@
-/*

-* generated by Xtext

-*/

-grammar InternalEssentialOCL;

-

-options {

-	superClass=AbstractInternalAntlrParser;

-	backtrack=true;

-	

-}

-

-@lexer::header {

-package org.eclipse.ocl.xtext.essentialocl.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.ocl.xtext.essentialocl.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.ocl.xtext.essentialocl.services.EssentialOCLGrammarAccess;

-

-}

-

-@parser::members {

-

-/*

-  This grammar contains a lot of empty actions to work around a bug in ANTLR.

-  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.

-*/

- 

- 	private EssentialOCLGrammarAccess grammarAccess;

- 	

-    public InternalEssentialOCLParser(TokenStream input, EssentialOCLGrammarAccess grammarAccess) {

-        this(input);

-        this.grammarAccess = grammarAccess;

-        registerRules(grammarAccess.getGrammar());

-    }

-    

-    @Override

-    protected String getFirstRuleName() {

-    	return "Model";	

-   	}

-   	

-   	@Override

-   	protected EssentialOCLGrammarAccess getGrammarAccess() {

-   		return grammarAccess;

-   	}

-}

-

-@rulecatch { 

-    catch (RecognitionException re) { 

-        recover(input,re); 

-        appendSkippedTokens();

-    } 

-}

-

-

-

-

-// Entry rule entryRuleModel

-entryRuleModel returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getModelRule()); }

-	 iv_ruleModel=ruleModel 

-	 { $current=$iv_ruleModel.current; } 

-	 EOF 

-;

-

-// Rule Model

-ruleModel returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getModelAccess().getOwnedExpressionExpCSParserRuleCall_0()); 

-	    }

-		lv_ownedExpression_0_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getModelRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_0_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnaryOperatorName

-entryRuleEssentialOCLUnaryOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 

-	 iv_ruleEssentialOCLUnaryOperatorName=ruleEssentialOCLUnaryOperatorName 

-	 { $current=$iv_ruleEssentialOCLUnaryOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLUnaryOperatorName

-ruleEssentialOCLUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='-' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); 

-    }

-

-    |

-	kw='not' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLInfixOperatorName

-entryRuleEssentialOCLInfixOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 

-	 iv_ruleEssentialOCLInfixOperatorName=ruleEssentialOCLInfixOperatorName 

-	 { $current=$iv_ruleEssentialOCLInfixOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLInfixOperatorName

-ruleEssentialOCLInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='*' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); 

-    }

-

-    |

-	kw='/' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); 

-    }

-

-    |

-	kw='+' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); 

-    }

-

-    |

-	kw='-' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); 

-    }

-

-    |

-	kw='>' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); 

-    }

-

-    |

-	kw='<' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); 

-    }

-

-    |

-	kw='>=' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); 

-    }

-

-    |

-	kw='<=' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); 

-    }

-

-    |

-	kw='=' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); 

-    }

-

-    |

-	kw='<>' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); 

-    }

-

-    |

-	kw='and' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); 

-    }

-

-    |

-	kw='or' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); 

-    }

-

-    |

-	kw='xor' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); 

-    }

-

-    |

-	kw='implies' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLNavigationOperatorName

-entryRuleEssentialOCLNavigationOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 

-	 iv_ruleEssentialOCLNavigationOperatorName=ruleEssentialOCLNavigationOperatorName 

-	 { $current=$iv_ruleEssentialOCLNavigationOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLNavigationOperatorName

-ruleEssentialOCLNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='.' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); 

-    }

-

-    |

-	kw='->' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); 

-    }

-

-    |

-	kw='?.' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); 

-    }

-

-    |

-	kw='?->' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleBinaryOperatorName

-entryRuleBinaryOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getBinaryOperatorNameRule()); } 

-	 iv_ruleBinaryOperatorName=ruleBinaryOperatorName 

-	 { $current=$iv_ruleBinaryOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule BinaryOperatorName

-ruleBinaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); 

-    }

-    this_InfixOperatorName_0=ruleInfixOperatorName    {

-		$current.merge(this_InfixOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); 

-    }

-    this_NavigationOperatorName_1=ruleNavigationOperatorName    {

-		$current.merge(this_NavigationOperatorName_1);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleInfixOperatorName

-entryRuleInfixOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getInfixOperatorNameRule()); } 

-	 iv_ruleInfixOperatorName=ruleInfixOperatorName 

-	 { $current=$iv_ruleInfixOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule InfixOperatorName

-ruleInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); 

-    }

-    this_EssentialOCLInfixOperatorName_0=ruleEssentialOCLInfixOperatorName    {

-		$current.merge(this_EssentialOCLInfixOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleNavigationOperatorName

-entryRuleNavigationOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigationOperatorNameRule()); } 

-	 iv_ruleNavigationOperatorName=ruleNavigationOperatorName 

-	 { $current=$iv_ruleNavigationOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule NavigationOperatorName

-ruleNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); 

-    }

-    this_EssentialOCLNavigationOperatorName_0=ruleEssentialOCLNavigationOperatorName    {

-		$current.merge(this_EssentialOCLNavigationOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleUnaryOperatorName

-entryRuleUnaryOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnaryOperatorNameRule()); } 

-	 iv_ruleUnaryOperatorName=ruleUnaryOperatorName 

-	 { $current=$iv_ruleUnaryOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule UnaryOperatorName

-ruleUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); 

-    }

-    this_EssentialOCLUnaryOperatorName_0=ruleEssentialOCLUnaryOperatorName    {

-		$current.merge(this_EssentialOCLUnaryOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnrestrictedName

-entryRuleEssentialOCLUnrestrictedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 

-	 iv_ruleEssentialOCLUnrestrictedName=ruleEssentialOCLUnrestrictedName 

-	 { $current=$iv_ruleEssentialOCLUnrestrictedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLUnrestrictedName

-ruleEssentialOCLUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); 

-    }

-    this_Identifier_0=ruleIdentifier    {

-		$current.merge(this_Identifier_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleUnrestrictedName

-entryRuleUnrestrictedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnrestrictedNameRule()); } 

-	 iv_ruleUnrestrictedName=ruleUnrestrictedName 

-	 { $current=$iv_ruleUnrestrictedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule UnrestrictedName

-ruleUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall()); 

-    }

-    this_EssentialOCLUnrestrictedName_0=ruleEssentialOCLUnrestrictedName    {

-		$current.merge(this_EssentialOCLUnrestrictedName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnreservedName

-entryRuleEssentialOCLUnreservedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameRule()); } 

-	 iv_ruleEssentialOCLUnreservedName=ruleEssentialOCLUnreservedName 

-	 { $current=$iv_ruleEssentialOCLUnreservedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLUnreservedName

-ruleEssentialOCLUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); 

-    }

-    this_UnrestrictedName_0=ruleUnrestrictedName    {

-		$current.merge(this_UnrestrictedName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); 

-    }

-    this_CollectionTypeIdentifier_1=ruleCollectionTypeIdentifier    {

-		$current.merge(this_CollectionTypeIdentifier_1);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); 

-    }

-    this_PrimitiveTypeIdentifier_2=rulePrimitiveTypeIdentifier    {

-		$current.merge(this_PrimitiveTypeIdentifier_2);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	kw='Tuple' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleUnreservedName

-entryRuleUnreservedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnreservedNameRule()); } 

-	 iv_ruleUnreservedName=ruleUnreservedName 

-	 { $current=$iv_ruleUnreservedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule UnreservedName

-ruleUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); 

-    }

-    this_EssentialOCLUnreservedName_0=ruleEssentialOCLUnreservedName    {

-		$current.merge(this_EssentialOCLUnreservedName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-

-

-// Entry rule entryRuleURIFirstPathElementCS

-entryRuleURIFirstPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getURIFirstPathElementCSRule()); }

-	 iv_ruleURIFirstPathElementCS=ruleURIFirstPathElementCS 

-	 { $current=$iv_ruleURIFirstPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule URIFirstPathElementCS

-ruleURIFirstPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0(),

-            $current);

-    }

-)(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); 

-	    }

-		ruleURI		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))

-;

-

-

-

-

-

-// Entry rule entryRulePrimitiveTypeIdentifier

-entryRulePrimitiveTypeIdentifier returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimitiveTypeIdentifierRule()); } 

-	 iv_rulePrimitiveTypeIdentifier=rulePrimitiveTypeIdentifier 

-	 { $current=$iv_rulePrimitiveTypeIdentifier.current.getText(); }  

-	 EOF 

-;

-

-// Rule PrimitiveTypeIdentifier

-rulePrimitiveTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='Boolean' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); 

-    }

-

-    |

-	kw='Integer' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); 

-    }

-

-    |

-	kw='Real' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); 

-    }

-

-    |

-	kw='String' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); 

-    }

-

-    |

-	kw='UnlimitedNatural' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); 

-    }

-

-    |

-	kw='OclAny' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); 

-    }

-

-    |

-	kw='OclInvalid' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); 

-    }

-

-    |

-	kw='OclVoid' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRulePrimitiveTypeCS

-entryRulePrimitiveTypeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimitiveTypeCSRule()); }

-	 iv_rulePrimitiveTypeCS=rulePrimitiveTypeCS 

-	 { $current=$iv_rulePrimitiveTypeCS.current; } 

-	 EOF 

-;

-

-// Rule PrimitiveTypeCS

-rulePrimitiveTypeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); 

-	    }

-		lv_name_0_0=rulePrimitiveTypeIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrimitiveTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"PrimitiveTypeIdentifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionTypeIdentifier

-entryRuleCollectionTypeIdentifier returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionTypeIdentifierRule()); } 

-	 iv_ruleCollectionTypeIdentifier=ruleCollectionTypeIdentifier 

-	 { $current=$iv_ruleCollectionTypeIdentifier.current.getText(); }  

-	 EOF 

-;

-

-// Rule CollectionTypeIdentifier

-ruleCollectionTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='Set' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); 

-    }

-

-    |

-	kw='Bag' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); 

-    }

-

-    |

-	kw='Sequence' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); 

-    }

-

-    |

-	kw='Collection' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); 

-    }

-

-    |

-	kw='OrderedSet' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleCollectionTypeCS

-entryRuleCollectionTypeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionTypeCSRule()); }

-	 iv_ruleCollectionTypeCS=ruleCollectionTypeCS 

-	 { $current=$iv_ruleCollectionTypeCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionTypeCS

-ruleCollectionTypeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleCollectionTypeIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"CollectionTypeIdentifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='(' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_3=')' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2());

-    }

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTupleTypeCS

-entryRuleTupleTypeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTupleTypeCSRule()); }

-	 iv_ruleTupleTypeCS=ruleTupleTypeCS 

-	 { $current=$iv_ruleTupleTypeCS.current; } 

-	 EOF 

-;

-

-// Rule TupleTypeCS

-ruleTupleTypeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_name_0_0=	'Tuple' 

-    {

-        newLeafNode(lv_name_0_0, grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getTupleTypeCSRule());

-	        }

-       		setWithLastConsumed($current, "name", lv_name_0_0, "Tuple");

-	    }

-

-)

-)(	otherlv_1='(' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); 

-	    }

-		lv_ownedParts_2_0=ruleTuplePartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"TuplePartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleTuplePartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"TuplePartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_5=')' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2());

-    }

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTuplePartCS

-entryRuleTuplePartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTuplePartCSRule()); }

-	 iv_ruleTuplePartCS=ruleTuplePartCS 

-	 { $current=$iv_ruleTuplePartCS.current; } 

-	 EOF 

-;

-

-// Rule TuplePartCS

-ruleTuplePartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTuplePartCSAccess().getColonKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionLiteralExpCS

-entryRuleCollectionLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionLiteralExpCSRule()); }

-	 iv_ruleCollectionLiteralExpCS=ruleCollectionLiteralExpCS 

-	 { $current=$iv_ruleCollectionLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionLiteralExpCS

-ruleCollectionLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedType_0_0=ruleCollectionTypeCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_0_0, 

-        		"CollectionTypeCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedParts_2_0=ruleCollectionLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"CollectionLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleCollectionLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"CollectionLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_5='}' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionLiteralPartCS

-entryRuleCollectionLiteralPartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionLiteralPartCSRule()); }

-	 iv_ruleCollectionLiteralPartCS=ruleCollectionLiteralPartCS 

-	 { $current=$iv_ruleCollectionLiteralPartCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionLiteralPartCS

-ruleCollectionLiteralPartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); 

-	    }

-		lv_ownedExpression_0_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_0_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='..' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); 

-	    }

-		lv_ownedLastExpression_2_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedLastExpression",

-        		lv_ownedLastExpression_2_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedExpression_3_0=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_3_0, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionPatternCS

-entryRuleCollectionPatternCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionPatternCSRule()); }

-	 iv_ruleCollectionPatternCS=ruleCollectionPatternCS 

-	 { $current=$iv_ruleCollectionPatternCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionPatternCS

-ruleCollectionPatternCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedType_0_0=ruleCollectionTypeCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_0_0, 

-        		"CollectionTypeCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedParts_2_0=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*(	otherlv_5='++' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); 

-	    }

-		lv_restVariableName_6_0=ruleIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		set(

-       			$current, 

-       			"restVariableName",

-        		lv_restVariableName_6_0, 

-        		"Identifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?	otherlv_7='}' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleConstructorPartCS

-entryRuleConstructorPartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getConstructorPartCSRule()); }

-	 iv_ruleConstructorPartCS=ruleConstructorPartCS 

-	 { $current=$iv_ruleConstructorPartCS.current; } 

-	 EOF 

-;

-

-// Rule ConstructorPartCS

-ruleConstructorPartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getConstructorPartCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1='=' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1());

-    }

-(

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedInitExpression_2_1=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_2_1, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-    |		{ 

-	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); 

-	    }

-		lv_ownedInitExpression_2_2=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_2_2, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRulePatternExpCS

-entryRulePatternExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPatternExpCSRule()); }

-	 iv_rulePatternExpCS=rulePatternExpCS 

-	 { $current=$iv_rulePatternExpCS.current; } 

-	 EOF 

-;

-

-// Rule PatternExpCS

-rulePatternExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_patternVariableName_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"patternVariableName",

-        		lv_patternVariableName_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getPatternExpCSAccess().getColonKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedPatternType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPatternType",

-        		lv_ownedPatternType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLambdaLiteralExpCS

-entryRuleLambdaLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLambdaLiteralExpCSRule()); }

-	 iv_ruleLambdaLiteralExpCS=ruleLambdaLiteralExpCS 

-	 { $current=$iv_ruleLambdaLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule LambdaLiteralExpCS

-ruleLambdaLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='Lambda' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0());

-    }

-	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedExpressionCS_2_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLambdaLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpressionCS",

-        		lv_ownedExpressionCS_2_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_3='}' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrimitiveLiteralExpCS

-entryRulePrimitiveLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSRule()); }

-	 iv_rulePrimitiveLiteralExpCS=rulePrimitiveLiteralExpCS 

-	 { $current=$iv_rulePrimitiveLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrimitiveLiteralExpCS

-rulePrimitiveLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); 

-    }

-    this_NumberLiteralExpCS_0=ruleNumberLiteralExpCS

-    { 

-        $current = $this_NumberLiteralExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); 

-    }

-    this_StringLiteralExpCS_1=ruleStringLiteralExpCS

-    { 

-        $current = $this_StringLiteralExpCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); 

-    }

-    this_BooleanLiteralExpCS_2=ruleBooleanLiteralExpCS

-    { 

-        $current = $this_BooleanLiteralExpCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); 

-    }

-    this_UnlimitedNaturalLiteralExpCS_3=ruleUnlimitedNaturalLiteralExpCS

-    { 

-        $current = $this_UnlimitedNaturalLiteralExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); 

-    }

-    this_InvalidLiteralExpCS_4=ruleInvalidLiteralExpCS

-    { 

-        $current = $this_InvalidLiteralExpCS_4.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); 

-    }

-    this_NullLiteralExpCS_5=ruleNullLiteralExpCS

-    { 

-        $current = $this_NullLiteralExpCS_5.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTupleLiteralExpCS

-entryRuleTupleLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTupleLiteralExpCSRule()); }

-	 iv_ruleTupleLiteralExpCS=ruleTupleLiteralExpCS 

-	 { $current=$iv_ruleTupleLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule TupleLiteralExpCS

-ruleTupleLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='Tuple' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0());

-    }

-	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedParts_2_0=ruleTupleLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"TupleLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleTupleLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"TupleLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_5='}' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTupleLiteralPartCS

-entryRuleTupleLiteralPartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTupleLiteralPartCSRule()); }

-	 iv_ruleTupleLiteralPartCS=ruleTupleLiteralPartCS 

-	 { $current=$iv_ruleTupleLiteralPartCS.current; } 

-	 EOF 

-;

-

-// Rule TupleLiteralPartCS

-ruleTupleLiteralPartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?	otherlv_3='=' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedInitExpression_4_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_4_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleNumberLiteralExpCS

-entryRuleNumberLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNumberLiteralExpCSRule()); }

-	 iv_ruleNumberLiteralExpCS=ruleNumberLiteralExpCS 

-	 { $current=$iv_ruleNumberLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule NumberLiteralExpCS

-ruleNumberLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); 

-	    }

-		lv_symbol_0_0=ruleNUMBER_LITERAL		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNumberLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"symbol",

-        		lv_symbol_0_0, 

-        		"NUMBER_LITERAL");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleStringLiteralExpCS

-entryRuleStringLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getStringLiteralExpCSRule()); }

-	 iv_ruleStringLiteralExpCS=ruleStringLiteralExpCS 

-	 { $current=$iv_ruleStringLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule StringLiteralExpCS

-ruleStringLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); 

-	    }

-		lv_segments_0_0=ruleStringLiteral		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getStringLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"segments",

-        		lv_segments_0_0, 

-        		"StringLiteral");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)+

-;

-

-

-

-

-

-// Entry rule entryRuleBooleanLiteralExpCS

-entryRuleBooleanLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getBooleanLiteralExpCSRule()); }

-	 iv_ruleBooleanLiteralExpCS=ruleBooleanLiteralExpCS 

-	 { $current=$iv_ruleBooleanLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule BooleanLiteralExpCS

-ruleBooleanLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_symbol_0_0=	'true' 

-    {

-        newLeafNode(lv_symbol_0_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());

-	        }

-       		setWithLastConsumed($current, "symbol", lv_symbol_0_0, "true");

-	    }

-

-)

-)

-    |(

-(

-		lv_symbol_1_0=	'false' 

-    {

-        newLeafNode(lv_symbol_1_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());

-	        }

-       		setWithLastConsumed($current, "symbol", lv_symbol_1_0, "false");

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleUnlimitedNaturalLiteralExpCS

-entryRuleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }

-	 iv_ruleUnlimitedNaturalLiteralExpCS=ruleUnlimitedNaturalLiteralExpCS 

-	 { $current=$iv_ruleUnlimitedNaturalLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule UnlimitedNaturalLiteralExpCS

-ruleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='*' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleInvalidLiteralExpCS

-entryRuleInvalidLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getInvalidLiteralExpCSRule()); }

-	 iv_ruleInvalidLiteralExpCS=ruleInvalidLiteralExpCS 

-	 { $current=$iv_ruleInvalidLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule InvalidLiteralExpCS

-ruleInvalidLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='invalid' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNullLiteralExpCS

-entryRuleNullLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNullLiteralExpCSRule()); }

-	 iv_ruleNullLiteralExpCS=ruleNullLiteralExpCS 

-	 { $current=$iv_ruleNullLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule NullLiteralExpCS

-ruleNullLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='null' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeLiteralCS

-entryRuleTypeLiteralCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeLiteralCSRule()); }

-	 iv_ruleTypeLiteralCS=ruleTypeLiteralCS 

-	 { $current=$iv_ruleTypeLiteralCS.current; } 

-	 EOF 

-;

-

-// Rule TypeLiteralCS

-ruleTypeLiteralCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); 

-    }

-    this_PrimitiveTypeCS_0=rulePrimitiveTypeCS

-    { 

-        $current = $this_PrimitiveTypeCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); 

-    }

-    this_CollectionTypeCS_1=ruleCollectionTypeCS

-    { 

-        $current = $this_CollectionTypeCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); 

-    }

-    this_TupleTypeCS_2=ruleTupleTypeCS

-    { 

-        $current = $this_TupleTypeCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeLiteralWithMultiplicityCS

-entryRuleTypeLiteralWithMultiplicityCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }

-	 iv_ruleTypeLiteralWithMultiplicityCS=ruleTypeLiteralWithMultiplicityCS 

-	 { $current=$iv_ruleTypeLiteralWithMultiplicityCS.current; } 

-	 EOF 

-;

-

-// Rule TypeLiteralWithMultiplicityCS

-ruleTypeLiteralWithMultiplicityCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); 

-    }

-    this_TypeLiteralCS_0=ruleTypeLiteralCS

-    { 

-        $current = $this_TypeLiteralCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedMultiplicity_1_0=ruleMultiplicityCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeLiteralWithMultiplicityCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMultiplicity",

-        		lv_ownedMultiplicity_1_0, 

-        		"MultiplicityCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeLiteralExpCS

-entryRuleTypeLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeLiteralExpCSRule()); }

-	 iv_ruleTypeLiteralExpCS=ruleTypeLiteralExpCS 

-	 { $current=$iv_ruleTypeLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule TypeLiteralExpCS

-ruleTypeLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); 

-	    }

-		lv_ownedType_0_0=ruleTypeLiteralWithMultiplicityCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_0_0, 

-        		"TypeLiteralWithMultiplicityCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeNameExpCS

-entryRuleTypeNameExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeNameExpCSRule()); }

-	 iv_ruleTypeNameExpCS=ruleTypeNameExpCS 

-	 { $current=$iv_ruleTypeNameExpCS.current; } 

-	 EOF 

-;

-

-// Rule TypeNameExpCS

-ruleTypeNameExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathName_0_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_0_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); 

-	    }

-		lv_ownedCurlyBracketedClause_1_0=ruleCurlyBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCurlyBracketedClause",

-        		lv_ownedCurlyBracketedClause_1_0, 

-        		"CurlyBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2='{' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); 

-	    }

-		lv_ownedPatternGuard_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPatternGuard",

-        		lv_ownedPatternGuard_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_4='}' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2());

-    }

-)?)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeExpCS

-entryRuleTypeExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeExpCSRule()); }

-	 iv_ruleTypeExpCS=ruleTypeExpCS 

-	 { $current=$iv_ruleTypeExpCS.current; } 

-	 EOF 

-;

-

-// Rule TypeExpCS

-ruleTypeExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); 

-    }

-    this_TypeNameExpCS_0=ruleTypeNameExpCS

-    { 

-        $current = $this_TypeNameExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); 

-    }

-    this_TypeLiteralCS_1=ruleTypeLiteralCS

-    { 

-        $current = $this_TypeLiteralCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); 

-    }

-    this_CollectionPatternCS_2=ruleCollectionPatternCS

-    { 

-        $current = $this_CollectionPatternCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedMultiplicity_3_0=ruleMultiplicityCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMultiplicity",

-        		lv_ownedMultiplicity_3_0, 

-        		"MultiplicityCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleExpCS

-entryRuleExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getExpCSRule()); }

-	 iv_ruleExpCS=ruleExpCS 

-	 { $current=$iv_ruleExpCS.current; } 

-	 EOF 

-;

-

-// Rule ExpCS

-ruleExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); 

-    }

-    this_PrefixedPrimaryExpCS_0=rulePrefixedPrimaryExpCS

-    { 

-        $current = $this_PrefixedPrimaryExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElementAndSet(

-            grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0(),

-            $current);

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); 

-	    }

-		lv_name_2_0=ruleBinaryOperatorName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_2_0, 

-        		"BinaryOperatorName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); 

-	    }

-		lv_ownedRight_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRight",

-        		lv_ownedRight_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); 

-    }

-    this_PrefixedLetExpCS_4=rulePrefixedLetExpCS

-    { 

-        $current = $this_PrefixedLetExpCS_4.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrefixedLetExpCS

-entryRulePrefixedLetExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrefixedLetExpCSRule()); }

-	 iv_rulePrefixedLetExpCS=rulePrefixedLetExpCS 

-	 { $current=$iv_rulePrefixedLetExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrefixedLetExpCS

-rulePrefixedLetExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0(),

-            $current);

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 

-	    }

-		lv_name_1_0=ruleUnaryOperatorName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnaryOperatorName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); 

-	    }

-		lv_ownedRight_2_0=rulePrefixedLetExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRight",

-        		lv_ownedRight_2_0, 

-        		"PrefixedLetExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); 

-    }

-    this_LetExpCS_3=ruleLetExpCS

-    { 

-        $current = $this_LetExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrefixedPrimaryExpCS

-entryRulePrefixedPrimaryExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSRule()); }

-	 iv_rulePrefixedPrimaryExpCS=rulePrefixedPrimaryExpCS 

-	 { $current=$iv_rulePrefixedPrimaryExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrefixedPrimaryExpCS

-rulePrefixedPrimaryExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0(),

-            $current);

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 

-	    }

-		lv_name_1_0=ruleUnaryOperatorName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnaryOperatorName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); 

-	    }

-		lv_ownedRight_2_0=rulePrefixedPrimaryExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRight",

-        		lv_ownedRight_2_0, 

-        		"PrefixedPrimaryExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); 

-    }

-    this_PrimaryExpCS_3=rulePrimaryExpCS

-    { 

-        $current = $this_PrimaryExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrimaryExpCS

-entryRulePrimaryExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimaryExpCSRule()); }

-	 iv_rulePrimaryExpCS=rulePrimaryExpCS 

-	 { $current=$iv_rulePrimaryExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrimaryExpCS

-rulePrimaryExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); 

-    }

-    this_NestedExpCS_0=ruleNestedExpCS

-    { 

-        $current = $this_NestedExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); 

-    }

-    this_IfExpCS_1=ruleIfExpCS

-    { 

-        $current = $this_IfExpCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); 

-    }

-    this_SelfExpCS_2=ruleSelfExpCS

-    { 

-        $current = $this_SelfExpCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); 

-    }

-    this_PrimitiveLiteralExpCS_3=rulePrimitiveLiteralExpCS

-    { 

-        $current = $this_PrimitiveLiteralExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); 

-    }

-    this_TupleLiteralExpCS_4=ruleTupleLiteralExpCS

-    { 

-        $current = $this_TupleLiteralExpCS_4.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); 

-    }

-    this_CollectionLiteralExpCS_5=ruleCollectionLiteralExpCS

-    { 

-        $current = $this_CollectionLiteralExpCS_5.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); 

-    }

-    this_LambdaLiteralExpCS_6=ruleLambdaLiteralExpCS

-    { 

-        $current = $this_LambdaLiteralExpCS_6.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); 

-    }

-    this_TypeLiteralExpCS_7=ruleTypeLiteralExpCS

-    { 

-        $current = $this_TypeLiteralExpCS_7.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); 

-    }

-    this_NameExpCS_8=ruleNameExpCS

-    { 

-        $current = $this_NameExpCS_8.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNameExpCS

-entryRuleNameExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNameExpCSRule()); }

-	 iv_ruleNameExpCS=ruleNameExpCS 

-	 { $current=$iv_ruleNameExpCS.current; } 

-	 EOF 

-;

-

-// Rule NameExpCS

-ruleNameExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathName_0_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_0_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedSquareBracketedClauses_1_0=ruleSquareBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSquareBracketedClauses",

-        		lv_ownedSquareBracketedClauses_1_0, 

-        		"SquareBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedRoundBracketedClause_2_0=ruleRoundBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRoundBracketedClause",

-        		lv_ownedRoundBracketedClause_2_0, 

-        		"RoundBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedCurlyBracketedClause_3_0=ruleCurlyBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCurlyBracketedClause",

-        		lv_ownedCurlyBracketedClause_3_0, 

-        		"CurlyBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?((

-(

-		lv_isPre_4_0=	'@' 

-    {

-        newLeafNode(lv_isPre_4_0, grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNameExpCSRule());

-	        }

-       		setWithLastConsumed($current, "isPre", true, "@");

-	    }

-

-)

-)	otherlv_5='pre' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getNameExpCSAccess().getPreKeyword_4_1());

-    }

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleCurlyBracketedClauseCS

-entryRuleCurlyBracketedClauseCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCurlyBracketedClauseCSRule()); }

-	 iv_ruleCurlyBracketedClauseCS=ruleCurlyBracketedClauseCS 

-	 { $current=$iv_ruleCurlyBracketedClauseCS.current; } 

-	 EOF 

-;

-

-// Rule CurlyBracketedClauseCS

-ruleCurlyBracketedClauseCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0(),

-            $current);

-    }

-)	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); 

-	    }

-		lv_ownedParts_2_0=ruleConstructorPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"ConstructorPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleConstructorPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"ConstructorPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); 

-	    }

-		lv_value_5_0=ruleStringLiteral		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());

-	        }

-       		set(

-       			$current, 

-       			"value",

-        		lv_value_5_0, 

-        		"StringLiteral");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))	otherlv_6='}' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleRoundBracketedClauseCS

-entryRuleRoundBracketedClauseCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getRoundBracketedClauseCSRule()); }

-	 iv_ruleRoundBracketedClauseCS=ruleRoundBracketedClauseCS 

-	 { $current=$iv_ruleRoundBracketedClauseCS.current; } 

-	 EOF 

-;

-

-// Rule RoundBracketedClauseCS

-ruleRoundBracketedClauseCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0(),

-            $current);

-    }

-)	otherlv_1='(' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedArguments_2_0=ruleNavigatingArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_2_0, 

-        		"NavigatingArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedArguments_3_0=ruleNavigatingCommaArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_3_0, 

-        		"NavigatingCommaArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); 

-	    }

-		lv_ownedArguments_4_0=ruleNavigatingSemiArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_4_0, 

-        		"NavigatingSemiArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); 

-	    }

-		lv_ownedArguments_5_0=ruleNavigatingCommaArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_5_0, 

-        		"NavigatingCommaArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*)?((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); 

-	    }

-		lv_ownedArguments_6_0=ruleNavigatingBarArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_6_0, 

-        		"NavigatingBarArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); 

-	    }

-		lv_ownedArguments_7_0=ruleNavigatingCommaArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_7_0, 

-        		"NavigatingCommaArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*)*)?	otherlv_8=')' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleSquareBracketedClauseCS

-entryRuleSquareBracketedClauseCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getSquareBracketedClauseCSRule()); }

-	 iv_ruleSquareBracketedClauseCS=ruleSquareBracketedClauseCS 

-	 { $current=$iv_ruleSquareBracketedClauseCS.current; } 

-	 EOF 

-;

-

-// Rule SquareBracketedClauseCS

-ruleSquareBracketedClauseCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='[' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedTerms_1_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedTerms",

-        		lv_ownedTerms_1_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedTerms_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedTerms",

-        		lv_ownedTerms_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4=']' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingArgCS

-entryRuleNavigatingArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingArgCSRule()); }

-	 iv_ruleNavigatingArgCS=ruleNavigatingArgCS 

-	 { $current=$iv_ruleNavigatingArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingArgCS

-ruleNavigatingArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); 

-	    }

-		lv_ownedNameExpression_0_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_0_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3='=' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); 

-	    }

-		lv_ownedInitExpression_4_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_4_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |(	otherlv_5='in' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); 

-	    }

-		lv_ownedInitExpression_6_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_6_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-    |(	otherlv_7=':' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedType_8_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_8_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingBarArgCS

-entryRuleNavigatingBarArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingBarArgCSRule()); }

-	 iv_ruleNavigatingBarArgCS=ruleNavigatingBarArgCS 

-	 { $current=$iv_ruleNavigatingBarArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingBarArgCS

-ruleNavigatingBarArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_prefix_0_0=	'|' 

-    {

-        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, "|");

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_1_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)?)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingCommaArgCS

-entryRuleNavigatingCommaArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingCommaArgCSRule()); }

-	 iv_ruleNavigatingCommaArgCS=ruleNavigatingCommaArgCS 

-	 { $current=$iv_ruleNavigatingCommaArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingCommaArgCS

-ruleNavigatingCommaArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_prefix_0_0=	',' 

-    {

-        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ",");

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_1_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |(	otherlv_6='in' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedInitExpression_7_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_7_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingSemiArgCS

-entryRuleNavigatingSemiArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingSemiArgCSRule()); }

-	 iv_ruleNavigatingSemiArgCS=ruleNavigatingSemiArgCS 

-	 { $current=$iv_ruleNavigatingSemiArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingSemiArgCS

-ruleNavigatingSemiArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_prefix_0_0=	';' 

-    {

-        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ";");

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_1_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)?)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingArgExpCS

-entryRuleNavigatingArgExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingArgExpCSRule()); }

-	 iv_ruleNavigatingArgExpCS=ruleNavigatingArgExpCS 

-	 { $current=$iv_ruleNavigatingArgExpCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingArgExpCS

-ruleNavigatingArgExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); 

-    }

-    this_ExpCS_0=ruleExpCS

-    { 

-        $current = $this_ExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-;

-

-

-

-

-

-// Entry rule entryRuleIfExpCS

-entryRuleIfExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIfExpCSRule()); }

-	 iv_ruleIfExpCS=ruleIfExpCS 

-	 { $current=$iv_ruleIfExpCS.current; } 

-	 EOF 

-;

-

-// Rule IfExpCS

-ruleIfExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='if' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getIfExpCSAccess().getIfKeyword_0());

-    }

-(

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); 

-	    }

-		lv_ownedCondition_1_1=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCondition",

-        		lv_ownedCondition_1_1, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-    |		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); 

-	    }

-		lv_ownedCondition_1_2=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCondition",

-        		lv_ownedCondition_1_2, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-

-)

-)	otherlv_2='then' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getIfExpCSAccess().getThenKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedThenExpression_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedThenExpression",

-        		lv_ownedThenExpression_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedIfThenExpressions_4_0=ruleElseIfThenExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedIfThenExpressions",

-        		lv_ownedIfThenExpressions_4_0, 

-        		"ElseIfThenExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_5='else' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getIfExpCSAccess().getElseKeyword_5());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); 

-	    }

-		lv_ownedElseExpression_6_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedElseExpression",

-        		lv_ownedElseExpression_6_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_7='endif' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getIfExpCSAccess().getEndifKeyword_7());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleElseIfThenExpCS

-entryRuleElseIfThenExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getElseIfThenExpCSRule()); }

-	 iv_ruleElseIfThenExpCS=ruleElseIfThenExpCS 

-	 { $current=$iv_ruleElseIfThenExpCS.current; } 

-	 EOF 

-;

-

-// Rule ElseIfThenExpCS

-ruleElseIfThenExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='elseif' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedCondition_1_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCondition",

-        		lv_ownedCondition_1_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_2='then' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedThenExpression_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedThenExpression",

-        		lv_ownedThenExpression_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLetExpCS

-entryRuleLetExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLetExpCSRule()); }

-	 iv_ruleLetExpCS=ruleLetExpCS 

-	 { $current=$iv_ruleLetExpCS.current; } 

-	 EOF 

-;

-

-// Rule LetExpCS

-ruleLetExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='let' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLetExpCSAccess().getLetKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedVariables_1_0=ruleLetVariableCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedVariables",

-        		lv_ownedVariables_1_0, 

-        		"LetVariableCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedVariables_3_0=ruleLetVariableCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedVariables",

-        		lv_ownedVariables_3_0, 

-        		"LetVariableCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4='in' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getLetExpCSAccess().getInKeyword_3());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedInExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInExpression",

-        		lv_ownedInExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLetVariableCS

-entryRuleLetVariableCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLetVariableCSRule()); }

-	 iv_ruleLetVariableCS=ruleLetVariableCS 

-	 { $current=$iv_ruleLetVariableCS.current; } 

-	 EOF 

-;

-

-// Rule LetVariableCS

-ruleLetVariableCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedRoundBracketedClause_1_0=ruleRoundBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRoundBracketedClause",

-        		lv_ownedRoundBracketedClause_1_0, 

-        		"RoundBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleNestedExpCS

-entryRuleNestedExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNestedExpCSRule()); }

-	 iv_ruleNestedExpCS=ruleNestedExpCS 

-	 { $current=$iv_ruleNestedExpCS.current; } 

-	 EOF 

-;

-

-// Rule NestedExpCS

-ruleNestedExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='(' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedExpression_1_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNestedExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_1_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_2=')' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleSelfExpCS

-entryRuleSelfExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getSelfExpCSRule()); }

-	 iv_ruleSelfExpCS=ruleSelfExpCS 

-	 { $current=$iv_ruleSelfExpCS.current; } 

-	 EOF 

-;

-

-// Rule SelfExpCS

-ruleSelfExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='self' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getSelfExpCSAccess().getSelfKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleMultiplicityBoundsCS

-entryRuleMultiplicityBoundsCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMultiplicityBoundsCSRule()); }

-	 iv_ruleMultiplicityBoundsCS=ruleMultiplicityBoundsCS 

-	 { $current=$iv_ruleMultiplicityBoundsCS.current; } 

-	 EOF 

-;

-

-// Rule MultiplicityBoundsCS

-ruleMultiplicityBoundsCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); 

-	    }

-		lv_lowerBound_0_0=ruleLOWER		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());

-	        }

-       		set(

-       			$current, 

-       			"lowerBound",

-        		lv_lowerBound_0_0, 

-        		"LOWER");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='..' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); 

-	    }

-		lv_upperBound_2_0=ruleUPPER		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());

-	        }

-       		set(

-       			$current, 

-       			"upperBound",

-        		lv_upperBound_2_0, 

-        		"UPPER");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-;

-

-

-

-

-

-// Entry rule entryRuleMultiplicityCS

-entryRuleMultiplicityCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMultiplicityCSRule()); }

-	 iv_ruleMultiplicityCS=ruleMultiplicityCS 

-	 { $current=$iv_ruleMultiplicityCS.current; } 

-	 EOF 

-;

-

-// Rule MultiplicityCS

-ruleMultiplicityCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='[' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0());

-    }

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); 

-    }

-    this_MultiplicityBoundsCS_1=ruleMultiplicityBoundsCS

-    { 

-        $current = $this_MultiplicityBoundsCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); 

-    }

-    this_MultiplicityStringCS_2=ruleMultiplicityStringCS

-    { 

-        $current = $this_MultiplicityStringCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)	otherlv_3=']' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleMultiplicityStringCS

-entryRuleMultiplicityStringCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMultiplicityStringCSRule()); }

-	 iv_ruleMultiplicityStringCS=ruleMultiplicityStringCS 

-	 { $current=$iv_ruleMultiplicityStringCS.current; } 

-	 EOF 

-;

-

-// Rule MultiplicityStringCS

-ruleMultiplicityStringCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-(

-		lv_stringBounds_0_1=	'*' 

-    {

-        newLeafNode(lv_stringBounds_0_1, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_1, null);

-	    }

-

-    |		lv_stringBounds_0_2=	'+' 

-    {

-        newLeafNode(lv_stringBounds_0_2, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_2, null);

-	    }

-

-    |		lv_stringBounds_0_3=	'?' 

-    {

-        newLeafNode(lv_stringBounds_0_3, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_3, null);

-	    }

-

-)

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRulePathNameCS

-entryRulePathNameCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPathNameCSRule()); }

-	 iv_rulePathNameCS=rulePathNameCS 

-	 { $current=$iv_rulePathNameCS.current; } 

-	 EOF 

-;

-

-// Rule PathNameCS

-rulePathNameCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathElements_0_0=ruleFirstPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_0_0, 

-        		"FirstPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='::' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedPathElements_2_0=ruleNextPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_2_0, 

-        		"NextPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)

-;

-

-

-

-

-

-// Entry rule entryRuleFirstPathElementCS

-entryRuleFirstPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getFirstPathElementCSRule()); }

-	 iv_ruleFirstPathElementCS=ruleFirstPathElementCS 

-	 { $current=$iv_ruleFirstPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule FirstPathElementCS

-ruleFirstPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getFirstPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNextPathElementCS

-entryRuleNextPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNextPathElementCSRule()); }

-	 iv_ruleNextPathElementCS=ruleNextPathElementCS 

-	 { $current=$iv_ruleNextPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule NextPathElementCS

-ruleNextPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNextPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 

-	    }

-		ruleUnreservedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTemplateBindingCS

-entryRuleTemplateBindingCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTemplateBindingCSRule()); }

-	 iv_ruleTemplateBindingCS=ruleTemplateBindingCS 

-	 { $current=$iv_ruleTemplateBindingCS.current; } 

-	 EOF 

-;

-

-// Rule TemplateBindingCS

-ruleTemplateBindingCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='(' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedSubstitutions_1_0=ruleTemplateParameterSubstitutionCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSubstitutions",

-        		lv_ownedSubstitutions_1_0, 

-        		"TemplateParameterSubstitutionCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedSubstitutions_3_0=ruleTemplateParameterSubstitutionCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSubstitutions",

-        		lv_ownedSubstitutions_3_0, 

-        		"TemplateParameterSubstitutionCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4=')' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTemplateParameterSubstitutionCS

-entryRuleTemplateParameterSubstitutionCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSRule()); }

-	 iv_ruleTemplateParameterSubstitutionCS=ruleTemplateParameterSubstitutionCS 

-	 { $current=$iv_ruleTemplateParameterSubstitutionCS.current; } 

-	 EOF 

-;

-

-// Rule TemplateParameterSubstitutionCS

-ruleTemplateParameterSubstitutionCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); 

-	    }

-		lv_ownedActualParameter_0_0=ruleTypeRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateParameterSubstitutionCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedActualParameter",

-        		lv_ownedActualParameter_0_0, 

-        		"TypeRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-

-

-// Entry rule entryRuleTypeParameterCS

-entryRuleTypeParameterCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeParameterCSRule()); }

-	 iv_ruleTypeParameterCS=ruleTypeParameterCS 

-	 { $current=$iv_ruleTypeParameterCS.current; } 

-	 EOF 

-;

-

-// Rule TypeParameterCS

-ruleTypeParameterCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((	otherlv_1='extends' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); 

-	    }

-		lv_ownedExtends_2_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_2_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3='&&' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); 

-	    }

-		lv_ownedExtends_4_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_4_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)

-    |(	otherlv_5='super' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); 

-	    }

-		lv_ownedSuper_6_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSuper",

-        		lv_ownedSuper_6_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeRefCS

-entryRuleTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeRefCSRule()); }

-	 iv_ruleTypeRefCS=ruleTypeRefCS 

-	 { $current=$iv_ruleTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypeRefCS

-ruleTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); 

-    }

-    this_TypedRefCS_0=ruleTypedRefCS

-    { 

-        $current = $this_TypedRefCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); 

-    }

-    this_WildcardTypeRefCS_1=ruleWildcardTypeRefCS

-    { 

-        $current = $this_WildcardTypeRefCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypedRefCS

-entryRuleTypedRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypedRefCSRule()); }

-	 iv_ruleTypedRefCS=ruleTypedRefCS 

-	 { $current=$iv_ruleTypedRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypedRefCS

-ruleTypedRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall()); 

-    }

-    this_TypedTypeRefCS_0=ruleTypedTypeRefCS

-    { 

-        $current = $this_TypedTypeRefCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-;

-

-

-

-

-

-// Entry rule entryRuleTypedTypeRefCS

-entryRuleTypedTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypedTypeRefCSRule()); }

-	 iv_ruleTypedTypeRefCS=ruleTypedTypeRefCS 

-	 { $current=$iv_ruleTypedTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypedTypeRefCS

-ruleTypedTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathName_0_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_0_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedBinding_1_0=ruleTemplateBindingCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedBinding",

-        		lv_ownedBinding_1_0, 

-        		"TemplateBindingCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleWildcardTypeRefCS

-entryRuleWildcardTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getWildcardTypeRefCSRule()); }

-	 iv_ruleWildcardTypeRefCS=ruleWildcardTypeRefCS 

-	 { $current=$iv_ruleWildcardTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule WildcardTypeRefCS

-ruleWildcardTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0(),

-            $current);

-    }

-)	otherlv_1='?' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1());

-    }

-((	otherlv_2='extends' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); 

-	    }

-		lv_ownedExtends_3_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_3_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |(	otherlv_4='super' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedSuper_5_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSuper",

-        		lv_ownedSuper_5_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-;

-

-

-

-

-

-// Entry rule entryRuleID

-entryRuleID returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIDRule()); } 

-	 iv_ruleID=ruleID 

-	 { $current=$iv_ruleID.current.getText(); }  

-	 EOF 

-;

-

-// Rule ID

-ruleID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(    this_SIMPLE_ID_0=RULE_SIMPLE_ID    {

-		$current.merge(this_SIMPLE_ID_0);

-    }

-

-    { 

-    newLeafNode(this_SIMPLE_ID_0, grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); 

-    }

-

-    |    this_ESCAPED_ID_1=RULE_ESCAPED_ID    {

-		$current.merge(this_ESCAPED_ID_1);

-    }

-

-    { 

-    newLeafNode(this_ESCAPED_ID_1, grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleIdentifier

-entryRuleIdentifier returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIdentifierRule()); } 

-	 iv_ruleIdentifier=ruleIdentifier 

-	 { $current=$iv_ruleIdentifier.current.getText(); }  

-	 EOF 

-;

-

-// Rule Identifier

-ruleIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); 

-    }

-    this_ID_0=ruleID    {

-		$current.merge(this_ID_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleLOWER

-entryRuleLOWER returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLOWERRule()); } 

-	 iv_ruleLOWER=ruleLOWER 

-	 { $current=$iv_ruleLOWER.current.getText(); }  

-	 EOF 

-;

-

-// Rule LOWER

-ruleLOWER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_INT_0=RULE_INT    {

-		$current.merge(this_INT_0);

-    }

-

-    { 

-    newLeafNode(this_INT_0, grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleNUMBER_LITERAL

-entryRuleNUMBER_LITERAL returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNUMBER_LITERALRule()); } 

-	 iv_ruleNUMBER_LITERAL=ruleNUMBER_LITERAL 

-	 { $current=$iv_ruleNUMBER_LITERAL.current.getText(); }  

-	 EOF 

-;

-

-// Rule NUMBER_LITERAL

-ruleNUMBER_LITERAL returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_INT_0=RULE_INT    {

-		$current.merge(this_INT_0);

-    }

-

-    { 

-    newLeafNode(this_INT_0, grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleStringLiteral

-entryRuleStringLiteral returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getStringLiteralRule()); } 

-	 iv_ruleStringLiteral=ruleStringLiteral 

-	 { $current=$iv_ruleStringLiteral.current.getText(); }  

-	 EOF 

-;

-

-// Rule StringLiteral

-ruleStringLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {

-		$current.merge(this_SINGLE_QUOTED_STRING_0);

-    }

-

-    { 

-    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleUPPER

-entryRuleUPPER returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUPPERRule()); } 

-	 iv_ruleUPPER=ruleUPPER 

-	 { $current=$iv_ruleUPPER.current.getText(); }  

-	 EOF 

-;

-

-// Rule UPPER

-ruleUPPER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(    this_INT_0=RULE_INT    {

-		$current.merge(this_INT_0);

-    }

-

-    { 

-    newLeafNode(this_INT_0, grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); 

-    }

-

-    |

-	kw='*' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleURI

-entryRuleURI returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getURIRule()); } 

-	 iv_ruleURI=ruleURI 

-	 { $current=$iv_ruleURI.current.getText(); }  

-	 EOF 

-;

-

-// Rule URI

-ruleURI returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {

-		$current.merge(this_SINGLE_QUOTED_STRING_0);

-    }

-

-    { 

-    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');

-

-fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');

-

-RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';

-

-RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';

-

-RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';

-

-RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;

-

-RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;

-

-RULE_INT : ('0'..'9')+;

-

-RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';

-

-RULE_SL_COMMENT : '--' ~(('\n'|'\r'))* ('\r'? '\n')?;

-

-RULE_WS : (' '|'\t'|'\r'|'\n')+;

-

-RULE_ANY_OTHER : .;

-

-

+/*
+ * generated by Xtext
+ */
+grammar InternalEssentialOCL;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.ocl.xtext.essentialocl.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.ocl.xtext.essentialocl.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.ocl.xtext.essentialocl.services.EssentialOCLGrammarAccess;
+
+}
+
+@parser::members {
+
+/*
+  This grammar contains a lot of empty actions to work around a bug in ANTLR.
+  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.
+*/
+ 
+ 	private EssentialOCLGrammarAccess grammarAccess;
+ 	
+    public InternalEssentialOCLParser(TokenStream input, EssentialOCLGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "Model";	
+   	}
+   	
+   	@Override
+   	protected EssentialOCLGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleModel
+entryRuleModel returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getModelRule()); }
+	 iv_ruleModel=ruleModel 
+	 { $current=$iv_ruleModel.current; } 
+	 EOF 
+;
+
+// Rule Model
+ruleModel returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getModelAccess().getOwnedExpressionExpCSParserRuleCall_0()); 
+	    }
+		lv_ownedExpression_0_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getModelRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_0_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnaryOperatorName
+entryRuleEssentialOCLUnaryOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 
+	 iv_ruleEssentialOCLUnaryOperatorName=ruleEssentialOCLUnaryOperatorName 
+	 { $current=$iv_ruleEssentialOCLUnaryOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLUnaryOperatorName
+ruleEssentialOCLUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); 
+    }
+
+    |
+	kw='not' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLInfixOperatorName
+entryRuleEssentialOCLInfixOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 
+	 iv_ruleEssentialOCLInfixOperatorName=ruleEssentialOCLInfixOperatorName 
+	 { $current=$iv_ruleEssentialOCLInfixOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLInfixOperatorName
+ruleEssentialOCLInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); 
+    }
+
+    |
+	kw='/' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); 
+    }
+
+    |
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); 
+    }
+
+    |
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); 
+    }
+
+    |
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); 
+    }
+
+    |
+	kw='>=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); 
+    }
+
+    |
+	kw='<=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); 
+    }
+
+    |
+	kw='=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); 
+    }
+
+    |
+	kw='<>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); 
+    }
+
+    |
+	kw='and' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); 
+    }
+
+    |
+	kw='or' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); 
+    }
+
+    |
+	kw='xor' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); 
+    }
+
+    |
+	kw='implies' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLNavigationOperatorName
+entryRuleEssentialOCLNavigationOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 
+	 iv_ruleEssentialOCLNavigationOperatorName=ruleEssentialOCLNavigationOperatorName 
+	 { $current=$iv_ruleEssentialOCLNavigationOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLNavigationOperatorName
+ruleEssentialOCLNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); 
+    }
+
+    |
+	kw='->' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); 
+    }
+
+    |
+	kw='?.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); 
+    }
+
+    |
+	kw='?->' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleBinaryOperatorName
+entryRuleBinaryOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBinaryOperatorNameRule()); } 
+	 iv_ruleBinaryOperatorName=ruleBinaryOperatorName 
+	 { $current=$iv_ruleBinaryOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule BinaryOperatorName
+ruleBinaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); 
+    }
+    this_InfixOperatorName_0=ruleInfixOperatorName    {
+		$current.merge(this_InfixOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); 
+    }
+    this_NavigationOperatorName_1=ruleNavigationOperatorName    {
+		$current.merge(this_NavigationOperatorName_1);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleInfixOperatorName
+entryRuleInfixOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInfixOperatorNameRule()); } 
+	 iv_ruleInfixOperatorName=ruleInfixOperatorName 
+	 { $current=$iv_ruleInfixOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule InfixOperatorName
+ruleInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); 
+    }
+    this_EssentialOCLInfixOperatorName_0=ruleEssentialOCLInfixOperatorName    {
+		$current.merge(this_EssentialOCLInfixOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleNavigationOperatorName
+entryRuleNavigationOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigationOperatorNameRule()); } 
+	 iv_ruleNavigationOperatorName=ruleNavigationOperatorName 
+	 { $current=$iv_ruleNavigationOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule NavigationOperatorName
+ruleNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); 
+    }
+    this_EssentialOCLNavigationOperatorName_0=ruleEssentialOCLNavigationOperatorName    {
+		$current.merge(this_EssentialOCLNavigationOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleUnaryOperatorName
+entryRuleUnaryOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnaryOperatorNameRule()); } 
+	 iv_ruleUnaryOperatorName=ruleUnaryOperatorName 
+	 { $current=$iv_ruleUnaryOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnaryOperatorName
+ruleUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); 
+    }
+    this_EssentialOCLUnaryOperatorName_0=ruleEssentialOCLUnaryOperatorName    {
+		$current.merge(this_EssentialOCLUnaryOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnrestrictedName
+entryRuleEssentialOCLUnrestrictedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 
+	 iv_ruleEssentialOCLUnrestrictedName=ruleEssentialOCLUnrestrictedName 
+	 { $current=$iv_ruleEssentialOCLUnrestrictedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLUnrestrictedName
+ruleEssentialOCLUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); 
+    }
+    this_Identifier_0=ruleIdentifier    {
+		$current.merge(this_Identifier_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleUnrestrictedName
+entryRuleUnrestrictedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnrestrictedNameRule()); } 
+	 iv_ruleUnrestrictedName=ruleUnrestrictedName 
+	 { $current=$iv_ruleUnrestrictedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnrestrictedName
+ruleUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall()); 
+    }
+    this_EssentialOCLUnrestrictedName_0=ruleEssentialOCLUnrestrictedName    {
+		$current.merge(this_EssentialOCLUnrestrictedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnreservedName
+entryRuleEssentialOCLUnreservedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameRule()); } 
+	 iv_ruleEssentialOCLUnreservedName=ruleEssentialOCLUnreservedName 
+	 { $current=$iv_ruleEssentialOCLUnreservedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLUnreservedName
+ruleEssentialOCLUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); 
+    }
+    this_UnrestrictedName_0=ruleUnrestrictedName    {
+		$current.merge(this_UnrestrictedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); 
+    }
+    this_CollectionTypeIdentifier_1=ruleCollectionTypeIdentifier    {
+		$current.merge(this_CollectionTypeIdentifier_1);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); 
+    }
+    this_PrimitiveTypeIdentifier_2=rulePrimitiveTypeIdentifier    {
+		$current.merge(this_PrimitiveTypeIdentifier_2);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	kw='Tuple' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleUnreservedName
+entryRuleUnreservedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnreservedNameRule()); } 
+	 iv_ruleUnreservedName=ruleUnreservedName 
+	 { $current=$iv_ruleUnreservedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnreservedName
+ruleUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); 
+    }
+    this_EssentialOCLUnreservedName_0=ruleEssentialOCLUnreservedName    {
+		$current.merge(this_EssentialOCLUnreservedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+
+
+// Entry rule entryRuleURIFirstPathElementCS
+entryRuleURIFirstPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getURIFirstPathElementCSRule()); }
+	 iv_ruleURIFirstPathElementCS=ruleURIFirstPathElementCS 
+	 { $current=$iv_ruleURIFirstPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule URIFirstPathElementCS
+ruleURIFirstPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0(),
+            $current);
+    }
+)(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); 
+	    }
+		ruleURI		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRulePrimitiveTypeIdentifier
+entryRulePrimitiveTypeIdentifier returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimitiveTypeIdentifierRule()); } 
+	 iv_rulePrimitiveTypeIdentifier=rulePrimitiveTypeIdentifier 
+	 { $current=$iv_rulePrimitiveTypeIdentifier.current.getText(); }  
+	 EOF 
+;
+
+// Rule PrimitiveTypeIdentifier
+rulePrimitiveTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='Boolean' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); 
+    }
+
+    |
+	kw='Integer' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); 
+    }
+
+    |
+	kw='Real' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); 
+    }
+
+    |
+	kw='String' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); 
+    }
+
+    |
+	kw='UnlimitedNatural' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); 
+    }
+
+    |
+	kw='OclAny' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); 
+    }
+
+    |
+	kw='OclInvalid' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); 
+    }
+
+    |
+	kw='OclVoid' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRulePrimitiveTypeCS
+entryRulePrimitiveTypeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimitiveTypeCSRule()); }
+	 iv_rulePrimitiveTypeCS=rulePrimitiveTypeCS 
+	 { $current=$iv_rulePrimitiveTypeCS.current; } 
+	 EOF 
+;
+
+// Rule PrimitiveTypeCS
+rulePrimitiveTypeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); 
+	    }
+		lv_name_0_0=rulePrimitiveTypeIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrimitiveTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"PrimitiveTypeIdentifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionTypeIdentifier
+entryRuleCollectionTypeIdentifier returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionTypeIdentifierRule()); } 
+	 iv_ruleCollectionTypeIdentifier=ruleCollectionTypeIdentifier 
+	 { $current=$iv_ruleCollectionTypeIdentifier.current.getText(); }  
+	 EOF 
+;
+
+// Rule CollectionTypeIdentifier
+ruleCollectionTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='Set' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); 
+    }
+
+    |
+	kw='Bag' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); 
+    }
+
+    |
+	kw='Sequence' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); 
+    }
+
+    |
+	kw='Collection' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); 
+    }
+
+    |
+	kw='OrderedSet' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleCollectionTypeCS
+entryRuleCollectionTypeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionTypeCSRule()); }
+	 iv_ruleCollectionTypeCS=ruleCollectionTypeCS 
+	 { $current=$iv_ruleCollectionTypeCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionTypeCS
+ruleCollectionTypeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleCollectionTypeIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"CollectionTypeIdentifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTupleTypeCS
+entryRuleTupleTypeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTupleTypeCSRule()); }
+	 iv_ruleTupleTypeCS=ruleTupleTypeCS 
+	 { $current=$iv_ruleTupleTypeCS.current; } 
+	 EOF 
+;
+
+// Rule TupleTypeCS
+ruleTupleTypeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_name_0_0=	'Tuple' 
+    {
+        newLeafNode(lv_name_0_0, grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getTupleTypeCSRule());
+	        }
+       		setWithLastConsumed($current, "name", lv_name_0_0, "Tuple");
+	    }
+
+)
+)(	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); 
+	    }
+		lv_ownedParts_2_0=ruleTuplePartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"TuplePartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleTuplePartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"TuplePartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTuplePartCS
+entryRuleTuplePartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTuplePartCSRule()); }
+	 iv_ruleTuplePartCS=ruleTuplePartCS 
+	 { $current=$iv_ruleTuplePartCS.current; } 
+	 EOF 
+;
+
+// Rule TuplePartCS
+ruleTuplePartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTuplePartCSAccess().getColonKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionLiteralExpCS
+entryRuleCollectionLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionLiteralExpCSRule()); }
+	 iv_ruleCollectionLiteralExpCS=ruleCollectionLiteralExpCS 
+	 { $current=$iv_ruleCollectionLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionLiteralExpCS
+ruleCollectionLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedType_0_0=ruleCollectionTypeCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_0_0, 
+        		"CollectionTypeCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedParts_2_0=ruleCollectionLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"CollectionLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleCollectionLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"CollectionLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionLiteralPartCS
+entryRuleCollectionLiteralPartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionLiteralPartCSRule()); }
+	 iv_ruleCollectionLiteralPartCS=ruleCollectionLiteralPartCS 
+	 { $current=$iv_ruleCollectionLiteralPartCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionLiteralPartCS
+ruleCollectionLiteralPartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); 
+	    }
+		lv_ownedExpression_0_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_0_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='..' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); 
+	    }
+		lv_ownedLastExpression_2_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedLastExpression",
+        		lv_ownedLastExpression_2_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedExpression_3_0=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_3_0, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionPatternCS
+entryRuleCollectionPatternCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionPatternCSRule()); }
+	 iv_ruleCollectionPatternCS=ruleCollectionPatternCS 
+	 { $current=$iv_ruleCollectionPatternCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionPatternCS
+ruleCollectionPatternCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedType_0_0=ruleCollectionTypeCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_0_0, 
+        		"CollectionTypeCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedParts_2_0=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*(	otherlv_5='++' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); 
+	    }
+		lv_restVariableName_6_0=ruleIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		set(
+       			$current, 
+       			"restVariableName",
+        		lv_restVariableName_6_0, 
+        		"Identifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleConstructorPartCS
+entryRuleConstructorPartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getConstructorPartCSRule()); }
+	 iv_ruleConstructorPartCS=ruleConstructorPartCS 
+	 { $current=$iv_ruleConstructorPartCS.current; } 
+	 EOF 
+;
+
+// Rule ConstructorPartCS
+ruleConstructorPartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getConstructorPartCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='=' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1());
+    }
+(
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedInitExpression_2_1=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_2_1, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		{ 
+	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); 
+	    }
+		lv_ownedInitExpression_2_2=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_2_2, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRulePatternExpCS
+entryRulePatternExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPatternExpCSRule()); }
+	 iv_rulePatternExpCS=rulePatternExpCS 
+	 { $current=$iv_rulePatternExpCS.current; } 
+	 EOF 
+;
+
+// Rule PatternExpCS
+rulePatternExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_patternVariableName_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"patternVariableName",
+        		lv_patternVariableName_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPatternExpCSAccess().getColonKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedPatternType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPatternType",
+        		lv_ownedPatternType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLambdaLiteralExpCS
+entryRuleLambdaLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLambdaLiteralExpCSRule()); }
+	 iv_ruleLambdaLiteralExpCS=ruleLambdaLiteralExpCS 
+	 { $current=$iv_ruleLambdaLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule LambdaLiteralExpCS
+ruleLambdaLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Lambda' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedExpressionCS_2_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLambdaLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpressionCS",
+        		lv_ownedExpressionCS_2_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='}' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrimitiveLiteralExpCS
+entryRulePrimitiveLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSRule()); }
+	 iv_rulePrimitiveLiteralExpCS=rulePrimitiveLiteralExpCS 
+	 { $current=$iv_rulePrimitiveLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrimitiveLiteralExpCS
+rulePrimitiveLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); 
+    }
+    this_NumberLiteralExpCS_0=ruleNumberLiteralExpCS
+    { 
+        $current = $this_NumberLiteralExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); 
+    }
+    this_StringLiteralExpCS_1=ruleStringLiteralExpCS
+    { 
+        $current = $this_StringLiteralExpCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); 
+    }
+    this_BooleanLiteralExpCS_2=ruleBooleanLiteralExpCS
+    { 
+        $current = $this_BooleanLiteralExpCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); 
+    }
+    this_UnlimitedNaturalLiteralExpCS_3=ruleUnlimitedNaturalLiteralExpCS
+    { 
+        $current = $this_UnlimitedNaturalLiteralExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); 
+    }
+    this_InvalidLiteralExpCS_4=ruleInvalidLiteralExpCS
+    { 
+        $current = $this_InvalidLiteralExpCS_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); 
+    }
+    this_NullLiteralExpCS_5=ruleNullLiteralExpCS
+    { 
+        $current = $this_NullLiteralExpCS_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTupleLiteralExpCS
+entryRuleTupleLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTupleLiteralExpCSRule()); }
+	 iv_ruleTupleLiteralExpCS=ruleTupleLiteralExpCS 
+	 { $current=$iv_ruleTupleLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule TupleLiteralExpCS
+ruleTupleLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Tuple' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedParts_2_0=ruleTupleLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"TupleLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleTupleLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"TupleLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTupleLiteralPartCS
+entryRuleTupleLiteralPartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTupleLiteralPartCSRule()); }
+	 iv_ruleTupleLiteralPartCS=ruleTupleLiteralPartCS 
+	 { $current=$iv_ruleTupleLiteralPartCS.current; } 
+	 EOF 
+;
+
+// Rule TupleLiteralPartCS
+ruleTupleLiteralPartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_3='=' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedInitExpression_4_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_4_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleNumberLiteralExpCS
+entryRuleNumberLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNumberLiteralExpCSRule()); }
+	 iv_ruleNumberLiteralExpCS=ruleNumberLiteralExpCS 
+	 { $current=$iv_ruleNumberLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule NumberLiteralExpCS
+ruleNumberLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); 
+	    }
+		lv_symbol_0_0=ruleNUMBER_LITERAL		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNumberLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"symbol",
+        		lv_symbol_0_0, 
+        		"NUMBER_LITERAL");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStringLiteralExpCS
+entryRuleStringLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStringLiteralExpCSRule()); }
+	 iv_ruleStringLiteralExpCS=ruleStringLiteralExpCS 
+	 { $current=$iv_ruleStringLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule StringLiteralExpCS
+ruleStringLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); 
+	    }
+		lv_segments_0_0=ruleStringLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStringLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"segments",
+        		lv_segments_0_0, 
+        		"StringLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+
+;
+
+
+
+
+
+// Entry rule entryRuleBooleanLiteralExpCS
+entryRuleBooleanLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBooleanLiteralExpCSRule()); }
+	 iv_ruleBooleanLiteralExpCS=ruleBooleanLiteralExpCS 
+	 { $current=$iv_ruleBooleanLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule BooleanLiteralExpCS
+ruleBooleanLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_symbol_0_0=	'true' 
+    {
+        newLeafNode(lv_symbol_0_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());
+	        }
+       		setWithLastConsumed($current, "symbol", lv_symbol_0_0, "true");
+	    }
+
+)
+)
+    |(
+(
+		lv_symbol_1_0=	'false' 
+    {
+        newLeafNode(lv_symbol_1_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());
+	        }
+       		setWithLastConsumed($current, "symbol", lv_symbol_1_0, "false");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleUnlimitedNaturalLiteralExpCS
+entryRuleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }
+	 iv_ruleUnlimitedNaturalLiteralExpCS=ruleUnlimitedNaturalLiteralExpCS 
+	 { $current=$iv_ruleUnlimitedNaturalLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule UnlimitedNaturalLiteralExpCS
+ruleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='*' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleInvalidLiteralExpCS
+entryRuleInvalidLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInvalidLiteralExpCSRule()); }
+	 iv_ruleInvalidLiteralExpCS=ruleInvalidLiteralExpCS 
+	 { $current=$iv_ruleInvalidLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule InvalidLiteralExpCS
+ruleInvalidLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='invalid' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNullLiteralExpCS
+entryRuleNullLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNullLiteralExpCSRule()); }
+	 iv_ruleNullLiteralExpCS=ruleNullLiteralExpCS 
+	 { $current=$iv_ruleNullLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule NullLiteralExpCS
+ruleNullLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='null' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeLiteralCS
+entryRuleTypeLiteralCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeLiteralCSRule()); }
+	 iv_ruleTypeLiteralCS=ruleTypeLiteralCS 
+	 { $current=$iv_ruleTypeLiteralCS.current; } 
+	 EOF 
+;
+
+// Rule TypeLiteralCS
+ruleTypeLiteralCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); 
+    }
+    this_PrimitiveTypeCS_0=rulePrimitiveTypeCS
+    { 
+        $current = $this_PrimitiveTypeCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); 
+    }
+    this_CollectionTypeCS_1=ruleCollectionTypeCS
+    { 
+        $current = $this_CollectionTypeCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); 
+    }
+    this_TupleTypeCS_2=ruleTupleTypeCS
+    { 
+        $current = $this_TupleTypeCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeLiteralWithMultiplicityCS
+entryRuleTypeLiteralWithMultiplicityCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }
+	 iv_ruleTypeLiteralWithMultiplicityCS=ruleTypeLiteralWithMultiplicityCS 
+	 { $current=$iv_ruleTypeLiteralWithMultiplicityCS.current; } 
+	 EOF 
+;
+
+// Rule TypeLiteralWithMultiplicityCS
+ruleTypeLiteralWithMultiplicityCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); 
+    }
+    this_TypeLiteralCS_0=ruleTypeLiteralCS
+    { 
+        $current = $this_TypeLiteralCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedMultiplicity_1_0=ruleMultiplicityCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeLiteralWithMultiplicityCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMultiplicity",
+        		lv_ownedMultiplicity_1_0, 
+        		"MultiplicityCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeLiteralExpCS
+entryRuleTypeLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeLiteralExpCSRule()); }
+	 iv_ruleTypeLiteralExpCS=ruleTypeLiteralExpCS 
+	 { $current=$iv_ruleTypeLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule TypeLiteralExpCS
+ruleTypeLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); 
+	    }
+		lv_ownedType_0_0=ruleTypeLiteralWithMultiplicityCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_0_0, 
+        		"TypeLiteralWithMultiplicityCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeNameExpCS
+entryRuleTypeNameExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeNameExpCSRule()); }
+	 iv_ruleTypeNameExpCS=ruleTypeNameExpCS 
+	 { $current=$iv_ruleTypeNameExpCS.current; } 
+	 EOF 
+;
+
+// Rule TypeNameExpCS
+ruleTypeNameExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathName_0_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_0_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); 
+	    }
+		lv_ownedCurlyBracketedClause_1_0=ruleCurlyBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCurlyBracketedClause",
+        		lv_ownedCurlyBracketedClause_1_0, 
+        		"CurlyBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); 
+	    }
+		lv_ownedPatternGuard_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPatternGuard",
+        		lv_ownedPatternGuard_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2());
+    }
+)?)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeExpCS
+entryRuleTypeExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeExpCSRule()); }
+	 iv_ruleTypeExpCS=ruleTypeExpCS 
+	 { $current=$iv_ruleTypeExpCS.current; } 
+	 EOF 
+;
+
+// Rule TypeExpCS
+ruleTypeExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); 
+    }
+    this_TypeNameExpCS_0=ruleTypeNameExpCS
+    { 
+        $current = $this_TypeNameExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); 
+    }
+    this_TypeLiteralCS_1=ruleTypeLiteralCS
+    { 
+        $current = $this_TypeLiteralCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); 
+    }
+    this_CollectionPatternCS_2=ruleCollectionPatternCS
+    { 
+        $current = $this_CollectionPatternCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedMultiplicity_3_0=ruleMultiplicityCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMultiplicity",
+        		lv_ownedMultiplicity_3_0, 
+        		"MultiplicityCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleExpCS
+entryRuleExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExpCSRule()); }
+	 iv_ruleExpCS=ruleExpCS 
+	 { $current=$iv_ruleExpCS.current; } 
+	 EOF 
+;
+
+// Rule ExpCS
+ruleExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); 
+    }
+    this_PrefixedPrimaryExpCS_0=rulePrefixedPrimaryExpCS
+    { 
+        $current = $this_PrefixedPrimaryExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); 
+	    }
+		lv_name_2_0=ruleBinaryOperatorName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"BinaryOperatorName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); 
+	    }
+		lv_ownedRight_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRight",
+        		lv_ownedRight_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); 
+    }
+    this_PrefixedLetExpCS_4=rulePrefixedLetExpCS
+    { 
+        $current = $this_PrefixedLetExpCS_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrefixedLetExpCS
+entryRulePrefixedLetExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrefixedLetExpCSRule()); }
+	 iv_rulePrefixedLetExpCS=rulePrefixedLetExpCS 
+	 { $current=$iv_rulePrefixedLetExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrefixedLetExpCS
+rulePrefixedLetExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 
+	    }
+		lv_name_1_0=ruleUnaryOperatorName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnaryOperatorName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); 
+	    }
+		lv_ownedRight_2_0=rulePrefixedLetExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRight",
+        		lv_ownedRight_2_0, 
+        		"PrefixedLetExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); 
+    }
+    this_LetExpCS_3=ruleLetExpCS
+    { 
+        $current = $this_LetExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrefixedPrimaryExpCS
+entryRulePrefixedPrimaryExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSRule()); }
+	 iv_rulePrefixedPrimaryExpCS=rulePrefixedPrimaryExpCS 
+	 { $current=$iv_rulePrefixedPrimaryExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrefixedPrimaryExpCS
+rulePrefixedPrimaryExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 
+	    }
+		lv_name_1_0=ruleUnaryOperatorName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnaryOperatorName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); 
+	    }
+		lv_ownedRight_2_0=rulePrefixedPrimaryExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRight",
+        		lv_ownedRight_2_0, 
+        		"PrefixedPrimaryExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); 
+    }
+    this_PrimaryExpCS_3=rulePrimaryExpCS
+    { 
+        $current = $this_PrimaryExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrimaryExpCS
+entryRulePrimaryExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimaryExpCSRule()); }
+	 iv_rulePrimaryExpCS=rulePrimaryExpCS 
+	 { $current=$iv_rulePrimaryExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrimaryExpCS
+rulePrimaryExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); 
+    }
+    this_NestedExpCS_0=ruleNestedExpCS
+    { 
+        $current = $this_NestedExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); 
+    }
+    this_IfExpCS_1=ruleIfExpCS
+    { 
+        $current = $this_IfExpCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); 
+    }
+    this_SelfExpCS_2=ruleSelfExpCS
+    { 
+        $current = $this_SelfExpCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); 
+    }
+    this_PrimitiveLiteralExpCS_3=rulePrimitiveLiteralExpCS
+    { 
+        $current = $this_PrimitiveLiteralExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); 
+    }
+    this_TupleLiteralExpCS_4=ruleTupleLiteralExpCS
+    { 
+        $current = $this_TupleLiteralExpCS_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); 
+    }
+    this_CollectionLiteralExpCS_5=ruleCollectionLiteralExpCS
+    { 
+        $current = $this_CollectionLiteralExpCS_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); 
+    }
+    this_LambdaLiteralExpCS_6=ruleLambdaLiteralExpCS
+    { 
+        $current = $this_LambdaLiteralExpCS_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); 
+    }
+    this_TypeLiteralExpCS_7=ruleTypeLiteralExpCS
+    { 
+        $current = $this_TypeLiteralExpCS_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); 
+    }
+    this_NameExpCS_8=ruleNameExpCS
+    { 
+        $current = $this_NameExpCS_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNameExpCS
+entryRuleNameExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNameExpCSRule()); }
+	 iv_ruleNameExpCS=ruleNameExpCS 
+	 { $current=$iv_ruleNameExpCS.current; } 
+	 EOF 
+;
+
+// Rule NameExpCS
+ruleNameExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathName_0_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_0_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedSquareBracketedClauses_1_0=ruleSquareBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSquareBracketedClauses",
+        		lv_ownedSquareBracketedClauses_1_0, 
+        		"SquareBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedRoundBracketedClause_2_0=ruleRoundBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRoundBracketedClause",
+        		lv_ownedRoundBracketedClause_2_0, 
+        		"RoundBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedCurlyBracketedClause_3_0=ruleCurlyBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCurlyBracketedClause",
+        		lv_ownedCurlyBracketedClause_3_0, 
+        		"CurlyBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?((
+(
+		lv_isPre_4_0=	'@' 
+    {
+        newLeafNode(lv_isPre_4_0, grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNameExpCSRule());
+	        }
+       		setWithLastConsumed($current, "isPre", true, "@");
+	    }
+
+)
+)	otherlv_5='pre' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getNameExpCSAccess().getPreKeyword_4_1());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleCurlyBracketedClauseCS
+entryRuleCurlyBracketedClauseCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCurlyBracketedClauseCSRule()); }
+	 iv_ruleCurlyBracketedClauseCS=ruleCurlyBracketedClauseCS 
+	 { $current=$iv_ruleCurlyBracketedClauseCS.current; } 
+	 EOF 
+;
+
+// Rule CurlyBracketedClauseCS
+ruleCurlyBracketedClauseCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0(),
+            $current);
+    }
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); 
+	    }
+		lv_ownedParts_2_0=ruleConstructorPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"ConstructorPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleConstructorPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"ConstructorPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); 
+	    }
+		lv_value_5_0=ruleStringLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_5_0, 
+        		"StringLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleRoundBracketedClauseCS
+entryRuleRoundBracketedClauseCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRoundBracketedClauseCSRule()); }
+	 iv_ruleRoundBracketedClauseCS=ruleRoundBracketedClauseCS 
+	 { $current=$iv_ruleRoundBracketedClauseCS.current; } 
+	 EOF 
+;
+
+// Rule RoundBracketedClauseCS
+ruleRoundBracketedClauseCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0(),
+            $current);
+    }
+)	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedArguments_2_0=ruleNavigatingArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_2_0, 
+        		"NavigatingArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedArguments_3_0=ruleNavigatingCommaArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_3_0, 
+        		"NavigatingCommaArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); 
+	    }
+		lv_ownedArguments_4_0=ruleNavigatingSemiArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_4_0, 
+        		"NavigatingSemiArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); 
+	    }
+		lv_ownedArguments_5_0=ruleNavigatingCommaArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_5_0, 
+        		"NavigatingCommaArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)?((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); 
+	    }
+		lv_ownedArguments_6_0=ruleNavigatingBarArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_6_0, 
+        		"NavigatingBarArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); 
+	    }
+		lv_ownedArguments_7_0=ruleNavigatingCommaArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_7_0, 
+        		"NavigatingCommaArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)*)?	otherlv_8=')' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSquareBracketedClauseCS
+entryRuleSquareBracketedClauseCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSquareBracketedClauseCSRule()); }
+	 iv_ruleSquareBracketedClauseCS=ruleSquareBracketedClauseCS 
+	 { $current=$iv_ruleSquareBracketedClauseCS.current; } 
+	 EOF 
+;
+
+// Rule SquareBracketedClauseCS
+ruleSquareBracketedClauseCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='[' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedTerms_1_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedTerms",
+        		lv_ownedTerms_1_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedTerms_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedTerms",
+        		lv_ownedTerms_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4=']' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingArgCS
+entryRuleNavigatingArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingArgCSRule()); }
+	 iv_ruleNavigatingArgCS=ruleNavigatingArgCS 
+	 { $current=$iv_ruleNavigatingArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingArgCS
+ruleNavigatingArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); 
+	    }
+		lv_ownedNameExpression_0_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_0_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='=' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); 
+	    }
+		lv_ownedInitExpression_4_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_4_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(	otherlv_5='in' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); 
+	    }
+		lv_ownedInitExpression_6_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_6_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+    |(	otherlv_7=':' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedType_8_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_8_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingBarArgCS
+entryRuleNavigatingBarArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingBarArgCSRule()); }
+	 iv_ruleNavigatingBarArgCS=ruleNavigatingBarArgCS 
+	 { $current=$iv_ruleNavigatingBarArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingBarArgCS
+ruleNavigatingBarArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_prefix_0_0=	'|' 
+    {
+        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, "|");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_1_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)?)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingCommaArgCS
+entryRuleNavigatingCommaArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingCommaArgCSRule()); }
+	 iv_ruleNavigatingCommaArgCS=ruleNavigatingCommaArgCS 
+	 { $current=$iv_ruleNavigatingCommaArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingCommaArgCS
+ruleNavigatingCommaArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_prefix_0_0=	',' 
+    {
+        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ",");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_1_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(	otherlv_6='in' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedInitExpression_7_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_7_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingSemiArgCS
+entryRuleNavigatingSemiArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingSemiArgCSRule()); }
+	 iv_ruleNavigatingSemiArgCS=ruleNavigatingSemiArgCS 
+	 { $current=$iv_ruleNavigatingSemiArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingSemiArgCS
+ruleNavigatingSemiArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_prefix_0_0=	';' 
+    {
+        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ";");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_1_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)?)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingArgExpCS
+entryRuleNavigatingArgExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingArgExpCSRule()); }
+	 iv_ruleNavigatingArgExpCS=ruleNavigatingArgExpCS 
+	 { $current=$iv_ruleNavigatingArgExpCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingArgExpCS
+ruleNavigatingArgExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); 
+    }
+    this_ExpCS_0=ruleExpCS
+    { 
+        $current = $this_ExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleIfExpCS
+entryRuleIfExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIfExpCSRule()); }
+	 iv_ruleIfExpCS=ruleIfExpCS 
+	 { $current=$iv_ruleIfExpCS.current; } 
+	 EOF 
+;
+
+// Rule IfExpCS
+ruleIfExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='if' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getIfExpCSAccess().getIfKeyword_0());
+    }
+(
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); 
+	    }
+		lv_ownedCondition_1_1=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCondition",
+        		lv_ownedCondition_1_1, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); 
+	    }
+		lv_ownedCondition_1_2=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCondition",
+        		lv_ownedCondition_1_2, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+
+)
+)	otherlv_2='then' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getIfExpCSAccess().getThenKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedThenExpression_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedThenExpression",
+        		lv_ownedThenExpression_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedIfThenExpressions_4_0=ruleElseIfThenExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedIfThenExpressions",
+        		lv_ownedIfThenExpressions_4_0, 
+        		"ElseIfThenExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5='else' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getIfExpCSAccess().getElseKeyword_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); 
+	    }
+		lv_ownedElseExpression_6_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedElseExpression",
+        		lv_ownedElseExpression_6_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='endif' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getIfExpCSAccess().getEndifKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleElseIfThenExpCS
+entryRuleElseIfThenExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getElseIfThenExpCSRule()); }
+	 iv_ruleElseIfThenExpCS=ruleElseIfThenExpCS 
+	 { $current=$iv_ruleElseIfThenExpCS.current; } 
+	 EOF 
+;
+
+// Rule ElseIfThenExpCS
+ruleElseIfThenExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='elseif' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedCondition_1_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCondition",
+        		lv_ownedCondition_1_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='then' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedThenExpression_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedThenExpression",
+        		lv_ownedThenExpression_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLetExpCS
+entryRuleLetExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLetExpCSRule()); }
+	 iv_ruleLetExpCS=ruleLetExpCS 
+	 { $current=$iv_ruleLetExpCS.current; } 
+	 EOF 
+;
+
+// Rule LetExpCS
+ruleLetExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='let' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLetExpCSAccess().getLetKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedVariables_1_0=ruleLetVariableCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedVariables",
+        		lv_ownedVariables_1_0, 
+        		"LetVariableCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedVariables_3_0=ruleLetVariableCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedVariables",
+        		lv_ownedVariables_3_0, 
+        		"LetVariableCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4='in' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getLetExpCSAccess().getInKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedInExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInExpression",
+        		lv_ownedInExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLetVariableCS
+entryRuleLetVariableCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLetVariableCSRule()); }
+	 iv_ruleLetVariableCS=ruleLetVariableCS 
+	 { $current=$iv_ruleLetVariableCS.current; } 
+	 EOF 
+;
+
+// Rule LetVariableCS
+ruleLetVariableCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedRoundBracketedClause_1_0=ruleRoundBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRoundBracketedClause",
+        		lv_ownedRoundBracketedClause_1_0, 
+        		"RoundBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleNestedExpCS
+entryRuleNestedExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNestedExpCSRule()); }
+	 iv_ruleNestedExpCS=ruleNestedExpCS 
+	 { $current=$iv_ruleNestedExpCS.current; } 
+	 EOF 
+;
+
+// Rule NestedExpCS
+ruleNestedExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedExpression_1_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNestedExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_1_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2=')' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSelfExpCS
+entryRuleSelfExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSelfExpCSRule()); }
+	 iv_ruleSelfExpCS=ruleSelfExpCS 
+	 { $current=$iv_ruleSelfExpCS.current; } 
+	 EOF 
+;
+
+// Rule SelfExpCS
+ruleSelfExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='self' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getSelfExpCSAccess().getSelfKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleMultiplicityBoundsCS
+entryRuleMultiplicityBoundsCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityBoundsCSRule()); }
+	 iv_ruleMultiplicityBoundsCS=ruleMultiplicityBoundsCS 
+	 { $current=$iv_ruleMultiplicityBoundsCS.current; } 
+	 EOF 
+;
+
+// Rule MultiplicityBoundsCS
+ruleMultiplicityBoundsCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); 
+	    }
+		lv_lowerBound_0_0=ruleLOWER		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());
+	        }
+       		set(
+       			$current, 
+       			"lowerBound",
+        		lv_lowerBound_0_0, 
+        		"LOWER");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='..' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); 
+	    }
+		lv_upperBound_2_0=ruleUPPER		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());
+	        }
+       		set(
+       			$current, 
+       			"upperBound",
+        		lv_upperBound_2_0, 
+        		"UPPER");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleMultiplicityCS
+entryRuleMultiplicityCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityCSRule()); }
+	 iv_ruleMultiplicityCS=ruleMultiplicityCS 
+	 { $current=$iv_ruleMultiplicityCS.current; } 
+	 EOF 
+;
+
+// Rule MultiplicityCS
+ruleMultiplicityCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='[' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0());
+    }
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); 
+    }
+    this_MultiplicityBoundsCS_1=ruleMultiplicityBoundsCS
+    { 
+        $current = $this_MultiplicityBoundsCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); 
+    }
+    this_MultiplicityStringCS_2=ruleMultiplicityStringCS
+    { 
+        $current = $this_MultiplicityStringCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)	otherlv_3=']' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleMultiplicityStringCS
+entryRuleMultiplicityStringCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityStringCSRule()); }
+	 iv_ruleMultiplicityStringCS=ruleMultiplicityStringCS 
+	 { $current=$iv_ruleMultiplicityStringCS.current; } 
+	 EOF 
+;
+
+// Rule MultiplicityStringCS
+ruleMultiplicityStringCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+(
+		lv_stringBounds_0_1=	'*' 
+    {
+        newLeafNode(lv_stringBounds_0_1, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_1, null);
+	    }
+
+    |		lv_stringBounds_0_2=	'+' 
+    {
+        newLeafNode(lv_stringBounds_0_2, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_2, null);
+	    }
+
+    |		lv_stringBounds_0_3=	'?' 
+    {
+        newLeafNode(lv_stringBounds_0_3, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_3, null);
+	    }
+
+)
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRulePathNameCS
+entryRulePathNameCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPathNameCSRule()); }
+	 iv_rulePathNameCS=rulePathNameCS 
+	 { $current=$iv_rulePathNameCS.current; } 
+	 EOF 
+;
+
+// Rule PathNameCS
+rulePathNameCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathElements_0_0=ruleFirstPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_0_0, 
+        		"FirstPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='::' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedPathElements_2_0=ruleNextPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_2_0, 
+        		"NextPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleFirstPathElementCS
+entryRuleFirstPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFirstPathElementCSRule()); }
+	 iv_ruleFirstPathElementCS=ruleFirstPathElementCS 
+	 { $current=$iv_ruleFirstPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule FirstPathElementCS
+ruleFirstPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFirstPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNextPathElementCS
+entryRuleNextPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNextPathElementCSRule()); }
+	 iv_ruleNextPathElementCS=ruleNextPathElementCS 
+	 { $current=$iv_ruleNextPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule NextPathElementCS
+ruleNextPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNextPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 
+	    }
+		ruleUnreservedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTemplateBindingCS
+entryRuleTemplateBindingCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTemplateBindingCSRule()); }
+	 iv_ruleTemplateBindingCS=ruleTemplateBindingCS 
+	 { $current=$iv_ruleTemplateBindingCS.current; } 
+	 EOF 
+;
+
+// Rule TemplateBindingCS
+ruleTemplateBindingCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedSubstitutions_1_0=ruleTemplateParameterSubstitutionCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSubstitutions",
+        		lv_ownedSubstitutions_1_0, 
+        		"TemplateParameterSubstitutionCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedSubstitutions_3_0=ruleTemplateParameterSubstitutionCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSubstitutions",
+        		lv_ownedSubstitutions_3_0, 
+        		"TemplateParameterSubstitutionCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTemplateParameterSubstitutionCS
+entryRuleTemplateParameterSubstitutionCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSRule()); }
+	 iv_ruleTemplateParameterSubstitutionCS=ruleTemplateParameterSubstitutionCS 
+	 { $current=$iv_ruleTemplateParameterSubstitutionCS.current; } 
+	 EOF 
+;
+
+// Rule TemplateParameterSubstitutionCS
+ruleTemplateParameterSubstitutionCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); 
+	    }
+		lv_ownedActualParameter_0_0=ruleTypeRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateParameterSubstitutionCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedActualParameter",
+        		lv_ownedActualParameter_0_0, 
+        		"TypeRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleTypeParameterCS
+entryRuleTypeParameterCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeParameterCSRule()); }
+	 iv_ruleTypeParameterCS=ruleTypeParameterCS 
+	 { $current=$iv_ruleTypeParameterCS.current; } 
+	 EOF 
+;
+
+// Rule TypeParameterCS
+ruleTypeParameterCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_1='extends' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); 
+	    }
+		lv_ownedExtends_2_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_2_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='&&' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); 
+	    }
+		lv_ownedExtends_4_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_4_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+    |(	otherlv_5='super' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); 
+	    }
+		lv_ownedSuper_6_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSuper",
+        		lv_ownedSuper_6_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeRefCS
+entryRuleTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeRefCSRule()); }
+	 iv_ruleTypeRefCS=ruleTypeRefCS 
+	 { $current=$iv_ruleTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypeRefCS
+ruleTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); 
+    }
+    this_TypedRefCS_0=ruleTypedRefCS
+    { 
+        $current = $this_TypedRefCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); 
+    }
+    this_WildcardTypeRefCS_1=ruleWildcardTypeRefCS
+    { 
+        $current = $this_WildcardTypeRefCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypedRefCS
+entryRuleTypedRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedRefCSRule()); }
+	 iv_ruleTypedRefCS=ruleTypedRefCS 
+	 { $current=$iv_ruleTypedRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypedRefCS
+ruleTypedRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall()); 
+    }
+    this_TypedTypeRefCS_0=ruleTypedTypeRefCS
+    { 
+        $current = $this_TypedTypeRefCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleTypedTypeRefCS
+entryRuleTypedTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedTypeRefCSRule()); }
+	 iv_ruleTypedTypeRefCS=ruleTypedTypeRefCS 
+	 { $current=$iv_ruleTypedTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypedTypeRefCS
+ruleTypedTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathName_0_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_0_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedBinding_1_0=ruleTemplateBindingCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedBinding",
+        		lv_ownedBinding_1_0, 
+        		"TemplateBindingCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleWildcardTypeRefCS
+entryRuleWildcardTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getWildcardTypeRefCSRule()); }
+	 iv_ruleWildcardTypeRefCS=ruleWildcardTypeRefCS 
+	 { $current=$iv_ruleWildcardTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule WildcardTypeRefCS
+ruleWildcardTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0(),
+            $current);
+    }
+)	otherlv_1='?' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1());
+    }
+((	otherlv_2='extends' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); 
+	    }
+		lv_ownedExtends_3_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_3_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(	otherlv_4='super' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedSuper_5_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSuper",
+        		lv_ownedSuper_5_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleID
+entryRuleID returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIDRule()); } 
+	 iv_ruleID=ruleID 
+	 { $current=$iv_ruleID.current.getText(); }  
+	 EOF 
+;
+
+// Rule ID
+ruleID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_SIMPLE_ID_0=RULE_SIMPLE_ID    {
+		$current.merge(this_SIMPLE_ID_0);
+    }
+
+    { 
+    newLeafNode(this_SIMPLE_ID_0, grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); 
+    }
+
+    |    this_ESCAPED_ID_1=RULE_ESCAPED_ID    {
+		$current.merge(this_ESCAPED_ID_1);
+    }
+
+    { 
+    newLeafNode(this_ESCAPED_ID_1, grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleIdentifier
+entryRuleIdentifier returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIdentifierRule()); } 
+	 iv_ruleIdentifier=ruleIdentifier 
+	 { $current=$iv_ruleIdentifier.current.getText(); }  
+	 EOF 
+;
+
+// Rule Identifier
+ruleIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); 
+    }
+    this_ID_0=ruleID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleLOWER
+entryRuleLOWER returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLOWERRule()); } 
+	 iv_ruleLOWER=ruleLOWER 
+	 { $current=$iv_ruleLOWER.current.getText(); }  
+	 EOF 
+;
+
+// Rule LOWER
+ruleLOWER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleNUMBER_LITERAL
+entryRuleNUMBER_LITERAL returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNUMBER_LITERALRule()); } 
+	 iv_ruleNUMBER_LITERAL=ruleNUMBER_LITERAL 
+	 { $current=$iv_ruleNUMBER_LITERAL.current.getText(); }  
+	 EOF 
+;
+
+// Rule NUMBER_LITERAL
+ruleNUMBER_LITERAL returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleStringLiteral
+entryRuleStringLiteral returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStringLiteralRule()); } 
+	 iv_ruleStringLiteral=ruleStringLiteral 
+	 { $current=$iv_ruleStringLiteral.current.getText(); }  
+	 EOF 
+;
+
+// Rule StringLiteral
+ruleStringLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {
+		$current.merge(this_SINGLE_QUOTED_STRING_0);
+    }
+
+    { 
+    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleUPPER
+entryRuleUPPER returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUPPERRule()); } 
+	 iv_ruleUPPER=ruleUPPER 
+	 { $current=$iv_ruleUPPER.current.getText(); }  
+	 EOF 
+;
+
+// Rule UPPER
+ruleUPPER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); 
+    }
+
+    |
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleURI
+entryRuleURI returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getURIRule()); } 
+	 iv_ruleURI=ruleURI 
+	 { $current=$iv_ruleURI.current.getText(); }  
+	 EOF 
+;
+
+// Rule URI
+ruleURI returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {
+		$current.merge(this_SINGLE_QUOTED_STRING_0);
+    }
+
+    { 
+    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');
+
+fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');
+
+RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';
+
+RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';
+
+RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';
+
+RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;
+
+RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;
+
+RULE_INT : ('0'..'9')+;
+
+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/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/internal/InternalEssentialOCL.tokens b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/internal/InternalEssentialOCL.tokens
index 81581c4..b14415e 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/internal/InternalEssentialOCL.tokens
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/parser/antlr/internal/InternalEssentialOCL.tokens
@@ -1,142 +1,142 @@
-'&&'=79

-'('=49

-')'=50

-'*'=18

-'+'=20

-'++'=56

-','=51

-'-'=16

-'->'=32

-'.'=31

-'..'=55

-'/'=19

-':'=52

-'::'=77

-';'=68

-'<'=22

-'<='=24

-'<>'=26

-'='=25

-'>'=21

-'>='=23

-'?'=76

-'?->'=34

-'?.'=33

-'@'=62

-'Bag'=45

-'Boolean'=36

-'Collection'=47

-'Integer'=37

-'Lambda'=57

-'OclAny'=41

-'OclInvalid'=42

-'OclVoid'=43

-'OrderedSet'=48

-'Real'=38

-'Sequence'=46

-'Set'=44

-'String'=39

-'Tuple'=35

-'UnlimitedNatural'=40

-'['=64

-']'=65

-'and'=27

-'else'=71

-'elseif'=73

-'endif'=72

-'extends'=78

-'false'=59

-'if'=69

-'implies'=30

-'in'=66

-'invalid'=60

-'let'=74

-'not'=17

-'null'=61

-'or'=28

-'pre'=63

-'self'=75

-'super'=80

-'then'=70

-'true'=58

-'xor'=29

-'{'=53

-'|'=67

-'}'=54

-RULE_ANY_OTHER=15

-RULE_DOUBLE_QUOTED_STRING=10

-RULE_ESCAPED_CHARACTER=8

-RULE_ESCAPED_ID=5

-RULE_INT=6

-RULE_LETTER_CHARACTER=9

-RULE_ML_COMMENT=12

-RULE_ML_SINGLE_QUOTED_STRING=11

-RULE_SIMPLE_ID=4

-RULE_SINGLE_QUOTED_STRING=7

-RULE_SL_COMMENT=13

-RULE_WS=14

-T__16=16

-T__17=17

-T__18=18

-T__19=19

-T__20=20

-T__21=21

-T__22=22

-T__23=23

-T__24=24

-T__25=25

-T__26=26

-T__27=27

-T__28=28

-T__29=29

-T__30=30

-T__31=31

-T__32=32

-T__33=33

-T__34=34

-T__35=35

-T__36=36

-T__37=37

-T__38=38

-T__39=39

-T__40=40

-T__41=41

-T__42=42

-T__43=43

-T__44=44

-T__45=45

-T__46=46

-T__47=47

-T__48=48

-T__49=49

-T__50=50

-T__51=51

-T__52=52

-T__53=53

-T__54=54

-T__55=55

-T__56=56

-T__57=57

-T__58=58

-T__59=59

-T__60=60

-T__61=61

-T__62=62

-T__63=63

-T__64=64

-T__65=65

-T__66=66

-T__67=67

-T__68=68

-T__69=69

-T__70=70

-T__71=71

-T__72=72

-T__73=73

-T__74=74

-T__75=75

-T__76=76

-T__77=77

-T__78=78

-T__79=79

-T__80=80

+'&&'=79
+'('=49
+')'=50
+'*'=18
+'+'=20
+'++'=56
+','=51
+'-'=16
+'->'=32
+'.'=31
+'..'=55
+'/'=19
+':'=52
+'::'=77
+';'=68
+'<'=22
+'<='=24
+'<>'=26
+'='=25
+'>'=21
+'>='=23
+'?'=76
+'?->'=34
+'?.'=33
+'@'=62
+'Bag'=45
+'Boolean'=36
+'Collection'=47
+'Integer'=37
+'Lambda'=57
+'OclAny'=41
+'OclInvalid'=42
+'OclVoid'=43
+'OrderedSet'=48
+'Real'=38
+'Sequence'=46
+'Set'=44
+'String'=39
+'Tuple'=35
+'UnlimitedNatural'=40
+'['=64
+']'=65
+'and'=27
+'else'=71
+'elseif'=73
+'endif'=72
+'extends'=78
+'false'=59
+'if'=69
+'implies'=30
+'in'=66
+'invalid'=60
+'let'=74
+'not'=17
+'null'=61
+'or'=28
+'pre'=63
+'self'=75
+'super'=80
+'then'=70
+'true'=58
+'xor'=29
+'{'=53
+'|'=67
+'}'=54
+RULE_ANY_OTHER=15
+RULE_DOUBLE_QUOTED_STRING=10
+RULE_ESCAPED_CHARACTER=8
+RULE_ESCAPED_ID=5
+RULE_INT=6
+RULE_LETTER_CHARACTER=9
+RULE_ML_COMMENT=12
+RULE_ML_SINGLE_QUOTED_STRING=11
+RULE_SIMPLE_ID=4
+RULE_SINGLE_QUOTED_STRING=7
+RULE_SL_COMMENT=13
+RULE_WS=14
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/serializer/AbstractEssentialOCLSemanticSequencer.java b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/serializer/AbstractEssentialOCLSemanticSequencer.java
index ac4dff5..cfba8fe 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/serializer/AbstractEssentialOCLSemanticSequencer.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/serializer/AbstractEssentialOCLSemanticSequencer.java
@@ -1,3 +1,6 @@
+/*
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.essentialocl.serializer;
 
 import com.google.inject.Inject;
@@ -65,22 +68,15 @@
 	@Inject
 	private EssentialOCLGrammarAccess grammarAccess;
 	
+	@Override
 	public void createSequence(EObject context, EObject semanticObject) {
 		if(semanticObject.eClass().getEPackage() == BaseCSPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
 			case BaseCSPackage.MULTIPLICITY_BOUNDS_CS:
-				if(context == grammarAccess.getMultiplicityBoundsCSRule() ||
-				   context == grammarAccess.getMultiplicityCSRule()) {
-					sequence_MultiplicityBoundsCS(context, (MultiplicityBoundsCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_MultiplicityBoundsCS(context, (MultiplicityBoundsCS) semanticObject); 
+				return; 
 			case BaseCSPackage.MULTIPLICITY_STRING_CS:
-				if(context == grammarAccess.getMultiplicityCSRule() ||
-				   context == grammarAccess.getMultiplicityStringCSRule()) {
-					sequence_MultiplicityStringCS(context, (MultiplicityStringCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_MultiplicityStringCS(context, (MultiplicityStringCS) semanticObject); 
+				return; 
 			case BaseCSPackage.PATH_ELEMENT_CS:
 				if(context == grammarAccess.getFirstPathElementCSRule()) {
 					sequence_FirstPathElementCS(context, (PathElementCS) semanticObject); 
@@ -96,11 +92,8 @@
 				}
 				else break;
 			case BaseCSPackage.PATH_ELEMENT_WITH_URICS:
-				if(context == grammarAccess.getURIFirstPathElementCSRule()) {
-					sequence_URIFirstPathElementCS(context, (PathElementWithURICS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_URIFirstPathElementCS(context, (PathElementWithURICS) semanticObject); 
+				return; 
 			case BaseCSPackage.PATH_NAME_CS:
 				if(context == grammarAccess.getPathNameCSRule()) {
 					sequence_PathNameCS(context, (PathNameCS) semanticObject); 
@@ -127,29 +120,17 @@
 				}
 				else break;
 			case BaseCSPackage.TEMPLATE_BINDING_CS:
-				if(context == grammarAccess.getTemplateBindingCSRule()) {
-					sequence_TemplateBindingCS(context, (TemplateBindingCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateBindingCS(context, (TemplateBindingCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TEMPLATE_PARAMETER_SUBSTITUTION_CS:
-				if(context == grammarAccess.getTemplateParameterSubstitutionCSRule()) {
-					sequence_TemplateParameterSubstitutionCS(context, (TemplateParameterSubstitutionCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateParameterSubstitutionCS(context, (TemplateParameterSubstitutionCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TEMPLATE_SIGNATURE_CS:
-				if(context == grammarAccess.getTemplateSignatureCSRule()) {
-					sequence_TemplateSignatureCS(context, (TemplateSignatureCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateSignatureCS(context, (TemplateSignatureCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TUPLE_PART_CS:
-				if(context == grammarAccess.getTuplePartCSRule()) {
-					sequence_TuplePartCS(context, (TuplePartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TuplePartCS(context, (TuplePartCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TUPLE_TYPE_CS:
 				if(context == grammarAccess.getTupleTypeCSRule() ||
 				   context == grammarAccess.getTypeLiteralCSRule()) {
@@ -166,57 +147,25 @@
 				}
 				else break;
 			case BaseCSPackage.TYPE_PARAMETER_CS:
-				if(context == grammarAccess.getTypeParameterCSRule()) {
-					sequence_TypeParameterCS(context, (TypeParameterCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TypeParameterCS(context, (TypeParameterCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TYPED_TYPE_REF_CS:
-				if(context == grammarAccess.getTypeRefCSRule() ||
-				   context == grammarAccess.getTypedRefCSRule() ||
-				   context == grammarAccess.getTypedTypeRefCSRule()) {
-					sequence_TypedTypeRefCS(context, (TypedTypeRefCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TypedTypeRefCS(context, (TypedTypeRefCS) semanticObject); 
+				return; 
 			case BaseCSPackage.WILDCARD_TYPE_REF_CS:
-				if(context == grammarAccess.getTypeRefCSRule() ||
-				   context == grammarAccess.getWildcardTypeRefCSRule()) {
-					sequence_WildcardTypeRefCS(context, (WildcardTypeRefCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_WildcardTypeRefCS(context, (WildcardTypeRefCS) semanticObject); 
+				return; 
 			}
 		else if(semanticObject.eClass().getEPackage() == EssentialOCLCSPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
 			case EssentialOCLCSPackage.BOOLEAN_LITERAL_EXP_CS:
-				if(context == grammarAccess.getBooleanLiteralExpCSRule() ||
-				   context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_BooleanLiteralExpCS(context, (BooleanLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_BooleanLiteralExpCS(context, (BooleanLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.COLLECTION_LITERAL_EXP_CS:
-				if(context == grammarAccess.getCollectionLiteralExpCSRule() ||
-				   context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_CollectionLiteralExpCS(context, (CollectionLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CollectionLiteralExpCS(context, (CollectionLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.COLLECTION_LITERAL_PART_CS:
-				if(context == grammarAccess.getCollectionLiteralPartCSRule()) {
-					sequence_CollectionLiteralPartCS(context, (CollectionLiteralPartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CollectionLiteralPartCS(context, (CollectionLiteralPartCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.COLLECTION_PATTERN_CS:
 				if(context == grammarAccess.getCollectionPatternCSRule()) {
 					sequence_CollectionPatternCS(context, (CollectionPatternCS) semanticObject); 
@@ -243,96 +192,38 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.CONSTRUCTOR_PART_CS:
-				if(context == grammarAccess.getConstructorPartCSRule()) {
-					sequence_ConstructorPartCS(context, (ConstructorPartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ConstructorPartCS(context, (ConstructorPartCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.CONTEXT_CS:
-				if(context == grammarAccess.getModelRule()) {
-					sequence_Model(context, (ContextCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_Model(context, (ContextCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.CURLY_BRACKETED_CLAUSE_CS:
-				if(context == grammarAccess.getCurlyBracketedClauseCSRule()) {
-					sequence_CurlyBracketedClauseCS(context, (CurlyBracketedClauseCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CurlyBracketedClauseCS(context, (CurlyBracketedClauseCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.IF_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getIfExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_IfExpCS(context, (IfExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_IfExpCS(context, (IfExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.IF_THEN_EXP_CS:
-				if(context == grammarAccess.getElseIfThenExpCSRule()) {
-					sequence_ElseIfThenExpCS(context, (IfThenExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ElseIfThenExpCS(context, (IfThenExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.INFIX_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule()) {
-					sequence_ExpCS(context, (InfixExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ExpCS(context, (InfixExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.INVALID_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getInvalidLiteralExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_InvalidLiteralExpCS(context, (InvalidLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_InvalidLiteralExpCS(context, (InvalidLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.LAMBDA_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getLambdaLiteralExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_LambdaLiteralExpCS(context, (LambdaLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LambdaLiteralExpCS(context, (LambdaLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.LET_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getLetExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedLetExpCSRule()) {
-					sequence_LetExpCS(context, (LetExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LetExpCS(context, (LetExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.LET_VARIABLE_CS:
-				if(context == grammarAccess.getLetVariableCSRule()) {
-					sequence_LetVariableCS(context, (LetVariableCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LetVariableCS(context, (LetVariableCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NAME_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNameExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_NameExpCS(context, (NameExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NameExpCS(context, (NameExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NAVIGATING_ARG_CS:
 				if(context == grammarAccess.getNavigatingArgCSRule()) {
 					sequence_NavigatingArgCS(context, (NavigatingArgCS) semanticObject); 
@@ -352,46 +243,17 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.NESTED_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getNestedExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_NestedExpCS(context, (NestedExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NestedExpCS(context, (NestedExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NULL_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getNullLiteralExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_NullLiteralExpCS(context, (NullLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NullLiteralExpCS(context, (NullLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NUMBER_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getNumberLiteralExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_NumberLiteralExpCS(context, (NumberLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NumberLiteralExpCS(context, (NumberLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.PATTERN_EXP_CS:
-				if(context == grammarAccess.getPatternExpCSRule()) {
-					sequence_PatternExpCS(context, (PatternExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PatternExpCS(context, (PatternExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.PREFIX_EXP_CS:
 				if(context == grammarAccess.getPrefixedLetExpCSRule()) {
 					sequence_PrefixedLetExpCS(context, (PrefixExpCS) semanticObject); 
@@ -409,68 +271,26 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.ROUND_BRACKETED_CLAUSE_CS:
-				if(context == grammarAccess.getRoundBracketedClauseCSRule()) {
-					sequence_RoundBracketedClauseCS(context, (RoundBracketedClauseCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_RoundBracketedClauseCS(context, (RoundBracketedClauseCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.SELF_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getSelfExpCSRule()) {
-					sequence_SelfExpCS(context, (SelfExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_SelfExpCS(context, (SelfExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.SQUARE_BRACKETED_CLAUSE_CS:
-				if(context == grammarAccess.getSquareBracketedClauseCSRule()) {
-					sequence_SquareBracketedClauseCS(context, (SquareBracketedClauseCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_SquareBracketedClauseCS(context, (SquareBracketedClauseCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.STRING_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule() ||
-				   context == grammarAccess.getStringLiteralExpCSRule()) {
-					sequence_StringLiteralExpCS(context, (StringLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_StringLiteralExpCS(context, (StringLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TUPLE_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getTupleLiteralExpCSRule()) {
-					sequence_TupleLiteralExpCS(context, (TupleLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TupleLiteralExpCS(context, (TupleLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TUPLE_LITERAL_PART_CS:
-				if(context == grammarAccess.getTupleLiteralPartCSRule()) {
-					sequence_TupleLiteralPartCS(context, (TupleLiteralPartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TupleLiteralPartCS(context, (TupleLiteralPartCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TYPE_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getTypeLiteralExpCSRule()) {
-					sequence_TypeLiteralExpCS(context, (TypeLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TypeLiteralExpCS(context, (TypeLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TYPE_NAME_EXP_CS:
 				if(context == grammarAccess.getTypeExpCSRule()) {
 					sequence_TypeExpCS_TypeNameExpCS(context, (TypeNameExpCS) semanticObject); 
@@ -482,17 +302,8 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.UNLIMITED_NATURAL_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule() ||
-				   context == grammarAccess.getUnlimitedNaturalLiteralExpCSRule()) {
-					sequence_UnlimitedNaturalLiteralExpCS(context, (UnlimitedNaturalLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_UnlimitedNaturalLiteralExpCS(context, (UnlimitedNaturalLiteralExpCS) semanticObject); 
+				return; 
 			}
 		if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
 	}
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/serializer/AbstractEssentialOCLSyntacticSequencer.java b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/serializer/AbstractEssentialOCLSyntacticSequencer.java
index fa48733..e0bd211 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/serializer/AbstractEssentialOCLSyntacticSequencer.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/serializer/AbstractEssentialOCLSyntacticSequencer.java
@@ -1,3 +1,6 @@
+/*
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.essentialocl.serializer;
 
 import com.google.inject.Inject;
@@ -45,8 +48,12 @@
 	}
 
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('(' ')')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name='Tuple' (ambiguity) (rule end)
+	 *     name='Tuple' (ambiguity) ownedMultiplicity=MultiplicityCS
 	 */
 	protected void emit_TupleTypeCS___LeftParenthesisKeyword_1_0_RightParenthesisKeyword_1_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/services/EssentialOCLGrammarAccess.java b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/services/EssentialOCLGrammarAccess.java
index c65c557..b548909 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/services/EssentialOCLGrammarAccess.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/services/EssentialOCLGrammarAccess.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.essentialocl.services;
 
 import com.google.inject.Singleton;
@@ -26,8 +26,7 @@
 		////generate essentialOCLCST "http://www.eclipse.org/ocl/3.0.0/EssentialOCLCST"
 		// Model returns ContextCS:
 		//	ownedExpression=ExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedExpression=ExpCS
 		public Assignment getOwnedExpressionAssignment() { return cOwnedExpressionAssignment; }
@@ -54,8 +53,7 @@
 		/// ** <<<This is a join point for derived grammars - replace with a more disciplined grammar extensibility>>> * /
 		//EssentialOCLReservedKeyword:
 		//	"and" | "else" | "endif" | "if" | "implies" | "in" | "let" | "not" | "or" | "then" | "xor";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"and" | "else" | "endif" | "if" | "implies" | "in" | "let" | "not" | "or" | "then" | "xor"
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -103,8 +101,7 @@
 		/// ** <<<This is a join point for derived grammars - replace with a more disciplined grammar extensibility>>> * /
 		//EssentialOCLUnaryOperatorName:
 		//	"-" | "not";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"-" | "not"
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -137,8 +134,7 @@
 		/// ** <<<This is a join point for derived grammars - replace with a more disciplined grammar extensibility>>> * /
 		//EssentialOCLInfixOperatorName:
 		//	"*" | "/" | "+" | "-" | ">" | "<" | ">=" | "<=" | "=" | "<>" | "and" | "or" | "xor" | "implies";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"*" | "/" | "+" | "-" | ">" | "<" | ">=" | "<=" | "=" | "<>" | "and" | "or" | "xor" | "implies"
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -197,8 +193,7 @@
 		/// ** <<<This is a join point for derived grammars - replace with a more disciplined grammar extensibility>>> * /
 		//EssentialOCLNavigationOperatorName:
 		//	"." | "->" | "?." | "?->";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"." | "->" | "?." | "?->"
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -224,8 +219,7 @@
 		
 		//BinaryOperatorName:
 		//	InfixOperatorName | NavigationOperatorName;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//InfixOperatorName | NavigationOperatorName
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -244,8 +238,7 @@
 		//// Intended to be overrideable
 		// InfixOperatorName:
 		//	EssentialOCLInfixOperatorName;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//EssentialOCLInfixOperatorName
 		public RuleCall getEssentialOCLInfixOperatorNameParserRuleCall() { return cEssentialOCLInfixOperatorNameParserRuleCall; }
@@ -258,8 +251,7 @@
 		//// Intended to be overrideable
 		// NavigationOperatorName:
 		//	EssentialOCLNavigationOperatorName;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//EssentialOCLNavigationOperatorName
 		public RuleCall getEssentialOCLNavigationOperatorNameParserRuleCall() { return cEssentialOCLNavigationOperatorNameParserRuleCall; }
@@ -272,8 +264,7 @@
 		//// Intended to be overrideable
 		// UnaryOperatorName:
 		//	EssentialOCLUnaryOperatorName;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//EssentialOCLUnaryOperatorName
 		public RuleCall getEssentialOCLUnaryOperatorNameParserRuleCall() { return cEssentialOCLUnaryOperatorNameParserRuleCall; }
@@ -291,8 +282,7 @@
 		/// ** <<<This is a join point for derived grammars - replace with a more disciplined grammar extensibility>>> * /
 		//EssentialOCLUnrestrictedName returns ecore::EString:
 		//	Identifier;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//Identifier
 		public RuleCall getIdentifierParserRuleCall() { return cIdentifierParserRuleCall; }
@@ -305,8 +295,7 @@
 		//// Intended to be overridden
 		// UnrestrictedName returns ecore::EString:
 		//	EssentialOCLUnrestrictedName;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//EssentialOCLUnrestrictedName
 		public RuleCall getEssentialOCLUnrestrictedNameParserRuleCall() { return cEssentialOCLUnrestrictedNameParserRuleCall; }
@@ -323,8 +312,7 @@
 		/// ** <<<This is a join point for derived grammars - replace with a more disciplined grammar extensibility>>> * /
 		//EssentialOCLUnreservedName returns ecore::EString:
 		//	UnrestrictedName | CollectionTypeIdentifier | PrimitiveTypeIdentifier | "Tuple";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//UnrestrictedName | CollectionTypeIdentifier | PrimitiveTypeIdentifier | "Tuple"
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -349,8 +337,7 @@
 		//// Intended to be overridden
 		// UnreservedName returns ecore::EString:
 		//	EssentialOCLUnreservedName;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//EssentialOCLUnreservedName
 		public RuleCall getEssentialOCLUnreservedNameParserRuleCall() { return cEssentialOCLUnreservedNameParserRuleCall; }
@@ -368,8 +355,7 @@
 		
 		//URIPathNameCS returns base::PathNameCS:
 		//	ownedPathElements+=URIFirstPathElementCS ("::" ownedPathElements+=NextPathElementCS)*;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedPathElements+=URIFirstPathElementCS ("::" ownedPathElements+=NextPathElementCS)*
 		public Group getGroup() { return cGroup; }
@@ -408,8 +394,7 @@
 		//URIFirstPathElementCS returns base::PathElementCS:
 		//	referredElement=[pivot::NamedElement|UnrestrictedName] | {base::PathElementWithURICS}
 		//	referredElement=[pivot::Namespace|URI];
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//referredElement=[pivot::NamedElement|UnrestrictedName] | {base::PathElementWithURICS}
 		//referredElement=[pivot::Namespace|URI]
@@ -458,8 +443,7 @@
 		////---------------------------------------------------------------------
 		// PrimitiveTypeIdentifier:
 		//	"Boolean" | "Integer" | "Real" | "String" | "UnlimitedNatural" | "OclAny" | "OclInvalid" | "OclVoid";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"Boolean" | "Integer" | "Real" | "String" | "UnlimitedNatural" | "OclAny" | "OclInvalid" | "OclVoid"
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -496,8 +480,7 @@
 		
 		//PrimitiveTypeCS returns base::PrimitiveTypeRefCS:
 		//	name=PrimitiveTypeIdentifier;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name=PrimitiveTypeIdentifier
 		public Assignment getNameAssignment() { return cNameAssignment; }
@@ -517,8 +500,7 @@
 		
 		//CollectionTypeIdentifier returns ecore::EString:
 		//	"Set" | "Bag" | "Sequence" | "Collection" | "OrderedSet";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"Set" | "Bag" | "Sequence" | "Collection" | "OrderedSet"
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -552,8 +534,7 @@
 		
 		//CollectionTypeCS:
 		//	name=CollectionTypeIdentifier ("(" ownedType=TypeExpCS ")")?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name=CollectionTypeIdentifier ("(" ownedType=TypeExpCS ")")?
 		public Group getGroup() { return cGroup; }
@@ -598,8 +579,7 @@
 		
 		//TupleTypeCS returns base::TupleTypeCS:
 		//	name="Tuple" ("(" (ownedParts+=TuplePartCS ("," ownedParts+=TuplePartCS)*)? ")")?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name="Tuple" ("(" (ownedParts+=TuplePartCS ("," ownedParts+=TuplePartCS)*)? ")")?
 		public Group getGroup() { return cGroup; }
@@ -652,8 +632,7 @@
 		
 		//TuplePartCS returns base::TuplePartCS:
 		//	name=UnrestrictedName ":" ownedType=TypeExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name=UnrestrictedName ":" ownedType=TypeExpCS
 		public Group getGroup() { return cGroup; }
@@ -695,8 +674,7 @@
 		////---------------------------------------------------------------------
 		// CollectionLiteralExpCS:
 		//	ownedType=CollectionTypeCS "{" (ownedParts+=CollectionLiteralPartCS ("," ownedParts+=CollectionLiteralPartCS)*)? "}";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedType=CollectionTypeCS "{" (ownedParts+=CollectionLiteralPartCS ("," ownedParts+=CollectionLiteralPartCS)*)? "}"
 		public Group getGroup() { return cGroup; }
@@ -750,8 +728,7 @@
 		
 		//CollectionLiteralPartCS:
 		//	ownedExpression=ExpCS (".." ownedLastExpression=ExpCS)? | ownedExpression=PatternExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedExpression=ExpCS (".." ownedLastExpression=ExpCS)? | ownedExpression=PatternExpCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -806,8 +783,7 @@
 		//CollectionPatternCS:
 		//	ownedType=CollectionTypeCS "{" (ownedParts+=PatternExpCS ("," ownedParts+=PatternExpCS)* ("++"
 		//	restVariableName=Identifier))? "}";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedType=CollectionTypeCS "{" (ownedParts+=PatternExpCS ("," ownedParts+=PatternExpCS)* ("++"
 		//restVariableName=Identifier))? "}"
@@ -874,8 +850,7 @@
 		//// PatternPartCS
 		// ConstructorPartCS:
 		//	referredProperty=[pivot::Property|UnrestrictedName] "=" ownedInitExpression=(ExpCS | PatternExpCS);
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//referredProperty=[pivot::Property|UnrestrictedName] "=" ownedInitExpression=(ExpCS | PatternExpCS)
 		public Group getGroup() { return cGroup; }
@@ -916,8 +891,7 @@
 		
 		//PatternExpCS:
 		//	patternVariableName=UnrestrictedName? ":" ownedPatternType=TypeExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//patternVariableName=UnrestrictedName? ":" ownedPatternType=TypeExpCS
 		public Group getGroup() { return cGroup; }
@@ -949,8 +923,7 @@
 		
 		//LambdaLiteralExpCS:
 		//	"Lambda" "{" ownedExpressionCS=ExpCS "}";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"Lambda" "{" ownedExpressionCS=ExpCS "}"
 		public Group getGroup() { return cGroup; }
@@ -984,8 +957,7 @@
 		//PrimitiveLiteralExpCS:
 		//	NumberLiteralExpCS | StringLiteralExpCS | BooleanLiteralExpCS | UnlimitedNaturalLiteralExpCS | InvalidLiteralExpCS |
 		//	NullLiteralExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//NumberLiteralExpCS | StringLiteralExpCS | BooleanLiteralExpCS | UnlimitedNaturalLiteralExpCS | InvalidLiteralExpCS |
 		//NullLiteralExpCS
@@ -1025,8 +997,7 @@
 		
 		//TupleLiteralExpCS:
 		//	"Tuple" "{" ownedParts+=TupleLiteralPartCS ("," ownedParts+=TupleLiteralPartCS)* "}";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"Tuple" "{" ownedParts+=TupleLiteralPartCS ("," ownedParts+=TupleLiteralPartCS)* "}"
 		public Group getGroup() { return cGroup; }
@@ -1074,8 +1045,7 @@
 		
 		//TupleLiteralPartCS:
 		//	name=UnrestrictedName (":" ownedType=TypeExpCS)? "=" ownedInitExpression=ExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name=UnrestrictedName (":" ownedType=TypeExpCS)? "=" ownedInitExpression=ExpCS
 		public Group getGroup() { return cGroup; }
@@ -1115,8 +1085,7 @@
 		
 		//NumberLiteralExpCS:
 		//	symbol=NUMBER_LITERAL;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//symbol=NUMBER_LITERAL
 		public Assignment getSymbolAssignment() { return cSymbolAssignment; }
@@ -1132,8 +1101,7 @@
 		
 		//StringLiteralExpCS:
 		//	segments+=StringLiteral+;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//segments+=StringLiteral+
 		public Assignment getSegmentsAssignment() { return cSegmentsAssignment; }
@@ -1152,8 +1120,7 @@
 		
 		//BooleanLiteralExpCS:
 		//	symbol="true" | symbol="false";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//symbol="true" | symbol="false"
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -1179,8 +1146,7 @@
 		
 		//UnlimitedNaturalLiteralExpCS:
 		//	{UnlimitedNaturalLiteralExpCS} "*";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{UnlimitedNaturalLiteralExpCS} "*"
 		public Group getGroup() { return cGroup; }
@@ -1200,8 +1166,7 @@
 		
 		//InvalidLiteralExpCS:
 		//	{InvalidLiteralExpCS} "invalid";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{InvalidLiteralExpCS} "invalid"
 		public Group getGroup() { return cGroup; }
@@ -1221,8 +1186,7 @@
 		
 		//NullLiteralExpCS:
 		//	{NullLiteralExpCS} "null";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{NullLiteralExpCS} "null"
 		public Group getGroup() { return cGroup; }
@@ -1243,8 +1207,7 @@
 		
 		//TypeLiteralCS returns base::TypedRefCS:
 		//	PrimitiveTypeCS | CollectionTypeCS | TupleTypeCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//PrimitiveTypeCS | CollectionTypeCS | TupleTypeCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -1268,8 +1231,7 @@
 		
 		//TypeLiteralWithMultiplicityCS returns base::TypedRefCS:
 		//	TypeLiteralCS ownedMultiplicity=MultiplicityCS?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//TypeLiteralCS ownedMultiplicity=MultiplicityCS?
 		public Group getGroup() { return cGroup; }
@@ -1291,8 +1253,7 @@
 		
 		//TypeLiteralExpCS:
 		//	ownedType=TypeLiteralWithMultiplicityCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedType=TypeLiteralWithMultiplicityCS
 		public Assignment getOwnedTypeAssignment() { return cOwnedTypeAssignment; }
@@ -1317,8 +1278,7 @@
 		
 		//TypeNameExpCS:
 		//	ownedPathName=PathNameCS (ownedCurlyBracketedClause=CurlyBracketedClauseCS ("{" ownedPatternGuard=ExpCS "}")?)?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedPathName=PathNameCS (ownedCurlyBracketedClause=CurlyBracketedClauseCS ("{" ownedPatternGuard=ExpCS "}")?)?
 		public Group getGroup() { return cGroup; }
@@ -1366,8 +1326,7 @@
 		
 		//TypeExpCS returns base::TypedRefCS:
 		//	(TypeNameExpCS | TypeLiteralCS | CollectionPatternCS) ownedMultiplicity=MultiplicityCS?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//(TypeNameExpCS | TypeLiteralCS | CollectionPatternCS) ownedMultiplicity=MultiplicityCS?
 		public Group getGroup() { return cGroup; }
@@ -1427,8 +1386,7 @@
 		//
 		//	// the above takes exponential or worse time for backtracking, below is fast
 		// | PrefixedLetExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//PrefixedPrimaryExpCS ({InfixExpCS.ownedLeft=current} name=BinaryOperatorName ownedRight=ExpCS)?
 		////	({InfixExpCS} ownedSource=PrefixedExpCS name=BinaryOperatorName ownedArgument=ExpCS)
@@ -1480,8 +1438,7 @@
 		/// * A prefixed let expression elaborates a let expression with zero or more unary prefix operators. * / PrefixedLetExpCS
 		//returns ExpCS:
 		//	{PrefixExpCS} name=UnaryOperatorName ownedRight=PrefixedLetExpCS | LetExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{PrefixExpCS} name=UnaryOperatorName ownedRight=PrefixedLetExpCS | LetExpCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -1522,8 +1479,7 @@
 		/// * A prefixed primary expression elaborates a primary expression with zero or more unary prefix operators. * /
 		//PrefixedPrimaryExpCS returns ExpCS:
 		//	{PrefixExpCS} name=UnaryOperatorName ownedRight=PrefixedPrimaryExpCS | PrimaryExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{PrefixExpCS} name=UnaryOperatorName ownedRight=PrefixedPrimaryExpCS | PrimaryExpCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -1567,8 +1523,7 @@
 		//PrimaryExpCS returns ExpCS:
 		//	NestedExpCS | IfExpCS | SelfExpCS | PrimitiveLiteralExpCS | TupleLiteralExpCS | CollectionLiteralExpCS |
 		//	LambdaLiteralExpCS | TypeLiteralExpCS | NameExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//NestedExpCS | IfExpCS | SelfExpCS | PrimitiveLiteralExpCS | TupleLiteralExpCS | CollectionLiteralExpCS |
 		//LambdaLiteralExpCS | TypeLiteralExpCS | NameExpCS
@@ -1624,8 +1579,7 @@
 		//	ownedPathName=PathNameCS ownedSquareBracketedClauses+=SquareBracketedClauseCS*
 		//	ownedRoundBracketedClause=RoundBracketedClauseCS? ownedCurlyBracketedClause=CurlyBracketedClauseCS? (isPre?="@"
 		//	"pre")?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedPathName=PathNameCS ownedSquareBracketedClauses+=SquareBracketedClauseCS*
 		//ownedRoundBracketedClause=RoundBracketedClauseCS? ownedCurlyBracketedClause=CurlyBracketedClauseCS? (isPre?="@"
@@ -1690,8 +1644,7 @@
 		//CurlyBracketedClauseCS:
 		//	{CurlyBracketedClauseCS} "{" ((ownedParts+=ConstructorPartCS ("," ownedParts+=ConstructorPartCS)*)? |
 		//	value=StringLiteral) "}";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{CurlyBracketedClauseCS} "{" ((ownedParts+=ConstructorPartCS ("," ownedParts+=ConstructorPartCS)*)? |
 		//value=StringLiteral) "}"
@@ -1764,8 +1717,7 @@
 		//	{RoundBracketedClauseCS} "(" (ownedArguments+=NavigatingArgCS ownedArguments+=NavigatingCommaArgCS*
 		//	(ownedArguments+=NavigatingSemiArgCS ownedArguments+=NavigatingCommaArgCS*)? (ownedArguments+=NavigatingBarArgCS
 		//	ownedArguments+=NavigatingCommaArgCS*)*)? ")";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{RoundBracketedClauseCS} "(" (ownedArguments+=NavigatingArgCS ownedArguments+=NavigatingCommaArgCS*
 		//(ownedArguments+=NavigatingSemiArgCS ownedArguments+=NavigatingCommaArgCS*)? (ownedArguments+=NavigatingBarArgCS
@@ -1842,8 +1794,7 @@
 		
 		/// * A square bracket clause is a generalized rule for association class qualifiers and roles.* / SquareBracketedClauseCS:
 		//	"[" ownedTerms+=ExpCS ("," ownedTerms+=ExpCS)* "]";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"[" ownedTerms+=ExpCS ("," ownedTerms+=ExpCS)* "]"
 		public Group getGroup() { return cGroup; }
@@ -1903,8 +1854,7 @@
 		// NavigatingArgCS:
 		//	ownedNameExpression=NavigatingArgExpCS (":" ownedType=TypeExpCS ("=" ownedInitExpression=ExpCS)? | "in"
 		//	ownedInitExpression=ExpCS)? | ":" ownedType=TypeExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedNameExpression=NavigatingArgExpCS (":" ownedType=TypeExpCS ("=" ownedInitExpression=ExpCS)? | "in"
 		//ownedInitExpression=ExpCS)? | ":" ownedType=TypeExpCS
@@ -1992,8 +1942,7 @@
 		//// Type-less init is an illegal infix expression
 		// NavigatingBarArgCS returns NavigatingArgCS:
 		//	prefix="|" ownedNameExpression=NavigatingArgExpCS (":" ownedType=TypeExpCS ("=" ownedInitExpression=ExpCS)?)?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//prefix="|" ownedNameExpression=NavigatingArgExpCS (":" ownedType=TypeExpCS ("=" ownedInitExpression=ExpCS)?)?
 		public Group getGroup() { return cGroup; }
@@ -2062,8 +2011,7 @@
 		// NavigatingCommaArgCS returns NavigatingArgCS:
 		//	prefix="," ownedNameExpression=NavigatingArgExpCS (":" ownedType=TypeExpCS ("=" ownedInitExpression=ExpCS)? | "in"
 		//	ownedInitExpression=ExpCS)?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//prefix="," ownedNameExpression=NavigatingArgExpCS (":" ownedType=TypeExpCS ("=" ownedInitExpression=ExpCS)? | "in"
 		//ownedInitExpression=ExpCS)?
@@ -2141,8 +2089,7 @@
 		//// Type-less init is an illegal infix expression
 		// NavigatingSemiArgCS returns NavigatingArgCS:
 		//	prefix=";" ownedNameExpression=NavigatingArgExpCS (":" ownedType=TypeExpCS ("=" ownedInitExpression=ExpCS)?)?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//prefix=";" ownedNameExpression=NavigatingArgExpCS (":" ownedType=TypeExpCS ("=" ownedInitExpression=ExpCS)?)?
 		public Group getGroup() { return cGroup; }
@@ -2192,8 +2139,7 @@
 		// //	'?'	-- defined by Complete OCL
 		// NavigatingArgExpCS returns ExpCS:
 		//	ExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ExpCS
 		public RuleCall getExpCSParserRuleCall() { return cExpCSParserRuleCall; }
@@ -2221,8 +2167,7 @@
 		//	"if" ownedCondition=(ExpCS | PatternExpCS) "then" ownedThenExpression=ExpCS //	ifThenExpressions+=IfThenExpCS
 		//
 		//	ownedIfThenExpressions+=ElseIfThenExpCS* "else" ownedElseExpression=ExpCS "endif";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"if" ownedCondition=(ExpCS | PatternExpCS) "then" ownedThenExpression=ExpCS //	ifThenExpressions+=IfThenExpCS
 		//
@@ -2289,8 +2234,7 @@
 		// ElseIfThenExpCS
 		//returns IfThenExpCS:
 		//	"elseif" ownedCondition=ExpCS "then" ownedThenExpression=ExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"elseif" ownedCondition=ExpCS "then" ownedThenExpression=ExpCS
 		public Group getGroup() { return cGroup; }
@@ -2330,8 +2274,7 @@
 		
 		//LetExpCS:
 		//	"let" ownedVariables+=LetVariableCS ("," ownedVariables+=LetVariableCS)* "in" ownedInExpression=ExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"let" ownedVariables+=LetVariableCS ("," ownedVariables+=LetVariableCS)* "in" ownedInExpression=ExpCS
 		public Group getGroup() { return cGroup; }
@@ -2385,8 +2328,7 @@
 		//LetVariableCS:
 		//	name=UnrestrictedName ownedRoundBracketedClause=RoundBracketedClauseCS? (":" ownedType=TypeExpCS)? "="
 		//	ownedInitExpression=ExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name=UnrestrictedName ownedRoundBracketedClause=RoundBracketedClauseCS? (":" ownedType=TypeExpCS)? "="
 		//ownedInitExpression=ExpCS
@@ -2436,8 +2378,7 @@
 		
 		//NestedExpCS:
 		//	"(" ownedExpression=ExpCS ")";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"(" ownedExpression=ExpCS ")"
 		public Group getGroup() { return cGroup; }
@@ -2463,8 +2404,7 @@
 		
 		//SelfExpCS:
 		//	{SelfExpCS} "self";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{SelfExpCS} "self"
 		public Group getGroup() { return cGroup; }
@@ -2625,7 +2565,6 @@
 		return grammar;
 	}
 	
-	
 	@Override
 	public Grammar getGrammar() {
 		return grammar;
diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/validation/AbstractEssentialOCLJavaValidator.java b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/validation/AbstractEssentialOCLJavaValidator.java
index bb1e6e0..ae4a473 100644
--- a/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/validation/AbstractEssentialOCLJavaValidator.java
+++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src-gen/org/eclipse/ocl/xtext/essentialocl/validation/AbstractEssentialOCLJavaValidator.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.essentialocl.validation;
  
 import java.util.ArrayList;
diff --git a/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/AbstractMarkupUiModule.java b/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/AbstractMarkupUiModule.java
index c463e99..025732d 100644
--- a/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/AbstractMarkupUiModule.java
+++ b/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/AbstractMarkupUiModule.java
@@ -4,14 +4,13 @@
  */
 package org.eclipse.ocl.xtext.markup.ui;
 
-import org.eclipse.xtext.ui.DefaultUiModule;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
  * Manual modifications go to {org.eclipse.ocl.xtext.markup.ui.MarkupUiModule}
  */
 @SuppressWarnings("all")
-public abstract class AbstractMarkupUiModule extends DefaultUiModule {
+public abstract class AbstractMarkupUiModule extends org.eclipse.xtext.ui.DefaultUiModule {
 	
 	public AbstractMarkupUiModule(AbstractUIPlugin plugin) {
 		super(plugin);
diff --git a/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/AbstractMarkupProposalProvider.java b/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/AbstractMarkupProposalProvider.java
index d7c1c9c..acb2b3e 100644
--- a/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/AbstractMarkupProposalProvider.java
+++ b/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/AbstractMarkupProposalProvider.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.markup.ui.contentassist;
 
 import org.eclipse.emf.ecore.EObject;
diff --git a/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/antlr/MarkupParser.java b/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/antlr/MarkupParser.java
index d856d5d..1b61eed 100644
--- a/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/antlr/MarkupParser.java
+++ b/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/antlr/MarkupParser.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.markup.ui.contentassist.antlr;
 
 import java.util.Collection;
diff --git a/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/antlr/internal/InternalMarkup.g b/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/antlr/internal/InternalMarkup.g
index 0dacc90..801bdb1 100644
--- a/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/antlr/internal/InternalMarkup.g
+++ b/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/antlr/internal/InternalMarkup.g
@@ -1,3165 +1,3165 @@
-/*

-* generated by Xtext

-*/

-grammar InternalMarkup;

-

-options {

-	superClass=AbstractInternalContentAssistParser;

-	backtrack=true;

-	

-}

-

-@lexer::header {

-package org.eclipse.ocl.xtext.markup.ui.contentassist.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.ui.editor.contentassist.antlr.internal.Lexer;

-}

-

-@parser::header {

-package org.eclipse.ocl.xtext.markup.ui.contentassist.antlr.internal; 

-

-import java.io.InputStream;

-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.XtextTokenStream;

-import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;

-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;

-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;

-import org.eclipse.ocl.xtext.markup.services.MarkupGrammarAccess;

-

-}

-

-@parser::members {

- 

- 	private MarkupGrammarAccess grammarAccess;

- 	

-    public void setGrammarAccess(MarkupGrammarAccess grammarAccess) {

-    	this.grammarAccess = grammarAccess;

-    }

-    

-    @Override

-    protected Grammar getGrammar() {

-    	return grammarAccess.getGrammar();

-    }

-    

-    @Override

-    protected String getValueForTokenName(String tokenName) {

-    	return tokenName;

-    }

-

-}

-

-

-

-

-// Entry rule entryRuleMarkup

-entryRuleMarkup 

-:

-{ before(grammarAccess.getMarkupRule()); }

-	 ruleMarkup

-{ after(grammarAccess.getMarkupRule()); } 

-	 EOF 

-;

-

-// Rule Markup

-ruleMarkup

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMarkupAccess().getElementsAssignment()); }

-(rule__Markup__ElementsAssignment)*

-{ after(grammarAccess.getMarkupAccess().getElementsAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleMarkupKeyword

-entryRuleMarkupKeyword 

-:

-{ before(grammarAccess.getMarkupKeywordRule()); }

-	 ruleMarkupKeyword

-{ after(grammarAccess.getMarkupKeywordRule()); } 

-	 EOF 

-;

-

-// Rule MarkupKeyword

-ruleMarkupKeyword

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMarkupKeywordAccess().getAlternatives()); }

-(rule__MarkupKeyword__Alternatives)

-{ after(grammarAccess.getMarkupKeywordAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleMarkupElement

-entryRuleMarkupElement 

-:

-{ before(grammarAccess.getMarkupElementRule()); }

-	 ruleMarkupElement

-{ after(grammarAccess.getMarkupElementRule()); } 

-	 EOF 

-;

-

-// Rule MarkupElement

-ruleMarkupElement

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMarkupElementAccess().getAlternatives()); }

-(rule__MarkupElement__Alternatives)

-{ after(grammarAccess.getMarkupElementAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleBulletElement

-entryRuleBulletElement 

-:

-{ before(grammarAccess.getBulletElementRule()); }

-	 ruleBulletElement

-{ after(grammarAccess.getBulletElementRule()); } 

-	 EOF 

-;

-

-// Rule BulletElement

-ruleBulletElement

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getBulletElementAccess().getGroup()); }

-(rule__BulletElement__Group__0)

-{ after(grammarAccess.getBulletElementAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleFontElement

-entryRuleFontElement 

-:

-{ before(grammarAccess.getFontElementRule()); }

-	 ruleFontElement

-{ after(grammarAccess.getFontElementRule()); } 

-	 EOF 

-;

-

-// Rule FontElement

-ruleFontElement

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getFontElementAccess().getGroup()); }

-(rule__FontElement__Group__0)

-{ after(grammarAccess.getFontElementAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleFigureElement

-entryRuleFigureElement 

-:

-{ before(grammarAccess.getFigureElementRule()); }

-	 ruleFigureElement

-{ after(grammarAccess.getFigureElementRule()); } 

-	 EOF 

-;

-

-// Rule FigureElement

-ruleFigureElement

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getFigureElementAccess().getGroup()); }

-(rule__FigureElement__Group__0)

-{ after(grammarAccess.getFigureElementAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleFigureRefElement

-entryRuleFigureRefElement 

-:

-{ before(grammarAccess.getFigureRefElementRule()); }

-	 ruleFigureRefElement

-{ after(grammarAccess.getFigureRefElementRule()); } 

-	 EOF 

-;

-

-// Rule FigureRefElement

-ruleFigureRefElement

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getFigureRefElementAccess().getGroup()); }

-(rule__FigureRefElement__Group__0)

-{ after(grammarAccess.getFigureRefElementAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleFootnoteElement

-entryRuleFootnoteElement 

-:

-{ before(grammarAccess.getFootnoteElementRule()); }

-	 ruleFootnoteElement

-{ after(grammarAccess.getFootnoteElementRule()); } 

-	 EOF 

-;

-

-// Rule FootnoteElement

-ruleFootnoteElement

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getFootnoteElementAccess().getGroup()); }

-(rule__FootnoteElement__Group__0)

-{ after(grammarAccess.getFootnoteElementAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleHeadingElement

-entryRuleHeadingElement 

-:

-{ before(grammarAccess.getHeadingElementRule()); }

-	 ruleHeadingElement

-{ after(grammarAccess.getHeadingElementRule()); } 

-	 EOF 

-;

-

-// Rule HeadingElement

-ruleHeadingElement

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getHeadingElementAccess().getGroup()); }

-(rule__HeadingElement__Group__0)

-{ after(grammarAccess.getHeadingElementAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNewLineElement

-entryRuleNewLineElement 

-:

-{ before(grammarAccess.getNewLineElementRule()); }

-	 ruleNewLineElement

-{ after(grammarAccess.getNewLineElementRule()); } 

-	 EOF 

-;

-

-// Rule NewLineElement

-ruleNewLineElement

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNewLineElementAccess().getTextAssignment()); }

-(rule__NewLineElement__TextAssignment)

-{ after(grammarAccess.getNewLineElementAccess().getTextAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNullElement

-entryRuleNullElement 

-:

-{ before(grammarAccess.getNullElementRule()); }

-	 ruleNullElement

-{ after(grammarAccess.getNullElementRule()); } 

-	 EOF 

-;

-

-// Rule NullElement

-ruleNullElement

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNullElementAccess().getGroup()); }

-(rule__NullElement__Group__0)

-{ after(grammarAccess.getNullElementAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleOCLCodeElement

-entryRuleOCLCodeElement 

-:

-{ before(grammarAccess.getOCLCodeElementRule()); }

-	 ruleOCLCodeElement

-{ after(grammarAccess.getOCLCodeElementRule()); } 

-	 EOF 

-;

-

-// Rule OCLCodeElement

-ruleOCLCodeElement

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getOCLCodeElementAccess().getGroup()); }

-(rule__OCLCodeElement__Group__0)

-{ after(grammarAccess.getOCLCodeElementAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleOCLEvalElement

-entryRuleOCLEvalElement 

-:

-{ before(grammarAccess.getOCLEvalElementRule()); }

-	 ruleOCLEvalElement

-{ after(grammarAccess.getOCLEvalElementRule()); } 

-	 EOF 

-;

-

-// Rule OCLEvalElement

-ruleOCLEvalElement

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getOCLEvalElementAccess().getGroup()); }

-(rule__OCLEvalElement__Group__0)

-{ after(grammarAccess.getOCLEvalElementAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleOCLTextElement

-entryRuleOCLTextElement 

-:

-{ before(grammarAccess.getOCLTextElementRule()); }

-	 ruleOCLTextElement

-{ after(grammarAccess.getOCLTextElementRule()); } 

-	 EOF 

-;

-

-// Rule OCLTextElement

-ruleOCLTextElement

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getOCLTextElementAccess().getGroup()); }

-(rule__OCLTextElement__Group__0)

-{ after(grammarAccess.getOCLTextElementAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTextElement

-entryRuleTextElement 

-:

-{ before(grammarAccess.getTextElementRule()); }

-	 ruleTextElement

-{ after(grammarAccess.getTextElementRule()); } 

-	 EOF 

-;

-

-// Rule TextElement

-ruleTextElement

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTextElementAccess().getAlternatives()); }

-(rule__TextElement__Alternatives)

-{ after(grammarAccess.getTextElementAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-rule__MarkupKeyword__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMarkupKeywordAccess().getBKeyword_0()); }

-

-	'b' 

-

-{ after(grammarAccess.getMarkupKeywordAccess().getBKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupKeywordAccess().getEKeyword_1()); }

-

-	'e' 

-

-{ after(grammarAccess.getMarkupKeywordAccess().getEKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupKeywordAccess().getBulletKeyword_2()); }

-

-	'bullet' 

-

-{ after(grammarAccess.getMarkupKeywordAccess().getBulletKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupKeywordAccess().getFigureKeyword_3()); }

-

-	'figure' 

-

-{ after(grammarAccess.getMarkupKeywordAccess().getFigureKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupKeywordAccess().getFigureRefKeyword_4()); }

-

-	'figureRef' 

-

-{ after(grammarAccess.getMarkupKeywordAccess().getFigureRefKeyword_4()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupKeywordAccess().getFootnoteKeyword_5()); }

-

-	'footnote' 

-

-{ after(grammarAccess.getMarkupKeywordAccess().getFootnoteKeyword_5()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupKeywordAccess().getHeadingKeyword_6()); }

-

-	'heading' 

-

-{ after(grammarAccess.getMarkupKeywordAccess().getHeadingKeyword_6()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupKeywordAccess().getOclCodeKeyword_7()); }

-

-	'oclCode' 

-

-{ after(grammarAccess.getMarkupKeywordAccess().getOclCodeKeyword_7()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupKeywordAccess().getOclEvalKeyword_8()); }

-

-	'oclEval' 

-

-{ after(grammarAccess.getMarkupKeywordAccess().getOclEvalKeyword_8()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupKeywordAccess().getOclTextKeyword_9()); }

-

-	'oclText' 

-

-{ after(grammarAccess.getMarkupKeywordAccess().getOclTextKeyword_9()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MarkupElement__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMarkupElementAccess().getFontElementParserRuleCall_0()); }

-	ruleFontElement

-{ after(grammarAccess.getMarkupElementAccess().getFontElementParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupElementAccess().getNewLineElementParserRuleCall_1()); }

-	ruleNewLineElement

-{ after(grammarAccess.getMarkupElementAccess().getNewLineElementParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupElementAccess().getBulletElementParserRuleCall_2()); }

-	ruleBulletElement

-{ after(grammarAccess.getMarkupElementAccess().getBulletElementParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupElementAccess().getFigureElementParserRuleCall_3()); }

-	ruleFigureElement

-{ after(grammarAccess.getMarkupElementAccess().getFigureElementParserRuleCall_3()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupElementAccess().getFigureRefElementParserRuleCall_4()); }

-	ruleFigureRefElement

-{ after(grammarAccess.getMarkupElementAccess().getFigureRefElementParserRuleCall_4()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupElementAccess().getFootnoteElementParserRuleCall_5()); }

-	ruleFootnoteElement

-{ after(grammarAccess.getMarkupElementAccess().getFootnoteElementParserRuleCall_5()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupElementAccess().getHeadingElementParserRuleCall_6()); }

-	ruleHeadingElement

-{ after(grammarAccess.getMarkupElementAccess().getHeadingElementParserRuleCall_6()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupElementAccess().getNullElementParserRuleCall_7()); }

-	ruleNullElement

-{ after(grammarAccess.getMarkupElementAccess().getNullElementParserRuleCall_7()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupElementAccess().getOCLCodeElementParserRuleCall_8()); }

-	ruleOCLCodeElement

-{ after(grammarAccess.getMarkupElementAccess().getOCLCodeElementParserRuleCall_8()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupElementAccess().getOCLEvalElementParserRuleCall_9()); }

-	ruleOCLEvalElement

-{ after(grammarAccess.getMarkupElementAccess().getOCLEvalElementParserRuleCall_9()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupElementAccess().getOCLTextElementParserRuleCall_10()); }

-	ruleOCLTextElement

-{ after(grammarAccess.getMarkupElementAccess().getOCLTextElementParserRuleCall_10()); }

-)

-

-    |(

-{ before(grammarAccess.getMarkupElementAccess().getTextElementParserRuleCall_11()); }

-	ruleTextElement

-{ after(grammarAccess.getMarkupElementAccess().getTextElementParserRuleCall_11()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FontElement__FontAlternatives_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFontElementAccess().getFontBKeyword_0_0_0()); }

-

-	'b' 

-

-{ after(grammarAccess.getFontElementAccess().getFontBKeyword_0_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getFontElementAccess().getFontEKeyword_0_0_1()); }

-

-	'e' 

-

-{ after(grammarAccess.getFontElementAccess().getFontEKeyword_0_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TextElement__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-(

-{ before(grammarAccess.getTextElementAccess().getTextAssignment_0()); }

-(rule__TextElement__TextAssignment_0)

-{ after(grammarAccess.getTextElementAccess().getTextAssignment_0()); }

-)

-(

-{ before(grammarAccess.getTextElementAccess().getTextAssignment_0()); }

-(rule__TextElement__TextAssignment_0)*

-{ after(grammarAccess.getTextElementAccess().getTextAssignment_0()); }

-)

-)

-

-    |(

-{ before(grammarAccess.getTextElementAccess().getTextAssignment_1()); }

-(rule__TextElement__TextAssignment_1)

-{ after(grammarAccess.getTextElementAccess().getTextAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TextElement__TextAlternatives_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTextElementAccess().getTextIDTerminalRuleCall_0_0_0()); }

-	RULE_ID

-{ after(grammarAccess.getTextElementAccess().getTextIDTerminalRuleCall_0_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTextElementAccess().getTextWORDTerminalRuleCall_0_0_1()); }

-	RULE_WORD

-{ after(grammarAccess.getTextElementAccess().getTextWORDTerminalRuleCall_0_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getTextElementAccess().getTextINTTerminalRuleCall_0_0_2()); }

-	RULE_INT

-{ after(grammarAccess.getTextElementAccess().getTextINTTerminalRuleCall_0_0_2()); }

-)

-

-    |(

-{ before(grammarAccess.getTextElementAccess().getTextWSTerminalRuleCall_0_0_3()); }

-	RULE_WS

-{ after(grammarAccess.getTextElementAccess().getTextWSTerminalRuleCall_0_0_3()); }

-)

-

-    |(

-{ before(grammarAccess.getTextElementAccess().getTextColonKeyword_0_0_4()); }

-

-	':' 

-

-{ after(grammarAccess.getTextElementAccess().getTextColonKeyword_0_0_4()); }

-)

-

-    |(

-{ before(grammarAccess.getTextElementAccess().getTextNumberSignKeyword_0_0_5()); }

-

-	'#' 

-

-{ after(grammarAccess.getTextElementAccess().getTextNumberSignKeyword_0_0_5()); }

-)

-

-    |(

-{ before(grammarAccess.getTextElementAccess().getTextCommaKeyword_0_0_6()); }

-

-	',' 

-

-{ after(grammarAccess.getTextElementAccess().getTextCommaKeyword_0_0_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-rule__BulletElement__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__BulletElement__Group__0__Impl

-	rule__BulletElement__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BulletElement__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBulletElementAccess().getBulletElementAction_0()); }

-(

-

-)

-{ after(grammarAccess.getBulletElementAccess().getBulletElementAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__BulletElement__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__BulletElement__Group__1__Impl

-	rule__BulletElement__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BulletElement__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBulletElementAccess().getBulletKeyword_1()); }

-

-	'bullet' 

-

-{ after(grammarAccess.getBulletElementAccess().getBulletKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__BulletElement__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__BulletElement__Group__2__Impl

-	rule__BulletElement__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BulletElement__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBulletElementAccess().getGroup_2()); }

-(rule__BulletElement__Group_2__0)?

-{ after(grammarAccess.getBulletElementAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__BulletElement__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__BulletElement__Group__3__Impl

-	rule__BulletElement__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BulletElement__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBulletElementAccess().getLeftSquareBracketKeyword_3()); }

-

-	'[' 

-

-{ after(grammarAccess.getBulletElementAccess().getLeftSquareBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__BulletElement__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__BulletElement__Group__4__Impl

-	rule__BulletElement__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BulletElement__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBulletElementAccess().getElementsAssignment_4()); }

-(rule__BulletElement__ElementsAssignment_4)*

-{ after(grammarAccess.getBulletElementAccess().getElementsAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__BulletElement__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__BulletElement__Group__5__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BulletElement__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBulletElementAccess().getRightSquareBracketKeyword_5()); }

-

-	']' 

-

-{ after(grammarAccess.getBulletElementAccess().getRightSquareBracketKeyword_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__BulletElement__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__BulletElement__Group_2__0__Impl

-	rule__BulletElement__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BulletElement__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBulletElementAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getBulletElementAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__BulletElement__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__BulletElement__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BulletElement__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBulletElementAccess().getLevelAssignment_2_1()); }

-(rule__BulletElement__LevelAssignment_2_1)

-{ after(grammarAccess.getBulletElementAccess().getLevelAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__FontElement__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FontElement__Group__0__Impl

-	rule__FontElement__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FontElement__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFontElementAccess().getFontAssignment_0()); }

-(rule__FontElement__FontAssignment_0)

-{ after(grammarAccess.getFontElementAccess().getFontAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FontElement__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FontElement__Group__1__Impl

-	rule__FontElement__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FontElement__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFontElementAccess().getLeftSquareBracketKeyword_1()); }

-

-	'[' 

-

-{ after(grammarAccess.getFontElementAccess().getLeftSquareBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FontElement__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FontElement__Group__2__Impl

-	rule__FontElement__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FontElement__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFontElementAccess().getElementsAssignment_2()); }

-(rule__FontElement__ElementsAssignment_2)*

-{ after(grammarAccess.getFontElementAccess().getElementsAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FontElement__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FontElement__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FontElement__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFontElementAccess().getRightSquareBracketKeyword_3()); }

-

-	']' 

-

-{ after(grammarAccess.getFontElementAccess().getRightSquareBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__FigureElement__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group__0__Impl

-	rule__FigureElement__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getFigureKeyword_0()); }

-

-	'figure' 

-

-{ after(grammarAccess.getFigureElementAccess().getFigureKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FigureElement__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group__1__Impl

-	rule__FigureElement__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getGroup_1()); }

-(rule__FigureElement__Group_1__0)?

-{ after(grammarAccess.getFigureElementAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FigureElement__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group__2__Impl

-	rule__FigureElement__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getLeftSquareBracketKeyword_2()); }

-

-	'[' 

-

-{ after(grammarAccess.getFigureElementAccess().getLeftSquareBracketKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FigureElement__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group__3__Impl

-	rule__FigureElement__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getSrcAssignment_3()); }

-(rule__FigureElement__SrcAssignment_3)

-{ after(grammarAccess.getFigureElementAccess().getSrcAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FigureElement__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group__4__Impl

-	rule__FigureElement__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getGroup_4()); }

-(rule__FigureElement__Group_4__0)?

-{ after(grammarAccess.getFigureElementAccess().getGroup_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FigureElement__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group__5__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getRightSquareBracketKeyword_5()); }

-

-	']' 

-

-{ after(grammarAccess.getFigureElementAccess().getRightSquareBracketKeyword_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__FigureElement__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group_1__0__Impl

-	rule__FigureElement__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getNumberSignKeyword_1_0()); }

-

-	'#' 

-

-{ after(grammarAccess.getFigureElementAccess().getNumberSignKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FigureElement__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getDefAssignment_1_1()); }

-(rule__FigureElement__DefAssignment_1_1)

-{ after(grammarAccess.getFigureElementAccess().getDefAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__FigureElement__Group_4__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group_4__0__Impl

-	rule__FigureElement__Group_4__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group_4__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getCommaKeyword_4_0()); }

-

-	',' 

-

-{ after(grammarAccess.getFigureElementAccess().getCommaKeyword_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FigureElement__Group_4__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group_4__1__Impl

-	rule__FigureElement__Group_4__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group_4__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getAltAssignment_4_1()); }

-(rule__FigureElement__AltAssignment_4_1)

-{ after(grammarAccess.getFigureElementAccess().getAltAssignment_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FigureElement__Group_4__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group_4__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group_4__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getGroup_4_2()); }

-(rule__FigureElement__Group_4_2__0)?

-{ after(grammarAccess.getFigureElementAccess().getGroup_4_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__FigureElement__Group_4_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group_4_2__0__Impl

-	rule__FigureElement__Group_4_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group_4_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getCommaKeyword_4_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getFigureElementAccess().getCommaKeyword_4_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FigureElement__Group_4_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group_4_2__1__Impl

-	rule__FigureElement__Group_4_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group_4_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getRequiredWidthAssignment_4_2_1()); }

-(rule__FigureElement__RequiredWidthAssignment_4_2_1)

-{ after(grammarAccess.getFigureElementAccess().getRequiredWidthAssignment_4_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FigureElement__Group_4_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group_4_2__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group_4_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getGroup_4_2_2()); }

-(rule__FigureElement__Group_4_2_2__0)?

-{ after(grammarAccess.getFigureElementAccess().getGroup_4_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__FigureElement__Group_4_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group_4_2_2__0__Impl

-	rule__FigureElement__Group_4_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group_4_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getCommaKeyword_4_2_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getFigureElementAccess().getCommaKeyword_4_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FigureElement__Group_4_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureElement__Group_4_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__Group_4_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getRequiredHeightAssignment_4_2_2_1()); }

-(rule__FigureElement__RequiredHeightAssignment_4_2_2_1)

-{ after(grammarAccess.getFigureElementAccess().getRequiredHeightAssignment_4_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__FigureRefElement__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureRefElement__Group__0__Impl

-	rule__FigureRefElement__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureRefElement__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureRefElementAccess().getFigureRefKeyword_0()); }

-

-	'figureRef' 

-

-{ after(grammarAccess.getFigureRefElementAccess().getFigureRefKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FigureRefElement__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureRefElement__Group__1__Impl

-	rule__FigureRefElement__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureRefElement__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureRefElementAccess().getLeftSquareBracketKeyword_1()); }

-

-	'[' 

-

-{ after(grammarAccess.getFigureRefElementAccess().getLeftSquareBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FigureRefElement__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureRefElement__Group__2__Impl

-	rule__FigureRefElement__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureRefElement__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureRefElementAccess().getRefAssignment_2()); }

-(rule__FigureRefElement__RefAssignment_2)

-{ after(grammarAccess.getFigureRefElementAccess().getRefAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FigureRefElement__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FigureRefElement__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureRefElement__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureRefElementAccess().getRightSquareBracketKeyword_3()); }

-

-	']' 

-

-{ after(grammarAccess.getFigureRefElementAccess().getRightSquareBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__FootnoteElement__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FootnoteElement__Group__0__Impl

-	rule__FootnoteElement__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FootnoteElement__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFootnoteElementAccess().getFootnoteElementAction_0()); }

-(

-

-)

-{ after(grammarAccess.getFootnoteElementAccess().getFootnoteElementAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FootnoteElement__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FootnoteElement__Group__1__Impl

-	rule__FootnoteElement__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FootnoteElement__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFootnoteElementAccess().getFootnoteKeyword_1()); }

-

-	'footnote' 

-

-{ after(grammarAccess.getFootnoteElementAccess().getFootnoteKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FootnoteElement__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FootnoteElement__Group__2__Impl

-	rule__FootnoteElement__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FootnoteElement__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFootnoteElementAccess().getLeftSquareBracketKeyword_2()); }

-

-	'[' 

-

-{ after(grammarAccess.getFootnoteElementAccess().getLeftSquareBracketKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FootnoteElement__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FootnoteElement__Group__3__Impl

-	rule__FootnoteElement__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FootnoteElement__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFootnoteElementAccess().getElementsAssignment_3()); }

-(rule__FootnoteElement__ElementsAssignment_3)*

-{ after(grammarAccess.getFootnoteElementAccess().getElementsAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__FootnoteElement__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__FootnoteElement__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FootnoteElement__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFootnoteElementAccess().getRightSquareBracketKeyword_4()); }

-

-	']' 

-

-{ after(grammarAccess.getFootnoteElementAccess().getRightSquareBracketKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__HeadingElement__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__HeadingElement__Group__0__Impl

-	rule__HeadingElement__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__HeadingElement__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getHeadingElementAccess().getHeadingElementAction_0()); }

-(

-

-)

-{ after(grammarAccess.getHeadingElementAccess().getHeadingElementAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__HeadingElement__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__HeadingElement__Group__1__Impl

-	rule__HeadingElement__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__HeadingElement__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getHeadingElementAccess().getHeadingKeyword_1()); }

-

-	'heading' 

-

-{ after(grammarAccess.getHeadingElementAccess().getHeadingKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__HeadingElement__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__HeadingElement__Group__2__Impl

-	rule__HeadingElement__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__HeadingElement__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getHeadingElementAccess().getGroup_2()); }

-(rule__HeadingElement__Group_2__0)?

-{ after(grammarAccess.getHeadingElementAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__HeadingElement__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__HeadingElement__Group__3__Impl

-	rule__HeadingElement__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__HeadingElement__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getHeadingElementAccess().getLeftSquareBracketKeyword_3()); }

-

-	'[' 

-

-{ after(grammarAccess.getHeadingElementAccess().getLeftSquareBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__HeadingElement__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__HeadingElement__Group__4__Impl

-	rule__HeadingElement__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__HeadingElement__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getHeadingElementAccess().getElementsAssignment_4()); }

-(rule__HeadingElement__ElementsAssignment_4)*

-{ after(grammarAccess.getHeadingElementAccess().getElementsAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__HeadingElement__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__HeadingElement__Group__5__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__HeadingElement__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getHeadingElementAccess().getRightSquareBracketKeyword_5()); }

-

-	']' 

-

-{ after(grammarAccess.getHeadingElementAccess().getRightSquareBracketKeyword_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__HeadingElement__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__HeadingElement__Group_2__0__Impl

-	rule__HeadingElement__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__HeadingElement__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getHeadingElementAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getHeadingElementAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__HeadingElement__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__HeadingElement__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__HeadingElement__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getHeadingElementAccess().getLevelAssignment_2_1()); }

-(rule__HeadingElement__LevelAssignment_2_1)

-{ after(grammarAccess.getHeadingElementAccess().getLevelAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NullElement__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NullElement__Group__0__Impl

-	rule__NullElement__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NullElement__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNullElementAccess().getNullElementAction_0()); }

-(

-

-)

-{ after(grammarAccess.getNullElementAccess().getNullElementAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NullElement__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NullElement__Group__1__Impl

-	rule__NullElement__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NullElement__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNullElementAccess().getLeftSquareBracketKeyword_1()); }

-

-	'[' 

-

-{ after(grammarAccess.getNullElementAccess().getLeftSquareBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NullElement__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NullElement__Group__2__Impl

-	rule__NullElement__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NullElement__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNullElementAccess().getElementsAssignment_2()); }

-(rule__NullElement__ElementsAssignment_2)*

-{ after(grammarAccess.getNullElementAccess().getElementsAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NullElement__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NullElement__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NullElement__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNullElementAccess().getRightSquareBracketKeyword_3()); }

-

-	']' 

-

-{ after(grammarAccess.getNullElementAccess().getRightSquareBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__OCLCodeElement__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLCodeElement__Group__0__Impl

-	rule__OCLCodeElement__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLCodeElement__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLCodeElementAccess().getOCLCodeElementAction_0()); }

-(

-

-)

-{ after(grammarAccess.getOCLCodeElementAccess().getOCLCodeElementAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OCLCodeElement__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLCodeElement__Group__1__Impl

-	rule__OCLCodeElement__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLCodeElement__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLCodeElementAccess().getOclCodeKeyword_1()); }

-

-	'oclCode' 

-

-{ after(grammarAccess.getOCLCodeElementAccess().getOclCodeKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OCLCodeElement__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLCodeElement__Group__2__Impl

-	rule__OCLCodeElement__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLCodeElement__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLCodeElementAccess().getLeftSquareBracketKeyword_2()); }

-

-	'[' 

-

-{ after(grammarAccess.getOCLCodeElementAccess().getLeftSquareBracketKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OCLCodeElement__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLCodeElement__Group__3__Impl

-	rule__OCLCodeElement__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLCodeElement__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLCodeElementAccess().getElementsAssignment_3()); }

-(rule__OCLCodeElement__ElementsAssignment_3)*

-{ after(grammarAccess.getOCLCodeElementAccess().getElementsAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OCLCodeElement__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLCodeElement__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLCodeElement__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLCodeElementAccess().getRightSquareBracketKeyword_4()); }

-

-	']' 

-

-{ after(grammarAccess.getOCLCodeElementAccess().getRightSquareBracketKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__OCLEvalElement__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLEvalElement__Group__0__Impl

-	rule__OCLEvalElement__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLEvalElement__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLEvalElementAccess().getOCLEvalElementAction_0()); }

-(

-

-)

-{ after(grammarAccess.getOCLEvalElementAccess().getOCLEvalElementAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OCLEvalElement__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLEvalElement__Group__1__Impl

-	rule__OCLEvalElement__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLEvalElement__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLEvalElementAccess().getOclEvalKeyword_1()); }

-

-	'oclEval' 

-

-{ after(grammarAccess.getOCLEvalElementAccess().getOclEvalKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OCLEvalElement__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLEvalElement__Group__2__Impl

-	rule__OCLEvalElement__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLEvalElement__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLEvalElementAccess().getLeftSquareBracketKeyword_2()); }

-

-	'[' 

-

-{ after(grammarAccess.getOCLEvalElementAccess().getLeftSquareBracketKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OCLEvalElement__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLEvalElement__Group__3__Impl

-	rule__OCLEvalElement__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLEvalElement__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLEvalElementAccess().getElementsAssignment_3()); }

-(rule__OCLEvalElement__ElementsAssignment_3)*

-{ after(grammarAccess.getOCLEvalElementAccess().getElementsAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OCLEvalElement__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLEvalElement__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLEvalElement__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLEvalElementAccess().getRightSquareBracketKeyword_4()); }

-

-	']' 

-

-{ after(grammarAccess.getOCLEvalElementAccess().getRightSquareBracketKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__OCLTextElement__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLTextElement__Group__0__Impl

-	rule__OCLTextElement__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLTextElement__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLTextElementAccess().getOCLTextElementAction_0()); }

-(

-

-)

-{ after(grammarAccess.getOCLTextElementAccess().getOCLTextElementAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OCLTextElement__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLTextElement__Group__1__Impl

-	rule__OCLTextElement__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLTextElement__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLTextElementAccess().getOclTextKeyword_1()); }

-

-	'oclText' 

-

-{ after(grammarAccess.getOCLTextElementAccess().getOclTextKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OCLTextElement__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLTextElement__Group__2__Impl

-	rule__OCLTextElement__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLTextElement__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLTextElementAccess().getLeftSquareBracketKeyword_2()); }

-

-	'[' 

-

-{ after(grammarAccess.getOCLTextElementAccess().getLeftSquareBracketKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OCLTextElement__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLTextElement__Group__3__Impl

-	rule__OCLTextElement__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLTextElement__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLTextElementAccess().getElementsAssignment_3()); }

-(rule__OCLTextElement__ElementsAssignment_3)*

-{ after(grammarAccess.getOCLTextElementAccess().getElementsAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OCLTextElement__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OCLTextElement__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLTextElement__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLTextElementAccess().getRightSquareBracketKeyword_4()); }

-

-	']' 

-

-{ after(grammarAccess.getOCLTextElementAccess().getRightSquareBracketKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__Markup__ElementsAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMarkupAccess().getElementsMarkupElementParserRuleCall_0()); }

-	ruleMarkupElement{ after(grammarAccess.getMarkupAccess().getElementsMarkupElementParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BulletElement__LevelAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBulletElementAccess().getLevelINTTerminalRuleCall_2_1_0()); }

-	RULE_INT{ after(grammarAccess.getBulletElementAccess().getLevelINTTerminalRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BulletElement__ElementsAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBulletElementAccess().getElementsMarkupElementParserRuleCall_4_0()); }

-	ruleMarkupElement{ after(grammarAccess.getBulletElementAccess().getElementsMarkupElementParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FontElement__FontAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFontElementAccess().getFontAlternatives_0_0()); }

-(rule__FontElement__FontAlternatives_0_0)

-{ after(grammarAccess.getFontElementAccess().getFontAlternatives_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FontElement__ElementsAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFontElementAccess().getElementsMarkupElementParserRuleCall_2_0()); }

-	ruleMarkupElement{ after(grammarAccess.getFontElementAccess().getElementsMarkupElementParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__DefAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getDefIDTerminalRuleCall_1_1_0()); }

-	RULE_ID{ after(grammarAccess.getFigureElementAccess().getDefIDTerminalRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__SrcAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getSrcSTRINGTerminalRuleCall_3_0()); }

-	RULE_STRING{ after(grammarAccess.getFigureElementAccess().getSrcSTRINGTerminalRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__AltAssignment_4_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getAltSTRINGTerminalRuleCall_4_1_0()); }

-	RULE_STRING{ after(grammarAccess.getFigureElementAccess().getAltSTRINGTerminalRuleCall_4_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__RequiredWidthAssignment_4_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getRequiredWidthINTTerminalRuleCall_4_2_1_0()); }

-	RULE_INT{ after(grammarAccess.getFigureElementAccess().getRequiredWidthINTTerminalRuleCall_4_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureElement__RequiredHeightAssignment_4_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureElementAccess().getRequiredHeightINTTerminalRuleCall_4_2_2_1_0()); }

-	RULE_INT{ after(grammarAccess.getFigureElementAccess().getRequiredHeightINTTerminalRuleCall_4_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FigureRefElement__RefAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFigureRefElementAccess().getRefFigureElementCrossReference_2_0()); }

-(

-{ before(grammarAccess.getFigureRefElementAccess().getRefFigureElementIDTerminalRuleCall_2_0_1()); }

-	RULE_ID{ after(grammarAccess.getFigureRefElementAccess().getRefFigureElementIDTerminalRuleCall_2_0_1()); }

-)

-{ after(grammarAccess.getFigureRefElementAccess().getRefFigureElementCrossReference_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FootnoteElement__ElementsAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFootnoteElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }

-	ruleMarkupElement{ after(grammarAccess.getFootnoteElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__HeadingElement__LevelAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getHeadingElementAccess().getLevelINTTerminalRuleCall_2_1_0()); }

-	RULE_INT{ after(grammarAccess.getHeadingElementAccess().getLevelINTTerminalRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__HeadingElement__ElementsAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getHeadingElementAccess().getElementsMarkupElementParserRuleCall_4_0()); }

-	ruleMarkupElement{ after(grammarAccess.getHeadingElementAccess().getElementsMarkupElementParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NewLineElement__TextAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNewLineElementAccess().getTextNLTerminalRuleCall_0()); }

-	RULE_NL{ after(grammarAccess.getNewLineElementAccess().getTextNLTerminalRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NullElement__ElementsAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNullElementAccess().getElementsMarkupElementParserRuleCall_2_0()); }

-	ruleMarkupElement{ after(grammarAccess.getNullElementAccess().getElementsMarkupElementParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLCodeElement__ElementsAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLCodeElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }

-	ruleMarkupElement{ after(grammarAccess.getOCLCodeElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLEvalElement__ElementsAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLEvalElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }

-	ruleMarkupElement{ after(grammarAccess.getOCLEvalElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OCLTextElement__ElementsAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOCLTextElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }

-	ruleMarkupElement{ after(grammarAccess.getOCLTextElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TextElement__TextAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTextElementAccess().getTextAlternatives_0_0()); }

-(rule__TextElement__TextAlternatives_0_0)

-{ after(grammarAccess.getTextElementAccess().getTextAlternatives_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TextElement__TextAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTextElementAccess().getTextMarkupKeywordParserRuleCall_1_0()); }

-	ruleMarkupKeyword{ after(grammarAccess.getTextElementAccess().getTextMarkupKeywordParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-fragment RULE_NUMBER : '0'..'9';

-

-fragment RULE_LETTER : ('a'..'z'|'A'..'Z'|'_');

-

-fragment RULE_ESCAPED : '\\' ('b'|'t'|'n'|'f'|'r'|'"'|'\''|'\\'|'<'|'>'|'['|']');

-

-fragment RULE_VERTICAL_WS : ('\n'|'\r');

-

-fragment RULE_HORIZONTAL_WS : (' '|'\t');

-

-RULE_INT : RULE_NUMBER+;

-

-RULE_STRING : '"' (RULE_ESCAPED|~(('\\'|'"')))* '"';

-

-RULE_ID : RULE_LETTER (RULE_LETTER|RULE_NUMBER)*;

-

-RULE_WORD : (RULE_ESCAPED|~(('\\'|'"'|'['|']'|':'|'#'|','|RULE_HORIZONTAL_WS|RULE_VERTICAL_WS)))+;

-

-RULE_NL : (RULE_HORIZONTAL_WS* RULE_VERTICAL_WS)+;

-

-RULE_WS : RULE_HORIZONTAL_WS+;

-

-RULE_ANY_OTHER : .;

-

-

+/*
+ * generated by Xtext
+ */
+grammar InternalMarkup;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.ocl.xtext.markup.ui.contentassist.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.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.eclipse.ocl.xtext.markup.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+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.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.ocl.xtext.markup.services.MarkupGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private MarkupGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(MarkupGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleMarkup
+entryRuleMarkup 
+:
+{ before(grammarAccess.getMarkupRule()); }
+	 ruleMarkup
+{ after(grammarAccess.getMarkupRule()); } 
+	 EOF 
+;
+
+// Rule Markup
+ruleMarkup
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMarkupAccess().getElementsAssignment()); }
+(rule__Markup__ElementsAssignment)*
+{ after(grammarAccess.getMarkupAccess().getElementsAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMarkupKeyword
+entryRuleMarkupKeyword 
+:
+{ before(grammarAccess.getMarkupKeywordRule()); }
+	 ruleMarkupKeyword
+{ after(grammarAccess.getMarkupKeywordRule()); } 
+	 EOF 
+;
+
+// Rule MarkupKeyword
+ruleMarkupKeyword
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMarkupKeywordAccess().getAlternatives()); }
+(rule__MarkupKeyword__Alternatives)
+{ after(grammarAccess.getMarkupKeywordAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMarkupElement
+entryRuleMarkupElement 
+:
+{ before(grammarAccess.getMarkupElementRule()); }
+	 ruleMarkupElement
+{ after(grammarAccess.getMarkupElementRule()); } 
+	 EOF 
+;
+
+// Rule MarkupElement
+ruleMarkupElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMarkupElementAccess().getAlternatives()); }
+(rule__MarkupElement__Alternatives)
+{ after(grammarAccess.getMarkupElementAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBulletElement
+entryRuleBulletElement 
+:
+{ before(grammarAccess.getBulletElementRule()); }
+	 ruleBulletElement
+{ after(grammarAccess.getBulletElementRule()); } 
+	 EOF 
+;
+
+// Rule BulletElement
+ruleBulletElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBulletElementAccess().getGroup()); }
+(rule__BulletElement__Group__0)
+{ after(grammarAccess.getBulletElementAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFontElement
+entryRuleFontElement 
+:
+{ before(grammarAccess.getFontElementRule()); }
+	 ruleFontElement
+{ after(grammarAccess.getFontElementRule()); } 
+	 EOF 
+;
+
+// Rule FontElement
+ruleFontElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFontElementAccess().getGroup()); }
+(rule__FontElement__Group__0)
+{ after(grammarAccess.getFontElementAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFigureElement
+entryRuleFigureElement 
+:
+{ before(grammarAccess.getFigureElementRule()); }
+	 ruleFigureElement
+{ after(grammarAccess.getFigureElementRule()); } 
+	 EOF 
+;
+
+// Rule FigureElement
+ruleFigureElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFigureElementAccess().getGroup()); }
+(rule__FigureElement__Group__0)
+{ after(grammarAccess.getFigureElementAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFigureRefElement
+entryRuleFigureRefElement 
+:
+{ before(grammarAccess.getFigureRefElementRule()); }
+	 ruleFigureRefElement
+{ after(grammarAccess.getFigureRefElementRule()); } 
+	 EOF 
+;
+
+// Rule FigureRefElement
+ruleFigureRefElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFigureRefElementAccess().getGroup()); }
+(rule__FigureRefElement__Group__0)
+{ after(grammarAccess.getFigureRefElementAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFootnoteElement
+entryRuleFootnoteElement 
+:
+{ before(grammarAccess.getFootnoteElementRule()); }
+	 ruleFootnoteElement
+{ after(grammarAccess.getFootnoteElementRule()); } 
+	 EOF 
+;
+
+// Rule FootnoteElement
+ruleFootnoteElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFootnoteElementAccess().getGroup()); }
+(rule__FootnoteElement__Group__0)
+{ after(grammarAccess.getFootnoteElementAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleHeadingElement
+entryRuleHeadingElement 
+:
+{ before(grammarAccess.getHeadingElementRule()); }
+	 ruleHeadingElement
+{ after(grammarAccess.getHeadingElementRule()); } 
+	 EOF 
+;
+
+// Rule HeadingElement
+ruleHeadingElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getHeadingElementAccess().getGroup()); }
+(rule__HeadingElement__Group__0)
+{ after(grammarAccess.getHeadingElementAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNewLineElement
+entryRuleNewLineElement 
+:
+{ before(grammarAccess.getNewLineElementRule()); }
+	 ruleNewLineElement
+{ after(grammarAccess.getNewLineElementRule()); } 
+	 EOF 
+;
+
+// Rule NewLineElement
+ruleNewLineElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNewLineElementAccess().getTextAssignment()); }
+(rule__NewLineElement__TextAssignment)
+{ after(grammarAccess.getNewLineElementAccess().getTextAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNullElement
+entryRuleNullElement 
+:
+{ before(grammarAccess.getNullElementRule()); }
+	 ruleNullElement
+{ after(grammarAccess.getNullElementRule()); } 
+	 EOF 
+;
+
+// Rule NullElement
+ruleNullElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNullElementAccess().getGroup()); }
+(rule__NullElement__Group__0)
+{ after(grammarAccess.getNullElementAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOCLCodeElement
+entryRuleOCLCodeElement 
+:
+{ before(grammarAccess.getOCLCodeElementRule()); }
+	 ruleOCLCodeElement
+{ after(grammarAccess.getOCLCodeElementRule()); } 
+	 EOF 
+;
+
+// Rule OCLCodeElement
+ruleOCLCodeElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOCLCodeElementAccess().getGroup()); }
+(rule__OCLCodeElement__Group__0)
+{ after(grammarAccess.getOCLCodeElementAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOCLEvalElement
+entryRuleOCLEvalElement 
+:
+{ before(grammarAccess.getOCLEvalElementRule()); }
+	 ruleOCLEvalElement
+{ after(grammarAccess.getOCLEvalElementRule()); } 
+	 EOF 
+;
+
+// Rule OCLEvalElement
+ruleOCLEvalElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOCLEvalElementAccess().getGroup()); }
+(rule__OCLEvalElement__Group__0)
+{ after(grammarAccess.getOCLEvalElementAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOCLTextElement
+entryRuleOCLTextElement 
+:
+{ before(grammarAccess.getOCLTextElementRule()); }
+	 ruleOCLTextElement
+{ after(grammarAccess.getOCLTextElementRule()); } 
+	 EOF 
+;
+
+// Rule OCLTextElement
+ruleOCLTextElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOCLTextElementAccess().getGroup()); }
+(rule__OCLTextElement__Group__0)
+{ after(grammarAccess.getOCLTextElementAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTextElement
+entryRuleTextElement 
+:
+{ before(grammarAccess.getTextElementRule()); }
+	 ruleTextElement
+{ after(grammarAccess.getTextElementRule()); } 
+	 EOF 
+;
+
+// Rule TextElement
+ruleTextElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTextElementAccess().getAlternatives()); }
+(rule__TextElement__Alternatives)
+{ after(grammarAccess.getTextElementAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__MarkupKeyword__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMarkupKeywordAccess().getBKeyword_0()); }
+
+	'b' 
+
+{ after(grammarAccess.getMarkupKeywordAccess().getBKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupKeywordAccess().getEKeyword_1()); }
+
+	'e' 
+
+{ after(grammarAccess.getMarkupKeywordAccess().getEKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupKeywordAccess().getBulletKeyword_2()); }
+
+	'bullet' 
+
+{ after(grammarAccess.getMarkupKeywordAccess().getBulletKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupKeywordAccess().getFigureKeyword_3()); }
+
+	'figure' 
+
+{ after(grammarAccess.getMarkupKeywordAccess().getFigureKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupKeywordAccess().getFigureRefKeyword_4()); }
+
+	'figureRef' 
+
+{ after(grammarAccess.getMarkupKeywordAccess().getFigureRefKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupKeywordAccess().getFootnoteKeyword_5()); }
+
+	'footnote' 
+
+{ after(grammarAccess.getMarkupKeywordAccess().getFootnoteKeyword_5()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupKeywordAccess().getHeadingKeyword_6()); }
+
+	'heading' 
+
+{ after(grammarAccess.getMarkupKeywordAccess().getHeadingKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupKeywordAccess().getOclCodeKeyword_7()); }
+
+	'oclCode' 
+
+{ after(grammarAccess.getMarkupKeywordAccess().getOclCodeKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupKeywordAccess().getOclEvalKeyword_8()); }
+
+	'oclEval' 
+
+{ after(grammarAccess.getMarkupKeywordAccess().getOclEvalKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupKeywordAccess().getOclTextKeyword_9()); }
+
+	'oclText' 
+
+{ after(grammarAccess.getMarkupKeywordAccess().getOclTextKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MarkupElement__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMarkupElementAccess().getFontElementParserRuleCall_0()); }
+	ruleFontElement
+{ after(grammarAccess.getMarkupElementAccess().getFontElementParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupElementAccess().getNewLineElementParserRuleCall_1()); }
+	ruleNewLineElement
+{ after(grammarAccess.getMarkupElementAccess().getNewLineElementParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupElementAccess().getBulletElementParserRuleCall_2()); }
+	ruleBulletElement
+{ after(grammarAccess.getMarkupElementAccess().getBulletElementParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupElementAccess().getFigureElementParserRuleCall_3()); }
+	ruleFigureElement
+{ after(grammarAccess.getMarkupElementAccess().getFigureElementParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupElementAccess().getFigureRefElementParserRuleCall_4()); }
+	ruleFigureRefElement
+{ after(grammarAccess.getMarkupElementAccess().getFigureRefElementParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupElementAccess().getFootnoteElementParserRuleCall_5()); }
+	ruleFootnoteElement
+{ after(grammarAccess.getMarkupElementAccess().getFootnoteElementParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupElementAccess().getHeadingElementParserRuleCall_6()); }
+	ruleHeadingElement
+{ after(grammarAccess.getMarkupElementAccess().getHeadingElementParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupElementAccess().getNullElementParserRuleCall_7()); }
+	ruleNullElement
+{ after(grammarAccess.getMarkupElementAccess().getNullElementParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupElementAccess().getOCLCodeElementParserRuleCall_8()); }
+	ruleOCLCodeElement
+{ after(grammarAccess.getMarkupElementAccess().getOCLCodeElementParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupElementAccess().getOCLEvalElementParserRuleCall_9()); }
+	ruleOCLEvalElement
+{ after(grammarAccess.getMarkupElementAccess().getOCLEvalElementParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupElementAccess().getOCLTextElementParserRuleCall_10()); }
+	ruleOCLTextElement
+{ after(grammarAccess.getMarkupElementAccess().getOCLTextElementParserRuleCall_10()); }
+)
+
+    |(
+{ before(grammarAccess.getMarkupElementAccess().getTextElementParserRuleCall_11()); }
+	ruleTextElement
+{ after(grammarAccess.getMarkupElementAccess().getTextElementParserRuleCall_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FontElement__FontAlternatives_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFontElementAccess().getFontBKeyword_0_0_0()); }
+
+	'b' 
+
+{ after(grammarAccess.getFontElementAccess().getFontBKeyword_0_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getFontElementAccess().getFontEKeyword_0_0_1()); }
+
+	'e' 
+
+{ after(grammarAccess.getFontElementAccess().getFontEKeyword_0_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TextElement__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+(
+{ before(grammarAccess.getTextElementAccess().getTextAssignment_0()); }
+(rule__TextElement__TextAssignment_0)
+{ after(grammarAccess.getTextElementAccess().getTextAssignment_0()); }
+)
+(
+{ before(grammarAccess.getTextElementAccess().getTextAssignment_0()); }
+(rule__TextElement__TextAssignment_0)*
+{ after(grammarAccess.getTextElementAccess().getTextAssignment_0()); }
+)
+)
+
+    |(
+{ before(grammarAccess.getTextElementAccess().getTextAssignment_1()); }
+(rule__TextElement__TextAssignment_1)
+{ after(grammarAccess.getTextElementAccess().getTextAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TextElement__TextAlternatives_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTextElementAccess().getTextIDTerminalRuleCall_0_0_0()); }
+	RULE_ID
+{ after(grammarAccess.getTextElementAccess().getTextIDTerminalRuleCall_0_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTextElementAccess().getTextWORDTerminalRuleCall_0_0_1()); }
+	RULE_WORD
+{ after(grammarAccess.getTextElementAccess().getTextWORDTerminalRuleCall_0_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTextElementAccess().getTextINTTerminalRuleCall_0_0_2()); }
+	RULE_INT
+{ after(grammarAccess.getTextElementAccess().getTextINTTerminalRuleCall_0_0_2()); }
+)
+
+    |(
+{ before(grammarAccess.getTextElementAccess().getTextWSTerminalRuleCall_0_0_3()); }
+	RULE_WS
+{ after(grammarAccess.getTextElementAccess().getTextWSTerminalRuleCall_0_0_3()); }
+)
+
+    |(
+{ before(grammarAccess.getTextElementAccess().getTextColonKeyword_0_0_4()); }
+
+	':' 
+
+{ after(grammarAccess.getTextElementAccess().getTextColonKeyword_0_0_4()); }
+)
+
+    |(
+{ before(grammarAccess.getTextElementAccess().getTextNumberSignKeyword_0_0_5()); }
+
+	'#' 
+
+{ after(grammarAccess.getTextElementAccess().getTextNumberSignKeyword_0_0_5()); }
+)
+
+    |(
+{ before(grammarAccess.getTextElementAccess().getTextCommaKeyword_0_0_6()); }
+
+	',' 
+
+{ after(grammarAccess.getTextElementAccess().getTextCommaKeyword_0_0_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__BulletElement__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BulletElement__Group__0__Impl
+	rule__BulletElement__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BulletElement__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBulletElementAccess().getBulletElementAction_0()); }
+(
+
+)
+{ after(grammarAccess.getBulletElementAccess().getBulletElementAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BulletElement__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BulletElement__Group__1__Impl
+	rule__BulletElement__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BulletElement__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBulletElementAccess().getBulletKeyword_1()); }
+
+	'bullet' 
+
+{ after(grammarAccess.getBulletElementAccess().getBulletKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BulletElement__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BulletElement__Group__2__Impl
+	rule__BulletElement__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BulletElement__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBulletElementAccess().getGroup_2()); }
+(rule__BulletElement__Group_2__0)?
+{ after(grammarAccess.getBulletElementAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BulletElement__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BulletElement__Group__3__Impl
+	rule__BulletElement__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BulletElement__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBulletElementAccess().getLeftSquareBracketKeyword_3()); }
+
+	'[' 
+
+{ after(grammarAccess.getBulletElementAccess().getLeftSquareBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BulletElement__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BulletElement__Group__4__Impl
+	rule__BulletElement__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BulletElement__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBulletElementAccess().getElementsAssignment_4()); }
+(rule__BulletElement__ElementsAssignment_4)*
+{ after(grammarAccess.getBulletElementAccess().getElementsAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BulletElement__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BulletElement__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BulletElement__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBulletElementAccess().getRightSquareBracketKeyword_5()); }
+
+	']' 
+
+{ after(grammarAccess.getBulletElementAccess().getRightSquareBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__BulletElement__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BulletElement__Group_2__0__Impl
+	rule__BulletElement__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BulletElement__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBulletElementAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getBulletElementAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BulletElement__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BulletElement__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BulletElement__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBulletElementAccess().getLevelAssignment_2_1()); }
+(rule__BulletElement__LevelAssignment_2_1)
+{ after(grammarAccess.getBulletElementAccess().getLevelAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__FontElement__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FontElement__Group__0__Impl
+	rule__FontElement__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FontElement__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFontElementAccess().getFontAssignment_0()); }
+(rule__FontElement__FontAssignment_0)
+{ after(grammarAccess.getFontElementAccess().getFontAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FontElement__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FontElement__Group__1__Impl
+	rule__FontElement__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FontElement__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFontElementAccess().getLeftSquareBracketKeyword_1()); }
+
+	'[' 
+
+{ after(grammarAccess.getFontElementAccess().getLeftSquareBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FontElement__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FontElement__Group__2__Impl
+	rule__FontElement__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FontElement__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFontElementAccess().getElementsAssignment_2()); }
+(rule__FontElement__ElementsAssignment_2)*
+{ after(grammarAccess.getFontElementAccess().getElementsAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FontElement__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FontElement__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FontElement__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFontElementAccess().getRightSquareBracketKeyword_3()); }
+
+	']' 
+
+{ after(grammarAccess.getFontElementAccess().getRightSquareBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__FigureElement__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group__0__Impl
+	rule__FigureElement__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getFigureKeyword_0()); }
+
+	'figure' 
+
+{ after(grammarAccess.getFigureElementAccess().getFigureKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FigureElement__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group__1__Impl
+	rule__FigureElement__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getGroup_1()); }
+(rule__FigureElement__Group_1__0)?
+{ after(grammarAccess.getFigureElementAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FigureElement__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group__2__Impl
+	rule__FigureElement__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getLeftSquareBracketKeyword_2()); }
+
+	'[' 
+
+{ after(grammarAccess.getFigureElementAccess().getLeftSquareBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FigureElement__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group__3__Impl
+	rule__FigureElement__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getSrcAssignment_3()); }
+(rule__FigureElement__SrcAssignment_3)
+{ after(grammarAccess.getFigureElementAccess().getSrcAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FigureElement__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group__4__Impl
+	rule__FigureElement__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getGroup_4()); }
+(rule__FigureElement__Group_4__0)?
+{ after(grammarAccess.getFigureElementAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FigureElement__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getRightSquareBracketKeyword_5()); }
+
+	']' 
+
+{ after(grammarAccess.getFigureElementAccess().getRightSquareBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__FigureElement__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group_1__0__Impl
+	rule__FigureElement__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getNumberSignKeyword_1_0()); }
+
+	'#' 
+
+{ after(grammarAccess.getFigureElementAccess().getNumberSignKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FigureElement__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getDefAssignment_1_1()); }
+(rule__FigureElement__DefAssignment_1_1)
+{ after(grammarAccess.getFigureElementAccess().getDefAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__FigureElement__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group_4__0__Impl
+	rule__FigureElement__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getCommaKeyword_4_0()); }
+
+	',' 
+
+{ after(grammarAccess.getFigureElementAccess().getCommaKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FigureElement__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group_4__1__Impl
+	rule__FigureElement__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getAltAssignment_4_1()); }
+(rule__FigureElement__AltAssignment_4_1)
+{ after(grammarAccess.getFigureElementAccess().getAltAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FigureElement__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group_4__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getGroup_4_2()); }
+(rule__FigureElement__Group_4_2__0)?
+{ after(grammarAccess.getFigureElementAccess().getGroup_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__FigureElement__Group_4_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group_4_2__0__Impl
+	rule__FigureElement__Group_4_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group_4_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getCommaKeyword_4_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getFigureElementAccess().getCommaKeyword_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FigureElement__Group_4_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group_4_2__1__Impl
+	rule__FigureElement__Group_4_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group_4_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getRequiredWidthAssignment_4_2_1()); }
+(rule__FigureElement__RequiredWidthAssignment_4_2_1)
+{ after(grammarAccess.getFigureElementAccess().getRequiredWidthAssignment_4_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FigureElement__Group_4_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group_4_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group_4_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getGroup_4_2_2()); }
+(rule__FigureElement__Group_4_2_2__0)?
+{ after(grammarAccess.getFigureElementAccess().getGroup_4_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__FigureElement__Group_4_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group_4_2_2__0__Impl
+	rule__FigureElement__Group_4_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group_4_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getCommaKeyword_4_2_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getFigureElementAccess().getCommaKeyword_4_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FigureElement__Group_4_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureElement__Group_4_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__Group_4_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getRequiredHeightAssignment_4_2_2_1()); }
+(rule__FigureElement__RequiredHeightAssignment_4_2_2_1)
+{ after(grammarAccess.getFigureElementAccess().getRequiredHeightAssignment_4_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__FigureRefElement__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureRefElement__Group__0__Impl
+	rule__FigureRefElement__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureRefElement__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureRefElementAccess().getFigureRefKeyword_0()); }
+
+	'figureRef' 
+
+{ after(grammarAccess.getFigureRefElementAccess().getFigureRefKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FigureRefElement__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureRefElement__Group__1__Impl
+	rule__FigureRefElement__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureRefElement__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureRefElementAccess().getLeftSquareBracketKeyword_1()); }
+
+	'[' 
+
+{ after(grammarAccess.getFigureRefElementAccess().getLeftSquareBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FigureRefElement__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureRefElement__Group__2__Impl
+	rule__FigureRefElement__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureRefElement__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureRefElementAccess().getRefAssignment_2()); }
+(rule__FigureRefElement__RefAssignment_2)
+{ after(grammarAccess.getFigureRefElementAccess().getRefAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FigureRefElement__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FigureRefElement__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureRefElement__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureRefElementAccess().getRightSquareBracketKeyword_3()); }
+
+	']' 
+
+{ after(grammarAccess.getFigureRefElementAccess().getRightSquareBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__FootnoteElement__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FootnoteElement__Group__0__Impl
+	rule__FootnoteElement__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FootnoteElement__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFootnoteElementAccess().getFootnoteElementAction_0()); }
+(
+
+)
+{ after(grammarAccess.getFootnoteElementAccess().getFootnoteElementAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FootnoteElement__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FootnoteElement__Group__1__Impl
+	rule__FootnoteElement__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FootnoteElement__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFootnoteElementAccess().getFootnoteKeyword_1()); }
+
+	'footnote' 
+
+{ after(grammarAccess.getFootnoteElementAccess().getFootnoteKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FootnoteElement__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FootnoteElement__Group__2__Impl
+	rule__FootnoteElement__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FootnoteElement__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFootnoteElementAccess().getLeftSquareBracketKeyword_2()); }
+
+	'[' 
+
+{ after(grammarAccess.getFootnoteElementAccess().getLeftSquareBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FootnoteElement__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FootnoteElement__Group__3__Impl
+	rule__FootnoteElement__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FootnoteElement__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFootnoteElementAccess().getElementsAssignment_3()); }
+(rule__FootnoteElement__ElementsAssignment_3)*
+{ after(grammarAccess.getFootnoteElementAccess().getElementsAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FootnoteElement__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FootnoteElement__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FootnoteElement__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFootnoteElementAccess().getRightSquareBracketKeyword_4()); }
+
+	']' 
+
+{ after(grammarAccess.getFootnoteElementAccess().getRightSquareBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__HeadingElement__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HeadingElement__Group__0__Impl
+	rule__HeadingElement__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HeadingElement__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHeadingElementAccess().getHeadingElementAction_0()); }
+(
+
+)
+{ after(grammarAccess.getHeadingElementAccess().getHeadingElementAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HeadingElement__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HeadingElement__Group__1__Impl
+	rule__HeadingElement__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HeadingElement__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHeadingElementAccess().getHeadingKeyword_1()); }
+
+	'heading' 
+
+{ after(grammarAccess.getHeadingElementAccess().getHeadingKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HeadingElement__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HeadingElement__Group__2__Impl
+	rule__HeadingElement__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HeadingElement__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHeadingElementAccess().getGroup_2()); }
+(rule__HeadingElement__Group_2__0)?
+{ after(grammarAccess.getHeadingElementAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HeadingElement__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HeadingElement__Group__3__Impl
+	rule__HeadingElement__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HeadingElement__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHeadingElementAccess().getLeftSquareBracketKeyword_3()); }
+
+	'[' 
+
+{ after(grammarAccess.getHeadingElementAccess().getLeftSquareBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HeadingElement__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HeadingElement__Group__4__Impl
+	rule__HeadingElement__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HeadingElement__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHeadingElementAccess().getElementsAssignment_4()); }
+(rule__HeadingElement__ElementsAssignment_4)*
+{ after(grammarAccess.getHeadingElementAccess().getElementsAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HeadingElement__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HeadingElement__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HeadingElement__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHeadingElementAccess().getRightSquareBracketKeyword_5()); }
+
+	']' 
+
+{ after(grammarAccess.getHeadingElementAccess().getRightSquareBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__HeadingElement__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HeadingElement__Group_2__0__Impl
+	rule__HeadingElement__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HeadingElement__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHeadingElementAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getHeadingElementAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__HeadingElement__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__HeadingElement__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HeadingElement__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHeadingElementAccess().getLevelAssignment_2_1()); }
+(rule__HeadingElement__LevelAssignment_2_1)
+{ after(grammarAccess.getHeadingElementAccess().getLevelAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NullElement__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NullElement__Group__0__Impl
+	rule__NullElement__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NullElement__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNullElementAccess().getNullElementAction_0()); }
+(
+
+)
+{ after(grammarAccess.getNullElementAccess().getNullElementAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NullElement__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NullElement__Group__1__Impl
+	rule__NullElement__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NullElement__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNullElementAccess().getLeftSquareBracketKeyword_1()); }
+
+	'[' 
+
+{ after(grammarAccess.getNullElementAccess().getLeftSquareBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NullElement__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NullElement__Group__2__Impl
+	rule__NullElement__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NullElement__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNullElementAccess().getElementsAssignment_2()); }
+(rule__NullElement__ElementsAssignment_2)*
+{ after(grammarAccess.getNullElementAccess().getElementsAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NullElement__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NullElement__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NullElement__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNullElementAccess().getRightSquareBracketKeyword_3()); }
+
+	']' 
+
+{ after(grammarAccess.getNullElementAccess().getRightSquareBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__OCLCodeElement__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLCodeElement__Group__0__Impl
+	rule__OCLCodeElement__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLCodeElement__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLCodeElementAccess().getOCLCodeElementAction_0()); }
+(
+
+)
+{ after(grammarAccess.getOCLCodeElementAccess().getOCLCodeElementAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OCLCodeElement__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLCodeElement__Group__1__Impl
+	rule__OCLCodeElement__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLCodeElement__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLCodeElementAccess().getOclCodeKeyword_1()); }
+
+	'oclCode' 
+
+{ after(grammarAccess.getOCLCodeElementAccess().getOclCodeKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OCLCodeElement__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLCodeElement__Group__2__Impl
+	rule__OCLCodeElement__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLCodeElement__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLCodeElementAccess().getLeftSquareBracketKeyword_2()); }
+
+	'[' 
+
+{ after(grammarAccess.getOCLCodeElementAccess().getLeftSquareBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OCLCodeElement__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLCodeElement__Group__3__Impl
+	rule__OCLCodeElement__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLCodeElement__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLCodeElementAccess().getElementsAssignment_3()); }
+(rule__OCLCodeElement__ElementsAssignment_3)*
+{ after(grammarAccess.getOCLCodeElementAccess().getElementsAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OCLCodeElement__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLCodeElement__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLCodeElement__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLCodeElementAccess().getRightSquareBracketKeyword_4()); }
+
+	']' 
+
+{ after(grammarAccess.getOCLCodeElementAccess().getRightSquareBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__OCLEvalElement__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLEvalElement__Group__0__Impl
+	rule__OCLEvalElement__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLEvalElement__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLEvalElementAccess().getOCLEvalElementAction_0()); }
+(
+
+)
+{ after(grammarAccess.getOCLEvalElementAccess().getOCLEvalElementAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OCLEvalElement__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLEvalElement__Group__1__Impl
+	rule__OCLEvalElement__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLEvalElement__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLEvalElementAccess().getOclEvalKeyword_1()); }
+
+	'oclEval' 
+
+{ after(grammarAccess.getOCLEvalElementAccess().getOclEvalKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OCLEvalElement__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLEvalElement__Group__2__Impl
+	rule__OCLEvalElement__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLEvalElement__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLEvalElementAccess().getLeftSquareBracketKeyword_2()); }
+
+	'[' 
+
+{ after(grammarAccess.getOCLEvalElementAccess().getLeftSquareBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OCLEvalElement__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLEvalElement__Group__3__Impl
+	rule__OCLEvalElement__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLEvalElement__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLEvalElementAccess().getElementsAssignment_3()); }
+(rule__OCLEvalElement__ElementsAssignment_3)*
+{ after(grammarAccess.getOCLEvalElementAccess().getElementsAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OCLEvalElement__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLEvalElement__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLEvalElement__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLEvalElementAccess().getRightSquareBracketKeyword_4()); }
+
+	']' 
+
+{ after(grammarAccess.getOCLEvalElementAccess().getRightSquareBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__OCLTextElement__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLTextElement__Group__0__Impl
+	rule__OCLTextElement__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLTextElement__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLTextElementAccess().getOCLTextElementAction_0()); }
+(
+
+)
+{ after(grammarAccess.getOCLTextElementAccess().getOCLTextElementAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OCLTextElement__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLTextElement__Group__1__Impl
+	rule__OCLTextElement__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLTextElement__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLTextElementAccess().getOclTextKeyword_1()); }
+
+	'oclText' 
+
+{ after(grammarAccess.getOCLTextElementAccess().getOclTextKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OCLTextElement__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLTextElement__Group__2__Impl
+	rule__OCLTextElement__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLTextElement__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLTextElementAccess().getLeftSquareBracketKeyword_2()); }
+
+	'[' 
+
+{ after(grammarAccess.getOCLTextElementAccess().getLeftSquareBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OCLTextElement__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLTextElement__Group__3__Impl
+	rule__OCLTextElement__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLTextElement__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLTextElementAccess().getElementsAssignment_3()); }
+(rule__OCLTextElement__ElementsAssignment_3)*
+{ after(grammarAccess.getOCLTextElementAccess().getElementsAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OCLTextElement__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OCLTextElement__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLTextElement__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLTextElementAccess().getRightSquareBracketKeyword_4()); }
+
+	']' 
+
+{ after(grammarAccess.getOCLTextElementAccess().getRightSquareBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Markup__ElementsAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMarkupAccess().getElementsMarkupElementParserRuleCall_0()); }
+	ruleMarkupElement{ after(grammarAccess.getMarkupAccess().getElementsMarkupElementParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BulletElement__LevelAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBulletElementAccess().getLevelINTTerminalRuleCall_2_1_0()); }
+	RULE_INT{ after(grammarAccess.getBulletElementAccess().getLevelINTTerminalRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BulletElement__ElementsAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBulletElementAccess().getElementsMarkupElementParserRuleCall_4_0()); }
+	ruleMarkupElement{ after(grammarAccess.getBulletElementAccess().getElementsMarkupElementParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FontElement__FontAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFontElementAccess().getFontAlternatives_0_0()); }
+(rule__FontElement__FontAlternatives_0_0)
+{ after(grammarAccess.getFontElementAccess().getFontAlternatives_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FontElement__ElementsAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFontElementAccess().getElementsMarkupElementParserRuleCall_2_0()); }
+	ruleMarkupElement{ after(grammarAccess.getFontElementAccess().getElementsMarkupElementParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__DefAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getDefIDTerminalRuleCall_1_1_0()); }
+	RULE_ID{ after(grammarAccess.getFigureElementAccess().getDefIDTerminalRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__SrcAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getSrcSTRINGTerminalRuleCall_3_0()); }
+	RULE_STRING{ after(grammarAccess.getFigureElementAccess().getSrcSTRINGTerminalRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__AltAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getAltSTRINGTerminalRuleCall_4_1_0()); }
+	RULE_STRING{ after(grammarAccess.getFigureElementAccess().getAltSTRINGTerminalRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__RequiredWidthAssignment_4_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getRequiredWidthINTTerminalRuleCall_4_2_1_0()); }
+	RULE_INT{ after(grammarAccess.getFigureElementAccess().getRequiredWidthINTTerminalRuleCall_4_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureElement__RequiredHeightAssignment_4_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureElementAccess().getRequiredHeightINTTerminalRuleCall_4_2_2_1_0()); }
+	RULE_INT{ after(grammarAccess.getFigureElementAccess().getRequiredHeightINTTerminalRuleCall_4_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FigureRefElement__RefAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFigureRefElementAccess().getRefFigureElementCrossReference_2_0()); }
+(
+{ before(grammarAccess.getFigureRefElementAccess().getRefFigureElementIDTerminalRuleCall_2_0_1()); }
+	RULE_ID{ after(grammarAccess.getFigureRefElementAccess().getRefFigureElementIDTerminalRuleCall_2_0_1()); }
+)
+{ after(grammarAccess.getFigureRefElementAccess().getRefFigureElementCrossReference_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FootnoteElement__ElementsAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFootnoteElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }
+	ruleMarkupElement{ after(grammarAccess.getFootnoteElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HeadingElement__LevelAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHeadingElementAccess().getLevelINTTerminalRuleCall_2_1_0()); }
+	RULE_INT{ after(grammarAccess.getHeadingElementAccess().getLevelINTTerminalRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HeadingElement__ElementsAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHeadingElementAccess().getElementsMarkupElementParserRuleCall_4_0()); }
+	ruleMarkupElement{ after(grammarAccess.getHeadingElementAccess().getElementsMarkupElementParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NewLineElement__TextAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNewLineElementAccess().getTextNLTerminalRuleCall_0()); }
+	RULE_NL{ after(grammarAccess.getNewLineElementAccess().getTextNLTerminalRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NullElement__ElementsAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNullElementAccess().getElementsMarkupElementParserRuleCall_2_0()); }
+	ruleMarkupElement{ after(grammarAccess.getNullElementAccess().getElementsMarkupElementParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLCodeElement__ElementsAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLCodeElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }
+	ruleMarkupElement{ after(grammarAccess.getOCLCodeElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLEvalElement__ElementsAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLEvalElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }
+	ruleMarkupElement{ after(grammarAccess.getOCLEvalElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OCLTextElement__ElementsAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOCLTextElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }
+	ruleMarkupElement{ after(grammarAccess.getOCLTextElementAccess().getElementsMarkupElementParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TextElement__TextAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTextElementAccess().getTextAlternatives_0_0()); }
+(rule__TextElement__TextAlternatives_0_0)
+{ after(grammarAccess.getTextElementAccess().getTextAlternatives_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TextElement__TextAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTextElementAccess().getTextMarkupKeywordParserRuleCall_1_0()); }
+	ruleMarkupKeyword{ after(grammarAccess.getTextElementAccess().getTextMarkupKeywordParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+fragment RULE_NUMBER : '0'..'9';
+
+fragment RULE_LETTER : ('a'..'z'|'A'..'Z'|'_');
+
+fragment RULE_ESCAPED : '\\' ('b'|'t'|'n'|'f'|'r'|'"'|'\''|'\\'|'<'|'>'|'['|']');
+
+fragment RULE_VERTICAL_WS : ('\n'|'\r');
+
+fragment RULE_HORIZONTAL_WS : (' '|'\t');
+
+RULE_INT : RULE_NUMBER+;
+
+RULE_STRING : '"' (RULE_ESCAPED|~(('\\'|'"')))* '"';
+
+RULE_ID : RULE_LETTER (RULE_LETTER|RULE_NUMBER)*;
+
+RULE_WORD : (RULE_ESCAPED|~(('\\'|'"'|'['|']'|':'|'#'|','|RULE_HORIZONTAL_WS|RULE_VERTICAL_WS)))+;
+
+RULE_NL : (RULE_HORIZONTAL_WS* RULE_VERTICAL_WS)+;
+
+RULE_WS : RULE_HORIZONTAL_WS+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/antlr/internal/InternalMarkup.tokens b/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/antlr/internal/InternalMarkup.tokens
index 9b67f98..e8231f6 100644
--- a/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/antlr/internal/InternalMarkup.tokens
+++ b/plugins/org.eclipse.ocl.xtext.markup.ui/src-gen/org/eclipse/ocl/xtext/markup/ui/contentassist/antlr/internal/InternalMarkup.tokens
@@ -1,42 +1,42 @@
-'#'=27

-','=28

-':'=26

-'['=29

-']'=30

-'b'=16

-'bullet'=18

-'e'=17

-'figure'=19

-'figureRef'=20

-'footnote'=21

-'heading'=22

-'oclCode'=23

-'oclEval'=24

-'oclText'=25

-RULE_ANY_OTHER=15

-RULE_ESCAPED=12

-RULE_HORIZONTAL_WS=14

-RULE_ID=4

-RULE_INT=6

-RULE_LETTER=11

-RULE_NL=9

-RULE_NUMBER=10

-RULE_STRING=8

-RULE_VERTICAL_WS=13

-RULE_WORD=5

-RULE_WS=7

-T__16=16

-T__17=17

-T__18=18

-T__19=19

-T__20=20

-T__21=21

-T__22=22

-T__23=23

-T__24=24

-T__25=25

-T__26=26

-T__27=27

-T__28=28

-T__29=29

-T__30=30

+'#'=27
+','=28
+':'=26
+'['=29
+']'=30
+'b'=16
+'bullet'=18
+'e'=17
+'figure'=19
+'figureRef'=20
+'footnote'=21
+'heading'=22
+'oclCode'=23
+'oclEval'=24
+'oclText'=25
+RULE_ANY_OTHER=15
+RULE_ESCAPED=12
+RULE_HORIZONTAL_WS=14
+RULE_ID=4
+RULE_INT=6
+RULE_LETTER=11
+RULE_NL=9
+RULE_NUMBER=10
+RULE_STRING=8
+RULE_VERTICAL_WS=13
+RULE_WORD=5
+RULE_WS=7
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
diff --git a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/AbstractMarkupRuntimeModule.java b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/AbstractMarkupRuntimeModule.java
index 4060156..81cd7d1 100644
--- a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/AbstractMarkupRuntimeModule.java
+++ b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/AbstractMarkupRuntimeModule.java
@@ -6,7 +6,6 @@
 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;
@@ -14,8 +13,8 @@
 /**
  * Manual modifications go to {org.eclipse.ocl.xtext.markup.MarkupRuntimeModule}
  */
- @SuppressWarnings("all")
-public abstract class AbstractMarkupRuntimeModule extends DefaultRuntimeModule {
+@SuppressWarnings("all")
+public abstract class AbstractMarkupRuntimeModule extends org.eclipse.xtext.service.DefaultRuntimeModule {
 
 	protected Properties properties = null;
 
diff --git a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/MarkupStandaloneSetupGenerated.java b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/MarkupStandaloneSetupGenerated.java
index 4b9b632..48ac9cf 100644
--- a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/MarkupStandaloneSetupGenerated.java
+++ b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/MarkupStandaloneSetupGenerated.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.markup;
 
 import org.eclipse.emf.ecore.EPackage;
@@ -16,6 +16,7 @@
 @SuppressWarnings("all")
 public class MarkupStandaloneSetupGenerated implements ISetup {
 
+	@Override
 	public Injector createInjectorAndDoEMFRegistration() {
 		// register default ePackages
 		if (!Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().containsKey("ecore"))
diff --git a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/MarkupAntlrTokenFileProvider.java b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/MarkupAntlrTokenFileProvider.java
index cb4c7e8..daa1d47 100644
--- a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/MarkupAntlrTokenFileProvider.java
+++ b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/MarkupAntlrTokenFileProvider.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.markup.parser.antlr;
 
 import java.io.InputStream;
diff --git a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/MarkupParser.java b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/MarkupParser.java
index a3dd524..33b063d 100644
--- a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/MarkupParser.java
+++ b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/MarkupParser.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.markup.parser.antlr;
 
 import com.google.inject.Inject;
diff --git a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/internal/InternalMarkup.g b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/internal/InternalMarkup.g
index e17c93f..1611e84 100644
--- a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/internal/InternalMarkup.g
+++ b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/internal/InternalMarkup.g
@@ -1,1307 +1,1307 @@
-/*

-* generated by Xtext

-*/

-grammar InternalMarkup;

-

-options {

-	superClass=AbstractInternalAntlrParser;

-	backtrack=true;

-	

-}

-

-@lexer::header {

-package org.eclipse.ocl.xtext.markup.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.ocl.xtext.markup.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.ocl.xtext.markup.services.MarkupGrammarAccess;

-

-}

-

-@parser::members {

-

-/*

-  This grammar contains a lot of empty actions to work around a bug in ANTLR.

-  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.

-*/

- 

- 	private MarkupGrammarAccess grammarAccess;

- 	

-    public InternalMarkupParser(TokenStream input, MarkupGrammarAccess grammarAccess) {

-        this(input);

-        this.grammarAccess = grammarAccess;

-        registerRules(grammarAccess.getGrammar());

-    }

-    

-    @Override

-    protected String getFirstRuleName() {

-    	return "Markup";	

-   	}

-   	

-   	@Override

-   	protected MarkupGrammarAccess getGrammarAccess() {

-   		return grammarAccess;

-   	}

-}

-

-@rulecatch { 

-    catch (RecognitionException re) { 

-        recover(input,re); 

-        appendSkippedTokens();

-    } 

-}

-

-

-

-

-// Entry rule entryRuleMarkup

-entryRuleMarkup returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMarkupRule()); }

-	 iv_ruleMarkup=ruleMarkup 

-	 { $current=$iv_ruleMarkup.current; } 

-	 EOF 

-;

-

-// Rule Markup

-ruleMarkup returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getMarkupAccess().getElementsMarkupElementParserRuleCall_0()); 

-	    }

-		lv_elements_0_0=ruleMarkupElement		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getMarkupRule());

-	        }

-       		add(

-       			$current, 

-       			"elements",

-        		lv_elements_0_0, 

-        		"MarkupElement");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*

-;

-

-

-

-

-

-// Entry rule entryRuleMarkupKeyword

-entryRuleMarkupKeyword returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMarkupKeywordRule()); } 

-	 iv_ruleMarkupKeyword=ruleMarkupKeyword 

-	 { $current=$iv_ruleMarkupKeyword.current.getText(); }  

-	 EOF 

-;

-

-// Rule MarkupKeyword

-ruleMarkupKeyword returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='b' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getBKeyword_0()); 

-    }

-

-    |

-	kw='e' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getEKeyword_1()); 

-    }

-

-    |

-	kw='bullet' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getBulletKeyword_2()); 

-    }

-

-    |

-	kw='figure' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getFigureKeyword_3()); 

-    }

-

-    |

-	kw='figureRef' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getFigureRefKeyword_4()); 

-    }

-

-    |

-	kw='footnote' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getFootnoteKeyword_5()); 

-    }

-

-    |

-	kw='heading' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getHeadingKeyword_6()); 

-    }

-

-    |

-	kw='oclCode' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getOclCodeKeyword_7()); 

-    }

-

-    |

-	kw='oclEval' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getOclEvalKeyword_8()); 

-    }

-

-    |

-	kw='oclText' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getOclTextKeyword_9()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleMarkupElement

-entryRuleMarkupElement returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMarkupElementRule()); }

-	 iv_ruleMarkupElement=ruleMarkupElement 

-	 { $current=$iv_ruleMarkupElement.current; } 

-	 EOF 

-;

-

-// Rule MarkupElement

-ruleMarkupElement returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMarkupElementAccess().getFontElementParserRuleCall_0()); 

-    }

-    this_FontElement_0=ruleFontElement

-    { 

-        $current = $this_FontElement_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMarkupElementAccess().getNewLineElementParserRuleCall_1()); 

-    }

-    this_NewLineElement_1=ruleNewLineElement

-    { 

-        $current = $this_NewLineElement_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMarkupElementAccess().getBulletElementParserRuleCall_2()); 

-    }

-    this_BulletElement_2=ruleBulletElement

-    { 

-        $current = $this_BulletElement_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMarkupElementAccess().getFigureElementParserRuleCall_3()); 

-    }

-    this_FigureElement_3=ruleFigureElement

-    { 

-        $current = $this_FigureElement_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMarkupElementAccess().getFigureRefElementParserRuleCall_4()); 

-    }

-    this_FigureRefElement_4=ruleFigureRefElement

-    { 

-        $current = $this_FigureRefElement_4.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMarkupElementAccess().getFootnoteElementParserRuleCall_5()); 

-    }

-    this_FootnoteElement_5=ruleFootnoteElement

-    { 

-        $current = $this_FootnoteElement_5.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMarkupElementAccess().getHeadingElementParserRuleCall_6()); 

-    }

-    this_HeadingElement_6=ruleHeadingElement

-    { 

-        $current = $this_HeadingElement_6.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMarkupElementAccess().getNullElementParserRuleCall_7()); 

-    }

-    this_NullElement_7=ruleNullElement

-    { 

-        $current = $this_NullElement_7.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMarkupElementAccess().getOCLCodeElementParserRuleCall_8()); 

-    }

-    this_OCLCodeElement_8=ruleOCLCodeElement

-    { 

-        $current = $this_OCLCodeElement_8.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMarkupElementAccess().getOCLEvalElementParserRuleCall_9()); 

-    }

-    this_OCLEvalElement_9=ruleOCLEvalElement

-    { 

-        $current = $this_OCLEvalElement_9.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMarkupElementAccess().getOCLTextElementParserRuleCall_10()); 

-    }

-    this_OCLTextElement_10=ruleOCLTextElement

-    { 

-        $current = $this_OCLTextElement_10.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMarkupElementAccess().getTextElementParserRuleCall_11()); 

-    }

-    this_TextElement_11=ruleTextElement

-    { 

-        $current = $this_TextElement_11.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleBulletElement

-entryRuleBulletElement returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getBulletElementRule()); }

-	 iv_ruleBulletElement=ruleBulletElement 

-	 { $current=$iv_ruleBulletElement.current; } 

-	 EOF 

-;

-

-// Rule BulletElement

-ruleBulletElement returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getBulletElementAccess().getBulletElementAction_0(),

-            $current);

-    }

-)	otherlv_1='bullet' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getBulletElementAccess().getBulletKeyword_1());

-    }

-(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getBulletElementAccess().getColonKeyword_2_0());

-    }

-(

-(

-		lv_level_3_0=RULE_INT

-		{

-			newLeafNode(lv_level_3_0, grammarAccess.getBulletElementAccess().getLevelINTTerminalRuleCall_2_1_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getBulletElementRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"level",

-        		lv_level_3_0, 

-        		"INT");

-	    }

-

-)

-))?	otherlv_4='[' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getBulletElementAccess().getLeftSquareBracketKeyword_3());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getBulletElementAccess().getElementsMarkupElementParserRuleCall_4_0()); 

-	    }

-		lv_elements_5_0=ruleMarkupElement		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getBulletElementRule());

-	        }

-       		add(

-       			$current, 

-       			"elements",

-        		lv_elements_5_0, 

-        		"MarkupElement");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_6=']' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getBulletElementAccess().getRightSquareBracketKeyword_5());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleFontElement

-entryRuleFontElement returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getFontElementRule()); }

-	 iv_ruleFontElement=ruleFontElement 

-	 { $current=$iv_ruleFontElement.current; } 

-	 EOF 

-;

-

-// Rule FontElement

-ruleFontElement returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-(

-		lv_font_0_1=	'b' 

-    {

-        newLeafNode(lv_font_0_1, grammarAccess.getFontElementAccess().getFontBKeyword_0_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getFontElementRule());

-	        }

-       		setWithLastConsumed($current, "font", lv_font_0_1, null);

-	    }

-

-    |		lv_font_0_2=	'e' 

-    {

-        newLeafNode(lv_font_0_2, grammarAccess.getFontElementAccess().getFontEKeyword_0_0_1());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getFontElementRule());

-	        }

-       		setWithLastConsumed($current, "font", lv_font_0_2, null);

-	    }

-

-)

-

-)

-)	otherlv_1='[' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getFontElementAccess().getLeftSquareBracketKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getFontElementAccess().getElementsMarkupElementParserRuleCall_2_0()); 

-	    }

-		lv_elements_2_0=ruleMarkupElement		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getFontElementRule());

-	        }

-       		add(

-       			$current, 

-       			"elements",

-        		lv_elements_2_0, 

-        		"MarkupElement");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_3=']' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getFontElementAccess().getRightSquareBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleFigureElement

-entryRuleFigureElement returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getFigureElementRule()); }

-	 iv_ruleFigureElement=ruleFigureElement 

-	 { $current=$iv_ruleFigureElement.current; } 

-	 EOF 

-;

-

-// Rule FigureElement

-ruleFigureElement returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='figure' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getFigureElementAccess().getFigureKeyword_0());

-    }

-(	otherlv_1='#' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getFigureElementAccess().getNumberSignKeyword_1_0());

-    }

-(

-(

-		lv_def_2_0=RULE_ID

-		{

-			newLeafNode(lv_def_2_0, grammarAccess.getFigureElementAccess().getDefIDTerminalRuleCall_1_1_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getFigureElementRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"def",

-        		lv_def_2_0, 

-        		"ID");

-	    }

-

-)

-))?	otherlv_3='[' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getFigureElementAccess().getLeftSquareBracketKeyword_2());

-    }

-(

-(

-		lv_src_4_0=RULE_STRING

-		{

-			newLeafNode(lv_src_4_0, grammarAccess.getFigureElementAccess().getSrcSTRINGTerminalRuleCall_3_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getFigureElementRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"src",

-        		lv_src_4_0, 

-        		"STRING");

-	    }

-

-)

-)(	otherlv_5=',' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getFigureElementAccess().getCommaKeyword_4_0());

-    }

-(

-(

-		lv_alt_6_0=RULE_STRING

-		{

-			newLeafNode(lv_alt_6_0, grammarAccess.getFigureElementAccess().getAltSTRINGTerminalRuleCall_4_1_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getFigureElementRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"alt",

-        		lv_alt_6_0, 

-        		"STRING");

-	    }

-

-)

-)(	otherlv_7=',' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getFigureElementAccess().getCommaKeyword_4_2_0());

-    }

-(

-(

-		lv_requiredWidth_8_0=RULE_INT

-		{

-			newLeafNode(lv_requiredWidth_8_0, grammarAccess.getFigureElementAccess().getRequiredWidthINTTerminalRuleCall_4_2_1_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getFigureElementRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"requiredWidth",

-        		lv_requiredWidth_8_0, 

-        		"INT");

-	    }

-

-)

-)(	otherlv_9=',' 

-    {

-    	newLeafNode(otherlv_9, grammarAccess.getFigureElementAccess().getCommaKeyword_4_2_2_0());

-    }

-(

-(

-		lv_requiredHeight_10_0=RULE_INT

-		{

-			newLeafNode(lv_requiredHeight_10_0, grammarAccess.getFigureElementAccess().getRequiredHeightINTTerminalRuleCall_4_2_2_1_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getFigureElementRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"requiredHeight",

-        		lv_requiredHeight_10_0, 

-        		"INT");

-	    }

-

-)

-))?)?)?	otherlv_11=']' 

-    {

-    	newLeafNode(otherlv_11, grammarAccess.getFigureElementAccess().getRightSquareBracketKeyword_5());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleFigureRefElement

-entryRuleFigureRefElement returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getFigureRefElementRule()); }

-	 iv_ruleFigureRefElement=ruleFigureRefElement 

-	 { $current=$iv_ruleFigureRefElement.current; } 

-	 EOF 

-;

-

-// Rule FigureRefElement

-ruleFigureRefElement returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='figureRef' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getFigureRefElementAccess().getFigureRefKeyword_0());

-    }

-	otherlv_1='[' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getFigureRefElementAccess().getLeftSquareBracketKeyword_1());

-    }

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getFigureRefElementRule());

-	        }

-        }

-	otherlv_2=RULE_ID

-	{

-		newLeafNode(otherlv_2, grammarAccess.getFigureRefElementAccess().getRefFigureElementCrossReference_2_0()); 

-	}

-

-)

-)	otherlv_3=']' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getFigureRefElementAccess().getRightSquareBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleFootnoteElement

-entryRuleFootnoteElement returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getFootnoteElementRule()); }

-	 iv_ruleFootnoteElement=ruleFootnoteElement 

-	 { $current=$iv_ruleFootnoteElement.current; } 

-	 EOF 

-;

-

-// Rule FootnoteElement

-ruleFootnoteElement returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getFootnoteElementAccess().getFootnoteElementAction_0(),

-            $current);

-    }

-)	otherlv_1='footnote' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getFootnoteElementAccess().getFootnoteKeyword_1());

-    }

-	otherlv_2='[' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getFootnoteElementAccess().getLeftSquareBracketKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getFootnoteElementAccess().getElementsMarkupElementParserRuleCall_3_0()); 

-	    }

-		lv_elements_3_0=ruleMarkupElement		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getFootnoteElementRule());

-	        }

-       		add(

-       			$current, 

-       			"elements",

-        		lv_elements_3_0, 

-        		"MarkupElement");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_4=']' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getFootnoteElementAccess().getRightSquareBracketKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleHeadingElement

-entryRuleHeadingElement returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getHeadingElementRule()); }

-	 iv_ruleHeadingElement=ruleHeadingElement 

-	 { $current=$iv_ruleHeadingElement.current; } 

-	 EOF 

-;

-

-// Rule HeadingElement

-ruleHeadingElement returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getHeadingElementAccess().getHeadingElementAction_0(),

-            $current);

-    }

-)	otherlv_1='heading' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getHeadingElementAccess().getHeadingKeyword_1());

-    }

-(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getHeadingElementAccess().getColonKeyword_2_0());

-    }

-(

-(

-		lv_level_3_0=RULE_INT

-		{

-			newLeafNode(lv_level_3_0, grammarAccess.getHeadingElementAccess().getLevelINTTerminalRuleCall_2_1_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getHeadingElementRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"level",

-        		lv_level_3_0, 

-        		"INT");

-	    }

-

-)

-))?	otherlv_4='[' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getHeadingElementAccess().getLeftSquareBracketKeyword_3());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getHeadingElementAccess().getElementsMarkupElementParserRuleCall_4_0()); 

-	    }

-		lv_elements_5_0=ruleMarkupElement		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getHeadingElementRule());

-	        }

-       		add(

-       			$current, 

-       			"elements",

-        		lv_elements_5_0, 

-        		"MarkupElement");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_6=']' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getHeadingElementAccess().getRightSquareBracketKeyword_5());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNewLineElement

-entryRuleNewLineElement returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNewLineElementRule()); }

-	 iv_ruleNewLineElement=ruleNewLineElement 

-	 { $current=$iv_ruleNewLineElement.current; } 

-	 EOF 

-;

-

-// Rule NewLineElement

-ruleNewLineElement returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		lv_text_0_0=RULE_NL

-		{

-			newLeafNode(lv_text_0_0, grammarAccess.getNewLineElementAccess().getTextNLTerminalRuleCall_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNewLineElementRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"text",

-        		lv_text_0_0, 

-        		"NL");

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNullElement

-entryRuleNullElement returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNullElementRule()); }

-	 iv_ruleNullElement=ruleNullElement 

-	 { $current=$iv_ruleNullElement.current; } 

-	 EOF 

-;

-

-// Rule NullElement

-ruleNullElement returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getNullElementAccess().getNullElementAction_0(),

-            $current);

-    }

-)	otherlv_1='[' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getNullElementAccess().getLeftSquareBracketKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNullElementAccess().getElementsMarkupElementParserRuleCall_2_0()); 

-	    }

-		lv_elements_2_0=ruleMarkupElement		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNullElementRule());

-	        }

-       		add(

-       			$current, 

-       			"elements",

-        		lv_elements_2_0, 

-        		"MarkupElement");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_3=']' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getNullElementAccess().getRightSquareBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleOCLCodeElement

-entryRuleOCLCodeElement returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getOCLCodeElementRule()); }

-	 iv_ruleOCLCodeElement=ruleOCLCodeElement 

-	 { $current=$iv_ruleOCLCodeElement.current; } 

-	 EOF 

-;

-

-// Rule OCLCodeElement

-ruleOCLCodeElement returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getOCLCodeElementAccess().getOCLCodeElementAction_0(),

-            $current);

-    }

-)	otherlv_1='oclCode' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getOCLCodeElementAccess().getOclCodeKeyword_1());

-    }

-	otherlv_2='[' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getOCLCodeElementAccess().getLeftSquareBracketKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOCLCodeElementAccess().getElementsMarkupElementParserRuleCall_3_0()); 

-	    }

-		lv_elements_3_0=ruleMarkupElement		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOCLCodeElementRule());

-	        }

-       		add(

-       			$current, 

-       			"elements",

-        		lv_elements_3_0, 

-        		"MarkupElement");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_4=']' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getOCLCodeElementAccess().getRightSquareBracketKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleOCLEvalElement

-entryRuleOCLEvalElement returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getOCLEvalElementRule()); }

-	 iv_ruleOCLEvalElement=ruleOCLEvalElement 

-	 { $current=$iv_ruleOCLEvalElement.current; } 

-	 EOF 

-;

-

-// Rule OCLEvalElement

-ruleOCLEvalElement returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getOCLEvalElementAccess().getOCLEvalElementAction_0(),

-            $current);

-    }

-)	otherlv_1='oclEval' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getOCLEvalElementAccess().getOclEvalKeyword_1());

-    }

-	otherlv_2='[' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getOCLEvalElementAccess().getLeftSquareBracketKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOCLEvalElementAccess().getElementsMarkupElementParserRuleCall_3_0()); 

-	    }

-		lv_elements_3_0=ruleMarkupElement		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOCLEvalElementRule());

-	        }

-       		add(

-       			$current, 

-       			"elements",

-        		lv_elements_3_0, 

-        		"MarkupElement");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_4=']' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getOCLEvalElementAccess().getRightSquareBracketKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleOCLTextElement

-entryRuleOCLTextElement returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getOCLTextElementRule()); }

-	 iv_ruleOCLTextElement=ruleOCLTextElement 

-	 { $current=$iv_ruleOCLTextElement.current; } 

-	 EOF 

-;

-

-// Rule OCLTextElement

-ruleOCLTextElement returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getOCLTextElementAccess().getOCLTextElementAction_0(),

-            $current);

-    }

-)	otherlv_1='oclText' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getOCLTextElementAccess().getOclTextKeyword_1());

-    }

-	otherlv_2='[' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getOCLTextElementAccess().getLeftSquareBracketKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOCLTextElementAccess().getElementsMarkupElementParserRuleCall_3_0()); 

-	    }

-		lv_elements_3_0=ruleMarkupElement		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOCLTextElementRule());

-	        }

-       		add(

-       			$current, 

-       			"elements",

-        		lv_elements_3_0, 

-        		"MarkupElement");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_4=']' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getOCLTextElementAccess().getRightSquareBracketKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTextElement

-entryRuleTextElement returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTextElementRule()); }

-	 iv_ruleTextElement=ruleTextElement 

-	 { $current=$iv_ruleTextElement.current; } 

-	 EOF 

-;

-

-// Rule TextElement

-ruleTextElement returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-(

-		lv_text_0_1=RULE_ID

-		{

-			newLeafNode(lv_text_0_1, grammarAccess.getTextElementAccess().getTextIDTerminalRuleCall_0_0_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getTextElementRule());

-	        }

-       		addWithLastConsumed(

-       			$current, 

-       			"text",

-        		lv_text_0_1, 

-        		"ID");

-	    }

-

-    |		lv_text_0_2=RULE_WORD

-		{

-			newLeafNode(lv_text_0_2, grammarAccess.getTextElementAccess().getTextWORDTerminalRuleCall_0_0_1()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getTextElementRule());

-	        }

-       		addWithLastConsumed(

-       			$current, 

-       			"text",

-        		lv_text_0_2, 

-        		"WORD");

-	    }

-

-    |		lv_text_0_3=RULE_INT

-		{

-			newLeafNode(lv_text_0_3, grammarAccess.getTextElementAccess().getTextINTTerminalRuleCall_0_0_2()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getTextElementRule());

-	        }

-       		addWithLastConsumed(

-       			$current, 

-       			"text",

-        		lv_text_0_3, 

-        		"INT");

-	    }

-

-    |		lv_text_0_4=RULE_WS

-		{

-			newLeafNode(lv_text_0_4, grammarAccess.getTextElementAccess().getTextWSTerminalRuleCall_0_0_3()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getTextElementRule());

-	        }

-       		addWithLastConsumed(

-       			$current, 

-       			"text",

-        		lv_text_0_4, 

-        		"WS");

-	    }

-

-    |		lv_text_0_5=	':' 

-    {

-        newLeafNode(lv_text_0_5, grammarAccess.getTextElementAccess().getTextColonKeyword_0_0_4());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getTextElementRule());

-	        }

-       		addWithLastConsumed($current, "text", lv_text_0_5, null);

-	    }

-

-    |		lv_text_0_6=	'#' 

-    {

-        newLeafNode(lv_text_0_6, grammarAccess.getTextElementAccess().getTextNumberSignKeyword_0_0_5());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getTextElementRule());

-	        }

-       		addWithLastConsumed($current, "text", lv_text_0_6, null);

-	    }

-

-    |		lv_text_0_7=	',' 

-    {

-        newLeafNode(lv_text_0_7, grammarAccess.getTextElementAccess().getTextCommaKeyword_0_0_6());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getTextElementRule());

-	        }

-       		addWithLastConsumed($current, "text", lv_text_0_7, null);

-	    }

-

-)

-

-)

-)+

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTextElementAccess().getTextMarkupKeywordParserRuleCall_1_0()); 

-	    }

-		lv_text_1_0=ruleMarkupKeyword		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTextElementRule());

-	        }

-       		add(

-       			$current, 

-       			"text",

-        		lv_text_1_0, 

-        		"MarkupKeyword");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-fragment RULE_NUMBER : '0'..'9';

-

-fragment RULE_LETTER : ('a'..'z'|'A'..'Z'|'_');

-

-fragment RULE_ESCAPED : '\\' ('b'|'t'|'n'|'f'|'r'|'"'|'\''|'\\'|'<'|'>'|'['|']');

-

-fragment RULE_VERTICAL_WS : ('\n'|'\r');

-

-fragment RULE_HORIZONTAL_WS : (' '|'\t');

-

-RULE_INT : RULE_NUMBER+;

-

-RULE_STRING : '"' (RULE_ESCAPED|~(('\\'|'"')))* '"';

-

-RULE_ID : RULE_LETTER (RULE_LETTER|RULE_NUMBER)*;

-

-RULE_WORD : (RULE_ESCAPED|~(('\\'|'"'|'['|']'|':'|'#'|','|RULE_HORIZONTAL_WS|RULE_VERTICAL_WS)))+;

-

-RULE_NL : (RULE_HORIZONTAL_WS* RULE_VERTICAL_WS)+;

-

-RULE_WS : RULE_HORIZONTAL_WS+;

-

-RULE_ANY_OTHER : .;

-

-

+/*
+ * generated by Xtext
+ */
+grammar InternalMarkup;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.ocl.xtext.markup.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.ocl.xtext.markup.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.ocl.xtext.markup.services.MarkupGrammarAccess;
+
+}
+
+@parser::members {
+
+/*
+  This grammar contains a lot of empty actions to work around a bug in ANTLR.
+  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.
+*/
+ 
+ 	private MarkupGrammarAccess grammarAccess;
+ 	
+    public InternalMarkupParser(TokenStream input, MarkupGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "Markup";	
+   	}
+   	
+   	@Override
+   	protected MarkupGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleMarkup
+entryRuleMarkup returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMarkupRule()); }
+	 iv_ruleMarkup=ruleMarkup 
+	 { $current=$iv_ruleMarkup.current; } 
+	 EOF 
+;
+
+// Rule Markup
+ruleMarkup returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMarkupAccess().getElementsMarkupElementParserRuleCall_0()); 
+	    }
+		lv_elements_0_0=ruleMarkupElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMarkupRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_0_0, 
+        		"MarkupElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*
+;
+
+
+
+
+
+// Entry rule entryRuleMarkupKeyword
+entryRuleMarkupKeyword returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMarkupKeywordRule()); } 
+	 iv_ruleMarkupKeyword=ruleMarkupKeyword 
+	 { $current=$iv_ruleMarkupKeyword.current.getText(); }  
+	 EOF 
+;
+
+// Rule MarkupKeyword
+ruleMarkupKeyword returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='b' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getBKeyword_0()); 
+    }
+
+    |
+	kw='e' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getEKeyword_1()); 
+    }
+
+    |
+	kw='bullet' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getBulletKeyword_2()); 
+    }
+
+    |
+	kw='figure' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getFigureKeyword_3()); 
+    }
+
+    |
+	kw='figureRef' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getFigureRefKeyword_4()); 
+    }
+
+    |
+	kw='footnote' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getFootnoteKeyword_5()); 
+    }
+
+    |
+	kw='heading' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getHeadingKeyword_6()); 
+    }
+
+    |
+	kw='oclCode' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getOclCodeKeyword_7()); 
+    }
+
+    |
+	kw='oclEval' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getOclEvalKeyword_8()); 
+    }
+
+    |
+	kw='oclText' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getMarkupKeywordAccess().getOclTextKeyword_9()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleMarkupElement
+entryRuleMarkupElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMarkupElementRule()); }
+	 iv_ruleMarkupElement=ruleMarkupElement 
+	 { $current=$iv_ruleMarkupElement.current; } 
+	 EOF 
+;
+
+// Rule MarkupElement
+ruleMarkupElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMarkupElementAccess().getFontElementParserRuleCall_0()); 
+    }
+    this_FontElement_0=ruleFontElement
+    { 
+        $current = $this_FontElement_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMarkupElementAccess().getNewLineElementParserRuleCall_1()); 
+    }
+    this_NewLineElement_1=ruleNewLineElement
+    { 
+        $current = $this_NewLineElement_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMarkupElementAccess().getBulletElementParserRuleCall_2()); 
+    }
+    this_BulletElement_2=ruleBulletElement
+    { 
+        $current = $this_BulletElement_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMarkupElementAccess().getFigureElementParserRuleCall_3()); 
+    }
+    this_FigureElement_3=ruleFigureElement
+    { 
+        $current = $this_FigureElement_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMarkupElementAccess().getFigureRefElementParserRuleCall_4()); 
+    }
+    this_FigureRefElement_4=ruleFigureRefElement
+    { 
+        $current = $this_FigureRefElement_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMarkupElementAccess().getFootnoteElementParserRuleCall_5()); 
+    }
+    this_FootnoteElement_5=ruleFootnoteElement
+    { 
+        $current = $this_FootnoteElement_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMarkupElementAccess().getHeadingElementParserRuleCall_6()); 
+    }
+    this_HeadingElement_6=ruleHeadingElement
+    { 
+        $current = $this_HeadingElement_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMarkupElementAccess().getNullElementParserRuleCall_7()); 
+    }
+    this_NullElement_7=ruleNullElement
+    { 
+        $current = $this_NullElement_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMarkupElementAccess().getOCLCodeElementParserRuleCall_8()); 
+    }
+    this_OCLCodeElement_8=ruleOCLCodeElement
+    { 
+        $current = $this_OCLCodeElement_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMarkupElementAccess().getOCLEvalElementParserRuleCall_9()); 
+    }
+    this_OCLEvalElement_9=ruleOCLEvalElement
+    { 
+        $current = $this_OCLEvalElement_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMarkupElementAccess().getOCLTextElementParserRuleCall_10()); 
+    }
+    this_OCLTextElement_10=ruleOCLTextElement
+    { 
+        $current = $this_OCLTextElement_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMarkupElementAccess().getTextElementParserRuleCall_11()); 
+    }
+    this_TextElement_11=ruleTextElement
+    { 
+        $current = $this_TextElement_11.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBulletElement
+entryRuleBulletElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBulletElementRule()); }
+	 iv_ruleBulletElement=ruleBulletElement 
+	 { $current=$iv_ruleBulletElement.current; } 
+	 EOF 
+;
+
+// Rule BulletElement
+ruleBulletElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getBulletElementAccess().getBulletElementAction_0(),
+            $current);
+    }
+)	otherlv_1='bullet' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getBulletElementAccess().getBulletKeyword_1());
+    }
+(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getBulletElementAccess().getColonKeyword_2_0());
+    }
+(
+(
+		lv_level_3_0=RULE_INT
+		{
+			newLeafNode(lv_level_3_0, grammarAccess.getBulletElementAccess().getLevelINTTerminalRuleCall_2_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBulletElementRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"level",
+        		lv_level_3_0, 
+        		"INT");
+	    }
+
+)
+))?	otherlv_4='[' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getBulletElementAccess().getLeftSquareBracketKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBulletElementAccess().getElementsMarkupElementParserRuleCall_4_0()); 
+	    }
+		lv_elements_5_0=ruleMarkupElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBulletElementRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_5_0, 
+        		"MarkupElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_6=']' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getBulletElementAccess().getRightSquareBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFontElement
+entryRuleFontElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFontElementRule()); }
+	 iv_ruleFontElement=ruleFontElement 
+	 { $current=$iv_ruleFontElement.current; } 
+	 EOF 
+;
+
+// Rule FontElement
+ruleFontElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+(
+		lv_font_0_1=	'b' 
+    {
+        newLeafNode(lv_font_0_1, grammarAccess.getFontElementAccess().getFontBKeyword_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFontElementRule());
+	        }
+       		setWithLastConsumed($current, "font", lv_font_0_1, null);
+	    }
+
+    |		lv_font_0_2=	'e' 
+    {
+        newLeafNode(lv_font_0_2, grammarAccess.getFontElementAccess().getFontEKeyword_0_0_1());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFontElementRule());
+	        }
+       		setWithLastConsumed($current, "font", lv_font_0_2, null);
+	    }
+
+)
+
+)
+)	otherlv_1='[' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getFontElementAccess().getLeftSquareBracketKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFontElementAccess().getElementsMarkupElementParserRuleCall_2_0()); 
+	    }
+		lv_elements_2_0=ruleMarkupElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFontElementRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_2_0, 
+        		"MarkupElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_3=']' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getFontElementAccess().getRightSquareBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFigureElement
+entryRuleFigureElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFigureElementRule()); }
+	 iv_ruleFigureElement=ruleFigureElement 
+	 { $current=$iv_ruleFigureElement.current; } 
+	 EOF 
+;
+
+// Rule FigureElement
+ruleFigureElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='figure' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFigureElementAccess().getFigureKeyword_0());
+    }
+(	otherlv_1='#' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getFigureElementAccess().getNumberSignKeyword_1_0());
+    }
+(
+(
+		lv_def_2_0=RULE_ID
+		{
+			newLeafNode(lv_def_2_0, grammarAccess.getFigureElementAccess().getDefIDTerminalRuleCall_1_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFigureElementRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"def",
+        		lv_def_2_0, 
+        		"ID");
+	    }
+
+)
+))?	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getFigureElementAccess().getLeftSquareBracketKeyword_2());
+    }
+(
+(
+		lv_src_4_0=RULE_STRING
+		{
+			newLeafNode(lv_src_4_0, grammarAccess.getFigureElementAccess().getSrcSTRINGTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFigureElementRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"src",
+        		lv_src_4_0, 
+        		"STRING");
+	    }
+
+)
+)(	otherlv_5=',' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getFigureElementAccess().getCommaKeyword_4_0());
+    }
+(
+(
+		lv_alt_6_0=RULE_STRING
+		{
+			newLeafNode(lv_alt_6_0, grammarAccess.getFigureElementAccess().getAltSTRINGTerminalRuleCall_4_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFigureElementRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"alt",
+        		lv_alt_6_0, 
+        		"STRING");
+	    }
+
+)
+)(	otherlv_7=',' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getFigureElementAccess().getCommaKeyword_4_2_0());
+    }
+(
+(
+		lv_requiredWidth_8_0=RULE_INT
+		{
+			newLeafNode(lv_requiredWidth_8_0, grammarAccess.getFigureElementAccess().getRequiredWidthINTTerminalRuleCall_4_2_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFigureElementRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"requiredWidth",
+        		lv_requiredWidth_8_0, 
+        		"INT");
+	    }
+
+)
+)(	otherlv_9=',' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getFigureElementAccess().getCommaKeyword_4_2_2_0());
+    }
+(
+(
+		lv_requiredHeight_10_0=RULE_INT
+		{
+			newLeafNode(lv_requiredHeight_10_0, grammarAccess.getFigureElementAccess().getRequiredHeightINTTerminalRuleCall_4_2_2_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFigureElementRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"requiredHeight",
+        		lv_requiredHeight_10_0, 
+        		"INT");
+	    }
+
+)
+))?)?)?	otherlv_11=']' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getFigureElementAccess().getRightSquareBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFigureRefElement
+entryRuleFigureRefElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFigureRefElementRule()); }
+	 iv_ruleFigureRefElement=ruleFigureRefElement 
+	 { $current=$iv_ruleFigureRefElement.current; } 
+	 EOF 
+;
+
+// Rule FigureRefElement
+ruleFigureRefElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='figureRef' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFigureRefElementAccess().getFigureRefKeyword_0());
+    }
+	otherlv_1='[' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getFigureRefElementAccess().getLeftSquareBracketKeyword_1());
+    }
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFigureRefElementRule());
+	        }
+        }
+	otherlv_2=RULE_ID
+	{
+		newLeafNode(otherlv_2, grammarAccess.getFigureRefElementAccess().getRefFigureElementCrossReference_2_0()); 
+	}
+
+)
+)	otherlv_3=']' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getFigureRefElementAccess().getRightSquareBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFootnoteElement
+entryRuleFootnoteElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFootnoteElementRule()); }
+	 iv_ruleFootnoteElement=ruleFootnoteElement 
+	 { $current=$iv_ruleFootnoteElement.current; } 
+	 EOF 
+;
+
+// Rule FootnoteElement
+ruleFootnoteElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getFootnoteElementAccess().getFootnoteElementAction_0(),
+            $current);
+    }
+)	otherlv_1='footnote' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getFootnoteElementAccess().getFootnoteKeyword_1());
+    }
+	otherlv_2='[' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getFootnoteElementAccess().getLeftSquareBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFootnoteElementAccess().getElementsMarkupElementParserRuleCall_3_0()); 
+	    }
+		lv_elements_3_0=ruleMarkupElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFootnoteElementRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"MarkupElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_4=']' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getFootnoteElementAccess().getRightSquareBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleHeadingElement
+entryRuleHeadingElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getHeadingElementRule()); }
+	 iv_ruleHeadingElement=ruleHeadingElement 
+	 { $current=$iv_ruleHeadingElement.current; } 
+	 EOF 
+;
+
+// Rule HeadingElement
+ruleHeadingElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getHeadingElementAccess().getHeadingElementAction_0(),
+            $current);
+    }
+)	otherlv_1='heading' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getHeadingElementAccess().getHeadingKeyword_1());
+    }
+(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getHeadingElementAccess().getColonKeyword_2_0());
+    }
+(
+(
+		lv_level_3_0=RULE_INT
+		{
+			newLeafNode(lv_level_3_0, grammarAccess.getHeadingElementAccess().getLevelINTTerminalRuleCall_2_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getHeadingElementRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"level",
+        		lv_level_3_0, 
+        		"INT");
+	    }
+
+)
+))?	otherlv_4='[' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getHeadingElementAccess().getLeftSquareBracketKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getHeadingElementAccess().getElementsMarkupElementParserRuleCall_4_0()); 
+	    }
+		lv_elements_5_0=ruleMarkupElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getHeadingElementRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_5_0, 
+        		"MarkupElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_6=']' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getHeadingElementAccess().getRightSquareBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNewLineElement
+entryRuleNewLineElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNewLineElementRule()); }
+	 iv_ruleNewLineElement=ruleNewLineElement 
+	 { $current=$iv_ruleNewLineElement.current; } 
+	 EOF 
+;
+
+// Rule NewLineElement
+ruleNewLineElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		lv_text_0_0=RULE_NL
+		{
+			newLeafNode(lv_text_0_0, grammarAccess.getNewLineElementAccess().getTextNLTerminalRuleCall_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNewLineElementRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"text",
+        		lv_text_0_0, 
+        		"NL");
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNullElement
+entryRuleNullElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNullElementRule()); }
+	 iv_ruleNullElement=ruleNullElement 
+	 { $current=$iv_ruleNullElement.current; } 
+	 EOF 
+;
+
+// Rule NullElement
+ruleNullElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getNullElementAccess().getNullElementAction_0(),
+            $current);
+    }
+)	otherlv_1='[' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getNullElementAccess().getLeftSquareBracketKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNullElementAccess().getElementsMarkupElementParserRuleCall_2_0()); 
+	    }
+		lv_elements_2_0=ruleMarkupElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNullElementRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_2_0, 
+        		"MarkupElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_3=']' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getNullElementAccess().getRightSquareBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleOCLCodeElement
+entryRuleOCLCodeElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOCLCodeElementRule()); }
+	 iv_ruleOCLCodeElement=ruleOCLCodeElement 
+	 { $current=$iv_ruleOCLCodeElement.current; } 
+	 EOF 
+;
+
+// Rule OCLCodeElement
+ruleOCLCodeElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getOCLCodeElementAccess().getOCLCodeElementAction_0(),
+            $current);
+    }
+)	otherlv_1='oclCode' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getOCLCodeElementAccess().getOclCodeKeyword_1());
+    }
+	otherlv_2='[' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getOCLCodeElementAccess().getLeftSquareBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOCLCodeElementAccess().getElementsMarkupElementParserRuleCall_3_0()); 
+	    }
+		lv_elements_3_0=ruleMarkupElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOCLCodeElementRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"MarkupElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_4=']' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getOCLCodeElementAccess().getRightSquareBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleOCLEvalElement
+entryRuleOCLEvalElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOCLEvalElementRule()); }
+	 iv_ruleOCLEvalElement=ruleOCLEvalElement 
+	 { $current=$iv_ruleOCLEvalElement.current; } 
+	 EOF 
+;
+
+// Rule OCLEvalElement
+ruleOCLEvalElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getOCLEvalElementAccess().getOCLEvalElementAction_0(),
+            $current);
+    }
+)	otherlv_1='oclEval' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getOCLEvalElementAccess().getOclEvalKeyword_1());
+    }
+	otherlv_2='[' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getOCLEvalElementAccess().getLeftSquareBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOCLEvalElementAccess().getElementsMarkupElementParserRuleCall_3_0()); 
+	    }
+		lv_elements_3_0=ruleMarkupElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOCLEvalElementRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"MarkupElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_4=']' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getOCLEvalElementAccess().getRightSquareBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleOCLTextElement
+entryRuleOCLTextElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOCLTextElementRule()); }
+	 iv_ruleOCLTextElement=ruleOCLTextElement 
+	 { $current=$iv_ruleOCLTextElement.current; } 
+	 EOF 
+;
+
+// Rule OCLTextElement
+ruleOCLTextElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getOCLTextElementAccess().getOCLTextElementAction_0(),
+            $current);
+    }
+)	otherlv_1='oclText' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getOCLTextElementAccess().getOclTextKeyword_1());
+    }
+	otherlv_2='[' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getOCLTextElementAccess().getLeftSquareBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOCLTextElementAccess().getElementsMarkupElementParserRuleCall_3_0()); 
+	    }
+		lv_elements_3_0=ruleMarkupElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOCLTextElementRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"MarkupElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_4=']' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getOCLTextElementAccess().getRightSquareBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTextElement
+entryRuleTextElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTextElementRule()); }
+	 iv_ruleTextElement=ruleTextElement 
+	 { $current=$iv_ruleTextElement.current; } 
+	 EOF 
+;
+
+// Rule TextElement
+ruleTextElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+(
+		lv_text_0_1=RULE_ID
+		{
+			newLeafNode(lv_text_0_1, grammarAccess.getTextElementAccess().getTextIDTerminalRuleCall_0_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getTextElementRule());
+	        }
+       		addWithLastConsumed(
+       			$current, 
+       			"text",
+        		lv_text_0_1, 
+        		"ID");
+	    }
+
+    |		lv_text_0_2=RULE_WORD
+		{
+			newLeafNode(lv_text_0_2, grammarAccess.getTextElementAccess().getTextWORDTerminalRuleCall_0_0_1()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getTextElementRule());
+	        }
+       		addWithLastConsumed(
+       			$current, 
+       			"text",
+        		lv_text_0_2, 
+        		"WORD");
+	    }
+
+    |		lv_text_0_3=RULE_INT
+		{
+			newLeafNode(lv_text_0_3, grammarAccess.getTextElementAccess().getTextINTTerminalRuleCall_0_0_2()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getTextElementRule());
+	        }
+       		addWithLastConsumed(
+       			$current, 
+       			"text",
+        		lv_text_0_3, 
+        		"INT");
+	    }
+
+    |		lv_text_0_4=RULE_WS
+		{
+			newLeafNode(lv_text_0_4, grammarAccess.getTextElementAccess().getTextWSTerminalRuleCall_0_0_3()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getTextElementRule());
+	        }
+       		addWithLastConsumed(
+       			$current, 
+       			"text",
+        		lv_text_0_4, 
+        		"WS");
+	    }
+
+    |		lv_text_0_5=	':' 
+    {
+        newLeafNode(lv_text_0_5, grammarAccess.getTextElementAccess().getTextColonKeyword_0_0_4());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getTextElementRule());
+	        }
+       		addWithLastConsumed($current, "text", lv_text_0_5, null);
+	    }
+
+    |		lv_text_0_6=	'#' 
+    {
+        newLeafNode(lv_text_0_6, grammarAccess.getTextElementAccess().getTextNumberSignKeyword_0_0_5());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getTextElementRule());
+	        }
+       		addWithLastConsumed($current, "text", lv_text_0_6, null);
+	    }
+
+    |		lv_text_0_7=	',' 
+    {
+        newLeafNode(lv_text_0_7, grammarAccess.getTextElementAccess().getTextCommaKeyword_0_0_6());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getTextElementRule());
+	        }
+       		addWithLastConsumed($current, "text", lv_text_0_7, null);
+	    }
+
+)
+
+)
+)+
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTextElementAccess().getTextMarkupKeywordParserRuleCall_1_0()); 
+	    }
+		lv_text_1_0=ruleMarkupKeyword		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTextElementRule());
+	        }
+       		add(
+       			$current, 
+       			"text",
+        		lv_text_1_0, 
+        		"MarkupKeyword");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+fragment RULE_NUMBER : '0'..'9';
+
+fragment RULE_LETTER : ('a'..'z'|'A'..'Z'|'_');
+
+fragment RULE_ESCAPED : '\\' ('b'|'t'|'n'|'f'|'r'|'"'|'\''|'\\'|'<'|'>'|'['|']');
+
+fragment RULE_VERTICAL_WS : ('\n'|'\r');
+
+fragment RULE_HORIZONTAL_WS : (' '|'\t');
+
+RULE_INT : RULE_NUMBER+;
+
+RULE_STRING : '"' (RULE_ESCAPED|~(('\\'|'"')))* '"';
+
+RULE_ID : RULE_LETTER (RULE_LETTER|RULE_NUMBER)*;
+
+RULE_WORD : (RULE_ESCAPED|~(('\\'|'"'|'['|']'|':'|'#'|','|RULE_HORIZONTAL_WS|RULE_VERTICAL_WS)))+;
+
+RULE_NL : (RULE_HORIZONTAL_WS* RULE_VERTICAL_WS)+;
+
+RULE_WS : RULE_HORIZONTAL_WS+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/internal/InternalMarkup.tokens b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/internal/InternalMarkup.tokens
index f6513cc..9f0611c 100644
--- a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/internal/InternalMarkup.tokens
+++ b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/parser/antlr/internal/InternalMarkup.tokens
@@ -1,42 +1,42 @@
-'#'=29

-','=30

-':'=26

-'['=27

-']'=28

-'b'=16

-'bullet'=18

-'e'=17

-'figure'=19

-'figureRef'=20

-'footnote'=21

-'heading'=22

-'oclCode'=23

-'oclEval'=24

-'oclText'=25

-RULE_ANY_OTHER=15

-RULE_ESCAPED=12

-RULE_HORIZONTAL_WS=14

-RULE_ID=5

-RULE_INT=4

-RULE_LETTER=11

-RULE_NL=7

-RULE_NUMBER=10

-RULE_STRING=6

-RULE_VERTICAL_WS=13

-RULE_WORD=8

-RULE_WS=9

-T__16=16

-T__17=17

-T__18=18

-T__19=19

-T__20=20

-T__21=21

-T__22=22

-T__23=23

-T__24=24

-T__25=25

-T__26=26

-T__27=27

-T__28=28

-T__29=29

-T__30=30

+'#'=29
+','=30
+':'=26
+'['=27
+']'=28
+'b'=16
+'bullet'=18
+'e'=17
+'figure'=19
+'figureRef'=20
+'footnote'=21
+'heading'=22
+'oclCode'=23
+'oclEval'=24
+'oclText'=25
+RULE_ANY_OTHER=15
+RULE_ESCAPED=12
+RULE_HORIZONTAL_WS=14
+RULE_ID=5
+RULE_INT=4
+RULE_LETTER=11
+RULE_NL=7
+RULE_NUMBER=10
+RULE_STRING=6
+RULE_VERTICAL_WS=13
+RULE_WORD=8
+RULE_WS=9
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
diff --git a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/serializer/AbstractMarkupSemanticSequencer.java b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/serializer/AbstractMarkupSemanticSequencer.java
index cf01e7c..f713b13 100644
--- a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/serializer/AbstractMarkupSemanticSequencer.java
+++ b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/serializer/AbstractMarkupSemanticSequencer.java
@@ -1,3 +1,6 @@
+/*
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.markup.serializer;
 
 import com.google.inject.Inject;
@@ -32,98 +35,48 @@
 	@Inject
 	private MarkupGrammarAccess grammarAccess;
 	
+	@Override
 	public void createSequence(EObject context, EObject semanticObject) {
 		if(semanticObject.eClass().getEPackage() == MarkupPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
 			case MarkupPackage.BULLET_ELEMENT:
-				if(context == grammarAccess.getBulletElementRule() ||
-				   context == grammarAccess.getMarkupElementRule()) {
-					sequence_BulletElement(context, (BulletElement) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_BulletElement(context, (BulletElement) semanticObject); 
+				return; 
 			case MarkupPackage.FIGURE_ELEMENT:
-				if(context == grammarAccess.getFigureElementRule() ||
-				   context == grammarAccess.getMarkupElementRule()) {
-					sequence_FigureElement(context, (FigureElement) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_FigureElement(context, (FigureElement) semanticObject); 
+				return; 
 			case MarkupPackage.FIGURE_REF_ELEMENT:
-				if(context == grammarAccess.getFigureRefElementRule() ||
-				   context == grammarAccess.getMarkupElementRule()) {
-					sequence_FigureRefElement(context, (FigureRefElement) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_FigureRefElement(context, (FigureRefElement) semanticObject); 
+				return; 
 			case MarkupPackage.FONT_ELEMENT:
-				if(context == grammarAccess.getFontElementRule() ||
-				   context == grammarAccess.getMarkupElementRule()) {
-					sequence_FontElement(context, (FontElement) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_FontElement(context, (FontElement) semanticObject); 
+				return; 
 			case MarkupPackage.FOOTNOTE_ELEMENT:
-				if(context == grammarAccess.getFootnoteElementRule() ||
-				   context == grammarAccess.getMarkupElementRule()) {
-					sequence_FootnoteElement(context, (FootnoteElement) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_FootnoteElement(context, (FootnoteElement) semanticObject); 
+				return; 
 			case MarkupPackage.HEADING_ELEMENT:
-				if(context == grammarAccess.getHeadingElementRule() ||
-				   context == grammarAccess.getMarkupElementRule()) {
-					sequence_HeadingElement(context, (HeadingElement) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_HeadingElement(context, (HeadingElement) semanticObject); 
+				return; 
 			case MarkupPackage.MARKUP:
-				if(context == grammarAccess.getMarkupRule()) {
-					sequence_Markup(context, (Markup) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_Markup(context, (Markup) semanticObject); 
+				return; 
 			case MarkupPackage.NEW_LINE_ELEMENT:
-				if(context == grammarAccess.getMarkupElementRule() ||
-				   context == grammarAccess.getNewLineElementRule()) {
-					sequence_NewLineElement(context, (NewLineElement) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NewLineElement(context, (NewLineElement) semanticObject); 
+				return; 
 			case MarkupPackage.NULL_ELEMENT:
-				if(context == grammarAccess.getMarkupElementRule() ||
-				   context == grammarAccess.getNullElementRule()) {
-					sequence_NullElement(context, (NullElement) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NullElement(context, (NullElement) semanticObject); 
+				return; 
 			case MarkupPackage.OCL_CODE_ELEMENT:
-				if(context == grammarAccess.getMarkupElementRule() ||
-				   context == grammarAccess.getOCLCodeElementRule()) {
-					sequence_OCLCodeElement(context, (OCLCodeElement) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_OCLCodeElement(context, (OCLCodeElement) semanticObject); 
+				return; 
 			case MarkupPackage.OCL_EVAL_ELEMENT:
-				if(context == grammarAccess.getMarkupElementRule() ||
-				   context == grammarAccess.getOCLEvalElementRule()) {
-					sequence_OCLEvalElement(context, (OCLEvalElement) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_OCLEvalElement(context, (OCLEvalElement) semanticObject); 
+				return; 
 			case MarkupPackage.OCL_TEXT_ELEMENT:
-				if(context == grammarAccess.getMarkupElementRule() ||
-				   context == grammarAccess.getOCLTextElementRule()) {
-					sequence_OCLTextElement(context, (OCLTextElement) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_OCLTextElement(context, (OCLTextElement) semanticObject); 
+				return; 
 			case MarkupPackage.TEXT_ELEMENT:
-				if(context == grammarAccess.getMarkupElementRule() ||
-				   context == grammarAccess.getTextElementRule()) {
-					sequence_TextElement(context, (TextElement) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TextElement(context, (TextElement) semanticObject); 
+				return; 
 			}
 		if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
 	}
diff --git a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/serializer/AbstractMarkupSyntacticSequencer.java b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/serializer/AbstractMarkupSyntacticSequencer.java
index 719cc36..04c5ad3 100644
--- a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/serializer/AbstractMarkupSyntacticSequencer.java
+++ b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/serializer/AbstractMarkupSyntacticSequencer.java
@@ -1,3 +1,6 @@
+/*
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.markup.serializer;
 
 import com.google.inject.Inject;
diff --git a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/services/MarkupGrammarAccess.java b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/services/MarkupGrammarAccess.java
index 7b00185..a2203d0 100644
--- a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/services/MarkupGrammarAccess.java
+++ b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/services/MarkupGrammarAccess.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.markup.services;
 
 import com.google.inject.Singleton;
@@ -24,8 +24,7 @@
 		
 		//Markup:
 		//	elements+=MarkupElement*;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//elements+=MarkupElement*
 		public Assignment getElementsAssignment() { return cElementsAssignment; }
@@ -50,8 +49,7 @@
 		
 		//MarkupKeyword:
 		//	"b" | "e" | "bullet" | "figure" | "figureRef" | "footnote" | "heading" | "oclCode" | "oclEval" | "oclText";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"b" | "e" | "bullet" | "figure" | "figureRef" | "footnote" | "heading" | "oclCode" | "oclEval" | "oclText"
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -108,8 +106,7 @@
 		//	NullElement | OCLCodeElement | OCLEvalElement | OCLTextElement | // Last to give everything else a try first
 		//
 		//	TextElement;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//FontElement | NewLineElement | BulletElement | FigureElement | FigureRefElement | FootnoteElement | HeadingElement |
 		//NullElement | OCLCodeElement | OCLEvalElement | OCLTextElement | // Last to give everything else a try first
@@ -171,8 +168,7 @@
 		
 		//BulletElement:
 		//	{BulletElement} "bullet" (":" level=INT)? "[" elements+=MarkupElement* "]";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{BulletElement} "bullet" (":" level=INT)? "[" elements+=MarkupElement* "]"
 		public Group getGroup() { return cGroup; }
@@ -222,8 +218,7 @@
 		
 		//FontElement:
 		//	font=("b" | "e") "[" elements+=MarkupElement* "]";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//font=("b" | "e") "[" elements+=MarkupElement* "]"
 		public Group getGroup() { return cGroup; }
@@ -280,8 +275,7 @@
 		
 		//FigureElement:
 		//	"figure" ("#" def=ID)? "[" src=STRING ("," alt=STRING ("," requiredWidth=INT ("," requiredHeight=INT)?)?)? "]";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"figure" ("#" def=ID)? "[" src=STRING ("," alt=STRING ("," requiredWidth=INT ("," requiredHeight=INT)?)?)? "]"
 		public Group getGroup() { return cGroup; }
@@ -362,8 +356,7 @@
 		
 		//FigureRefElement:
 		//	"figureRef" "[" ref=[FigureElement] "]";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"figureRef" "[" ref=[FigureElement] "]"
 		public Group getGroup() { return cGroup; }
@@ -399,8 +392,7 @@
 		
 		//FootnoteElement:
 		//	{FootnoteElement} "footnote" "[" elements+=MarkupElement* "]";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{FootnoteElement} "footnote" "[" elements+=MarkupElement* "]"
 		public Group getGroup() { return cGroup; }
@@ -440,8 +432,7 @@
 		
 		//HeadingElement:
 		//	{HeadingElement} "heading" (":" level=INT)? "[" elements+=MarkupElement* "]";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{HeadingElement} "heading" (":" level=INT)? "[" elements+=MarkupElement* "]"
 		public Group getGroup() { return cGroup; }
@@ -484,8 +475,7 @@
 		
 		//NewLineElement:
 		//	text=NL;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//text=NL
 		public Assignment getTextAssignment() { return cTextAssignment; }
@@ -505,8 +495,7 @@
 		
 		//NullElement:
 		//	{NullElement} "[" elements+=MarkupElement* "]";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{NullElement} "[" elements+=MarkupElement* "]"
 		public Group getGroup() { return cGroup; }
@@ -539,8 +528,7 @@
 		
 		//OCLCodeElement:
 		//	{OCLCodeElement} "oclCode" "[" elements+=MarkupElement* "]";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{OCLCodeElement} "oclCode" "[" elements+=MarkupElement* "]"
 		public Group getGroup() { return cGroup; }
@@ -576,8 +564,7 @@
 		
 		//OCLEvalElement:
 		//	{OCLEvalElement} "oclEval" "[" elements+=MarkupElement* "]";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{OCLEvalElement} "oclEval" "[" elements+=MarkupElement* "]"
 		public Group getGroup() { return cGroup; }
@@ -613,8 +600,7 @@
 		
 		//OCLTextElement:
 		//	{OCLTextElement} "oclText" "[" elements+=MarkupElement* "]";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{OCLTextElement} "oclText" "[" elements+=MarkupElement* "]"
 		public Group getGroup() { return cGroup; }
@@ -655,8 +641,7 @@
 		
 		//TextElement:
 		//	text+=(ID | WORD | INT | WS | ":" | "#" | ",")+ | text+=MarkupKeyword;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//text+=(ID | WORD | INT | WS | ":" | "#" | ",")+ | text+=MarkupKeyword
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -774,7 +759,6 @@
 		return grammar;
 	}
 	
-	
 	@Override
 	public Grammar getGrammar() {
 		return grammar;
diff --git a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/validation/AbstractMarkupJavaValidator.java b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/validation/AbstractMarkupJavaValidator.java
index 821d9cc..f13fc5a 100644
--- a/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/validation/AbstractMarkupJavaValidator.java
+++ b/plugins/org.eclipse.ocl.xtext.markup/src-gen/org/eclipse/ocl/xtext/markup/validation/AbstractMarkupJavaValidator.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.markup.validation;
  
 import java.util.ArrayList;
diff --git a/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/AbstractOCLinEcoreUiModule.java b/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/AbstractOCLinEcoreUiModule.java
index 577d7f9..9263f1b 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/AbstractOCLinEcoreUiModule.java
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/AbstractOCLinEcoreUiModule.java
@@ -4,14 +4,13 @@
  */
 package org.eclipse.ocl.xtext.oclinecore.ui;
 
-import org.eclipse.xtext.ui.DefaultUiModule;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
  * Manual modifications go to {org.eclipse.ocl.xtext.oclinecore.ui.OCLinEcoreUiModule}
  */
 @SuppressWarnings("all")
-public abstract class AbstractOCLinEcoreUiModule extends DefaultUiModule {
+public abstract class AbstractOCLinEcoreUiModule extends org.eclipse.xtext.ui.DefaultUiModule {
 	
 	public AbstractOCLinEcoreUiModule(AbstractUIPlugin plugin) {
 		super(plugin);
diff --git a/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/AbstractOCLinEcoreProposalProvider.java b/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/AbstractOCLinEcoreProposalProvider.java
index f1aec11..15b3919 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/AbstractOCLinEcoreProposalProvider.java
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/AbstractOCLinEcoreProposalProvider.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclinecore.ui.contentassist;
 
 import org.eclipse.emf.ecore.EObject;
diff --git a/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/antlr/OCLinEcoreParser.java b/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/antlr/OCLinEcoreParser.java
index 4a999ff..9c946e9 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/antlr/OCLinEcoreParser.java
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/antlr/OCLinEcoreParser.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclinecore.ui.contentassist.antlr;
 
 import java.util.Collection;
diff --git a/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/antlr/internal/InternalOCLinEcore.g b/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/antlr/internal/InternalOCLinEcore.g
index b7ad363..aa967ce 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/antlr/internal/InternalOCLinEcore.g
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/antlr/internal/InternalOCLinEcore.g
@@ -1,27732 +1,27732 @@
-/*

-* generated by Xtext

-*/

-grammar InternalOCLinEcore;

-

-options {

-	superClass=AbstractInternalContentAssistParser;

-	backtrack=true;

-	

-}

-

-@lexer::header {

-package org.eclipse.ocl.xtext.oclinecore.ui.contentassist.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.ui.editor.contentassist.antlr.internal.Lexer;

-}

-

-@parser::header {

-package org.eclipse.ocl.xtext.oclinecore.ui.contentassist.antlr.internal; 

-

-import java.io.InputStream;

-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.XtextTokenStream;

-import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;

-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;

-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;

-import org.eclipse.ocl.xtext.oclinecore.services.OCLinEcoreGrammarAccess;

-

-}

-

-@parser::members {

- 

- 	private OCLinEcoreGrammarAccess grammarAccess;

- 	

-    public void setGrammarAccess(OCLinEcoreGrammarAccess grammarAccess) {

-    	this.grammarAccess = grammarAccess;

-    }

-    

-    @Override

-    protected Grammar getGrammar() {

-    	return grammarAccess.getGrammar();

-    }

-    

-    @Override

-    protected String getValueForTokenName(String tokenName) {

-    	return tokenName;

-    }

-

-}

-

-

-

-

-// Entry rule entryRuleTopLevelCS

-entryRuleTopLevelCS 

-:

-{ before(grammarAccess.getTopLevelCSRule()); }

-	 ruleTopLevelCS

-{ after(grammarAccess.getTopLevelCSRule()); } 

-	 EOF 

-;

-

-// Rule TopLevelCS

-ruleTopLevelCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTopLevelCSAccess().getGroup()); }

-(rule__TopLevelCS__Group__0)

-{ after(grammarAccess.getTopLevelCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-// Entry rule entryRuleSIGNED

-entryRuleSIGNED 

-:

-{ before(grammarAccess.getSIGNEDRule()); }

-	 ruleSIGNED

-{ after(grammarAccess.getSIGNEDRule()); } 

-	 EOF 

-;

-

-// Rule SIGNED

-ruleSIGNED

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getSIGNEDAccess().getGroup()); }

-(rule__SIGNED__Group__0)

-{ after(grammarAccess.getSIGNEDAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEnumerationLiteralName

-entryRuleEnumerationLiteralName 

-:

-{ before(grammarAccess.getEnumerationLiteralNameRule()); }

-	 ruleEnumerationLiteralName

-{ after(grammarAccess.getEnumerationLiteralNameRule()); } 

-	 EOF 

-;

-

-// Rule EnumerationLiteralName

-ruleEnumerationLiteralName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getAlternatives()); }

-(rule__EnumerationLiteralName__Alternatives)

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleInvariantConstraintCS

-entryRuleInvariantConstraintCS 

-:

-{ before(grammarAccess.getInvariantConstraintCSRule()); }

-	 ruleInvariantConstraintCS

-{ after(grammarAccess.getInvariantConstraintCSRule()); } 

-	 EOF 

-;

-

-// Rule InvariantConstraintCS

-ruleInvariantConstraintCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getGroup()); }

-(rule__InvariantConstraintCS__Group__0)

-{ after(grammarAccess.getInvariantConstraintCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePostconditionConstraintCS

-entryRulePostconditionConstraintCS 

-:

-{ before(grammarAccess.getPostconditionConstraintCSRule()); }

-	 rulePostconditionConstraintCS

-{ after(grammarAccess.getPostconditionConstraintCSRule()); } 

-	 EOF 

-;

-

-// Rule PostconditionConstraintCS

-rulePostconditionConstraintCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getGroup()); }

-(rule__PostconditionConstraintCS__Group__0)

-{ after(grammarAccess.getPostconditionConstraintCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePreconditionConstraintCS

-entryRulePreconditionConstraintCS 

-:

-{ before(grammarAccess.getPreconditionConstraintCSRule()); }

-	 rulePreconditionConstraintCS

-{ after(grammarAccess.getPreconditionConstraintCSRule()); } 

-	 EOF 

-;

-

-// Rule PreconditionConstraintCS

-rulePreconditionConstraintCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getGroup()); }

-(rule__PreconditionConstraintCS__Group__0)

-{ after(grammarAccess.getPreconditionConstraintCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleAnnotationCS

-entryRuleAnnotationCS 

-:

-{ before(grammarAccess.getAnnotationCSRule()); }

-	 ruleAnnotationCS

-{ after(grammarAccess.getAnnotationCSRule()); } 

-	 EOF 

-;

-

-// Rule AnnotationCS

-ruleAnnotationCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getGroup()); }

-(rule__AnnotationCS__Group__0)

-{ after(grammarAccess.getAnnotationCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleAnnotationElementCS

-entryRuleAnnotationElementCS 

-:

-{ before(grammarAccess.getAnnotationElementCSRule()); }

-	 ruleAnnotationElementCS

-{ after(grammarAccess.getAnnotationElementCSRule()); } 

-	 EOF 

-;

-

-// Rule AnnotationElementCS

-ruleAnnotationElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getAnnotationElementCSAccess().getAlternatives()); }

-(rule__AnnotationElementCS__Alternatives)

-{ after(grammarAccess.getAnnotationElementCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleAttributeCS

-entryRuleAttributeCS 

-:

-{ before(grammarAccess.getAttributeCSRule()); }

-	 ruleAttributeCS

-{ after(grammarAccess.getAttributeCSRule()); } 

-	 EOF 

-;

-

-// Rule AttributeCS

-ruleAttributeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getAttributeCSAccess().getGroup()); }

-(rule__AttributeCS__Group__0)

-{ after(grammarAccess.getAttributeCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleClassCS

-entryRuleClassCS 

-:

-{ before(grammarAccess.getClassCSRule()); }

-	 ruleClassCS

-{ after(grammarAccess.getClassCSRule()); } 

-	 EOF 

-;

-

-// Rule ClassCS

-ruleClassCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getClassCSAccess().getAlternatives()); }

-(rule__ClassCS__Alternatives)

-{ after(grammarAccess.getClassCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleDataTypeCS

-entryRuleDataTypeCS 

-:

-{ before(grammarAccess.getDataTypeCSRule()); }

-	 ruleDataTypeCS

-{ after(grammarAccess.getDataTypeCSRule()); } 

-	 EOF 

-;

-

-// Rule DataTypeCS

-ruleDataTypeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getGroup()); }

-(rule__DataTypeCS__Group__0)

-{ after(grammarAccess.getDataTypeCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleDetailCS

-entryRuleDetailCS 

-:

-{ before(grammarAccess.getDetailCSRule()); }

-	 ruleDetailCS

-{ after(grammarAccess.getDetailCSRule()); } 

-	 EOF 

-;

-

-// Rule DetailCS

-ruleDetailCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getDetailCSAccess().getGroup()); }

-(rule__DetailCS__Group__0)

-{ after(grammarAccess.getDetailCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleDocumentationCS

-entryRuleDocumentationCS 

-:

-{ before(grammarAccess.getDocumentationCSRule()); }

-	 ruleDocumentationCS

-{ after(grammarAccess.getDocumentationCSRule()); } 

-	 EOF 

-;

-

-// Rule DocumentationCS

-ruleDocumentationCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getGroup()); }

-(rule__DocumentationCS__Group__0)

-{ after(grammarAccess.getDocumentationCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEnumerationCS

-entryRuleEnumerationCS 

-:

-{ before(grammarAccess.getEnumerationCSRule()); }

-	 ruleEnumerationCS

-{ after(grammarAccess.getEnumerationCSRule()); } 

-	 EOF 

-;

-

-// Rule EnumerationCS

-ruleEnumerationCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getGroup()); }

-(rule__EnumerationCS__Group__0)

-{ after(grammarAccess.getEnumerationCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEnumerationLiteralCS

-entryRuleEnumerationLiteralCS 

-:

-{ before(grammarAccess.getEnumerationLiteralCSRule()); }

-	 ruleEnumerationLiteralCS

-{ after(grammarAccess.getEnumerationLiteralCSRule()); } 

-	 EOF 

-;

-

-// Rule EnumerationLiteralCS

-ruleEnumerationLiteralCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getGroup()); }

-(rule__EnumerationLiteralCS__Group__0)

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleImportCS

-entryRuleImportCS 

-:

-{ before(grammarAccess.getImportCSRule()); }

-	 ruleImportCS

-{ after(grammarAccess.getImportCSRule()); } 

-	 EOF 

-;

-

-// Rule ImportCS

-ruleImportCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getImportCSAccess().getGroup()); }

-(rule__ImportCS__Group__0)

-{ after(grammarAccess.getImportCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLibraryCS

-entryRuleLibraryCS 

-:

-{ before(grammarAccess.getLibraryCSRule()); }

-	 ruleLibraryCS

-{ after(grammarAccess.getLibraryCSRule()); } 

-	 EOF 

-;

-

-// Rule LibraryCS

-ruleLibraryCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLibraryCSAccess().getGroup()); }

-(rule__LibraryCS__Group__0)

-{ after(grammarAccess.getLibraryCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleModelElementCS

-entryRuleModelElementCS 

-:

-{ before(grammarAccess.getModelElementCSRule()); }

-	 ruleModelElementCS

-{ after(grammarAccess.getModelElementCSRule()); } 

-	 EOF 

-;

-

-// Rule ModelElementCS

-ruleModelElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getModelElementCSAccess().getAlternatives()); }

-(rule__ModelElementCS__Alternatives)

-{ after(grammarAccess.getModelElementCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleModelElementRefCS

-entryRuleModelElementRefCS 

-:

-{ before(grammarAccess.getModelElementRefCSRule()); }

-	 ruleModelElementRefCS

-{ after(grammarAccess.getModelElementRefCSRule()); } 

-	 EOF 

-;

-

-// Rule ModelElementRefCS

-ruleModelElementRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getModelElementRefCSAccess().getGroup()); }

-(rule__ModelElementRefCS__Group__0)

-{ after(grammarAccess.getModelElementRefCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleOperationCS

-entryRuleOperationCS 

-:

-{ before(grammarAccess.getOperationCSRule()); }

-	 ruleOperationCS

-{ after(grammarAccess.getOperationCSRule()); } 

-	 EOF 

-;

-

-// Rule OperationCS

-ruleOperationCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getOperationCSAccess().getGroup()); }

-(rule__OperationCS__Group__0)

-{ after(grammarAccess.getOperationCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePackageCS

-entryRulePackageCS 

-:

-{ before(grammarAccess.getPackageCSRule()); }

-	 rulePackageCS

-{ after(grammarAccess.getPackageCSRule()); } 

-	 EOF 

-;

-

-// Rule PackageCS

-rulePackageCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPackageCSAccess().getGroup()); }

-(rule__PackageCS__Group__0)

-{ after(grammarAccess.getPackageCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleParameterCS

-entryRuleParameterCS 

-:

-{ before(grammarAccess.getParameterCSRule()); }

-	 ruleParameterCS

-{ after(grammarAccess.getParameterCSRule()); } 

-	 EOF 

-;

-

-// Rule ParameterCS

-ruleParameterCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getParameterCSAccess().getGroup()); }

-(rule__ParameterCS__Group__0)

-{ after(grammarAccess.getParameterCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleReferenceCS

-entryRuleReferenceCS 

-:

-{ before(grammarAccess.getReferenceCSRule()); }

-	 ruleReferenceCS

-{ after(grammarAccess.getReferenceCSRule()); } 

-	 EOF 

-;

-

-// Rule ReferenceCS

-ruleReferenceCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getReferenceCSAccess().getGroup()); }

-(rule__ReferenceCS__Group__0)

-{ after(grammarAccess.getReferenceCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleSpecificationCS

-entryRuleSpecificationCS 

-:

-{ before(grammarAccess.getSpecificationCSRule()); }

-	 ruleSpecificationCS

-{ after(grammarAccess.getSpecificationCSRule()); } 

-	 EOF 

-;

-

-// Rule SpecificationCS

-ruleSpecificationCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getSpecificationCSAccess().getAlternatives()); }

-(rule__SpecificationCS__Alternatives)

-{ after(grammarAccess.getSpecificationCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleStructuredClassCS

-entryRuleStructuredClassCS 

-:

-{ before(grammarAccess.getStructuredClassCSRule()); }

-	 ruleStructuredClassCS

-{ after(grammarAccess.getStructuredClassCSRule()); } 

-	 EOF 

-;

-

-// Rule StructuredClassCS

-ruleStructuredClassCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getGroup()); }

-(rule__StructuredClassCS__Group__0)

-{ after(grammarAccess.getStructuredClassCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleStructuralFeatureCS

-entryRuleStructuralFeatureCS 

-:

-{ before(grammarAccess.getStructuralFeatureCSRule()); }

-	 ruleStructuralFeatureCS

-{ after(grammarAccess.getStructuralFeatureCSRule()); } 

-	 EOF 

-;

-

-// Rule StructuralFeatureCS

-ruleStructuralFeatureCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getStructuralFeatureCSAccess().getAlternatives()); }

-(rule__StructuralFeatureCS__Alternatives)

-{ after(grammarAccess.getStructuralFeatureCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleSysMLCS

-entryRuleSysMLCS 

-:

-{ before(grammarAccess.getSysMLCSRule()); }

-	 ruleSysMLCS

-{ after(grammarAccess.getSysMLCSRule()); } 

-	 EOF 

-;

-

-// Rule SysMLCS

-ruleSysMLCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getSysMLCSAccess().getGroup()); }

-(rule__SysMLCS__Group__0)

-{ after(grammarAccess.getSysMLCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-// Entry rule entryRuleTypedMultiplicityRefCS

-entryRuleTypedMultiplicityRefCS 

-:

-{ before(grammarAccess.getTypedMultiplicityRefCSRule()); }

-	 ruleTypedMultiplicityRefCS

-{ after(grammarAccess.getTypedMultiplicityRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypedMultiplicityRefCS

-ruleTypedMultiplicityRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getGroup()); }

-(rule__TypedMultiplicityRefCS__Group__0)

-{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTemplateBindingCS

-entryRuleTemplateBindingCS 

-:

-{ before(grammarAccess.getTemplateBindingCSRule()); }

-	 ruleTemplateBindingCS

-{ after(grammarAccess.getTemplateBindingCSRule()); } 

-	 EOF 

-;

-

-// Rule TemplateBindingCS

-ruleTemplateBindingCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getAlternatives()); }

-(rule__TemplateBindingCS__Alternatives)

-{ after(grammarAccess.getTemplateBindingCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTemplateSignatureCS

-entryRuleTemplateSignatureCS 

-:

-{ before(grammarAccess.getTemplateSignatureCSRule()); }

-	 ruleTemplateSignatureCS

-{ after(grammarAccess.getTemplateSignatureCSRule()); } 

-	 EOF 

-;

-

-// Rule TemplateSignatureCS

-ruleTemplateSignatureCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getAlternatives()); }

-(rule__TemplateSignatureCS__Alternatives)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypedRefCS

-entryRuleTypedRefCS 

-:

-{ before(grammarAccess.getTypedRefCSRule()); }

-	 ruleTypedRefCS

-{ after(grammarAccess.getTypedRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypedRefCS

-ruleTypedRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypedRefCSAccess().getAlternatives()); }

-(rule__TypedRefCS__Alternatives)

-{ after(grammarAccess.getTypedRefCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnrestrictedName

-entryRuleUnrestrictedName 

-:

-{ before(grammarAccess.getUnrestrictedNameRule()); }

-	 ruleUnrestrictedName

-{ after(grammarAccess.getUnrestrictedNameRule()); } 

-	 EOF 

-;

-

-// Rule UnrestrictedName

-ruleUnrestrictedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnrestrictedNameAccess().getAlternatives()); }

-(rule__UnrestrictedName__Alternatives)

-{ after(grammarAccess.getUnrestrictedNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnaryOperatorName

-entryRuleEssentialOCLUnaryOperatorName 

-:

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); }

-	 ruleEssentialOCLUnaryOperatorName

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLUnaryOperatorName

-ruleEssentialOCLUnaryOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }

-(rule__EssentialOCLUnaryOperatorName__Alternatives)

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLInfixOperatorName

-entryRuleEssentialOCLInfixOperatorName 

-:

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameRule()); }

-	 ruleEssentialOCLInfixOperatorName

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLInfixOperatorName

-ruleEssentialOCLInfixOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }

-(rule__EssentialOCLInfixOperatorName__Alternatives)

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLNavigationOperatorName

-entryRuleEssentialOCLNavigationOperatorName 

-:

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); }

-	 ruleEssentialOCLNavigationOperatorName

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLNavigationOperatorName

-ruleEssentialOCLNavigationOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }

-(rule__EssentialOCLNavigationOperatorName__Alternatives)

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleBinaryOperatorName

-entryRuleBinaryOperatorName 

-:

-{ before(grammarAccess.getBinaryOperatorNameRule()); }

-	 ruleBinaryOperatorName

-{ after(grammarAccess.getBinaryOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule BinaryOperatorName

-ruleBinaryOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }

-(rule__BinaryOperatorName__Alternatives)

-{ after(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleInfixOperatorName

-entryRuleInfixOperatorName 

-:

-{ before(grammarAccess.getInfixOperatorNameRule()); }

-	 ruleInfixOperatorName

-{ after(grammarAccess.getInfixOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule InfixOperatorName

-ruleInfixOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }

-	ruleEssentialOCLInfixOperatorName

-{ after(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigationOperatorName

-entryRuleNavigationOperatorName 

-:

-{ before(grammarAccess.getNavigationOperatorNameRule()); }

-	 ruleNavigationOperatorName

-{ after(grammarAccess.getNavigationOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule NavigationOperatorName

-ruleNavigationOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); }

-	ruleEssentialOCLNavigationOperatorName

-{ after(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnaryOperatorName

-entryRuleUnaryOperatorName 

-:

-{ before(grammarAccess.getUnaryOperatorNameRule()); }

-	 ruleUnaryOperatorName

-{ after(grammarAccess.getUnaryOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule UnaryOperatorName

-ruleUnaryOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }

-	ruleEssentialOCLUnaryOperatorName

-{ after(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLUnrestrictedName

-entryRuleEssentialOCLUnrestrictedName 

-:

-{ before(grammarAccess.getEssentialOCLUnrestrictedNameRule()); }

-	 ruleEssentialOCLUnrestrictedName

-{ after(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLUnrestrictedName

-ruleEssentialOCLUnrestrictedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }

-	ruleIdentifier

-{ after(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLUnreservedName

-entryRuleEssentialOCLUnreservedName 

-:

-{ before(grammarAccess.getEssentialOCLUnreservedNameRule()); }

-	 ruleEssentialOCLUnreservedName

-{ after(grammarAccess.getEssentialOCLUnreservedNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLUnreservedName

-ruleEssentialOCLUnreservedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }

-(rule__EssentialOCLUnreservedName__Alternatives)

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnreservedName

-entryRuleUnreservedName 

-:

-{ before(grammarAccess.getUnreservedNameRule()); }

-	 ruleUnreservedName

-{ after(grammarAccess.getUnreservedNameRule()); } 

-	 EOF 

-;

-

-// Rule UnreservedName

-ruleUnreservedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }

-	ruleEssentialOCLUnreservedName

-{ after(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleURIPathNameCS

-entryRuleURIPathNameCS 

-:

-{ before(grammarAccess.getURIPathNameCSRule()); }

-	 ruleURIPathNameCS

-{ after(grammarAccess.getURIPathNameCSRule()); } 

-	 EOF 

-;

-

-// Rule URIPathNameCS

-ruleURIPathNameCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getURIPathNameCSAccess().getGroup()); }

-(rule__URIPathNameCS__Group__0)

-{ after(grammarAccess.getURIPathNameCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleURIFirstPathElementCS

-entryRuleURIFirstPathElementCS 

-:

-{ before(grammarAccess.getURIFirstPathElementCSRule()); }

-	 ruleURIFirstPathElementCS

-{ after(grammarAccess.getURIFirstPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule URIFirstPathElementCS

-ruleURIFirstPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }

-(rule__URIFirstPathElementCS__Alternatives)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimitiveTypeIdentifier

-entryRulePrimitiveTypeIdentifier 

-:

-{ before(grammarAccess.getPrimitiveTypeIdentifierRule()); }

-	 rulePrimitiveTypeIdentifier

-{ after(grammarAccess.getPrimitiveTypeIdentifierRule()); } 

-	 EOF 

-;

-

-// Rule PrimitiveTypeIdentifier

-rulePrimitiveTypeIdentifier

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }

-(rule__PrimitiveTypeIdentifier__Alternatives)

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimitiveTypeCS

-entryRulePrimitiveTypeCS 

-:

-{ before(grammarAccess.getPrimitiveTypeCSRule()); }

-	 rulePrimitiveTypeCS

-{ after(grammarAccess.getPrimitiveTypeCSRule()); } 

-	 EOF 

-;

-

-// Rule PrimitiveTypeCS

-rulePrimitiveTypeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }

-(rule__PrimitiveTypeCS__NameAssignment)

-{ after(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionTypeIdentifier

-entryRuleCollectionTypeIdentifier 

-:

-{ before(grammarAccess.getCollectionTypeIdentifierRule()); }

-	 ruleCollectionTypeIdentifier

-{ after(grammarAccess.getCollectionTypeIdentifierRule()); } 

-	 EOF 

-;

-

-// Rule CollectionTypeIdentifier

-ruleCollectionTypeIdentifier

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }

-(rule__CollectionTypeIdentifier__Alternatives)

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionTypeCS

-entryRuleCollectionTypeCS 

-:

-{ before(grammarAccess.getCollectionTypeCSRule()); }

-	 ruleCollectionTypeCS

-{ after(grammarAccess.getCollectionTypeCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionTypeCS

-ruleCollectionTypeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getGroup()); }

-(rule__CollectionTypeCS__Group__0)

-{ after(grammarAccess.getCollectionTypeCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTupleTypeCS

-entryRuleTupleTypeCS 

-:

-{ before(grammarAccess.getTupleTypeCSRule()); }

-	 ruleTupleTypeCS

-{ after(grammarAccess.getTupleTypeCSRule()); } 

-	 EOF 

-;

-

-// Rule TupleTypeCS

-ruleTupleTypeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup()); }

-(rule__TupleTypeCS__Group__0)

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTuplePartCS

-entryRuleTuplePartCS 

-:

-{ before(grammarAccess.getTuplePartCSRule()); }

-	 ruleTuplePartCS

-{ after(grammarAccess.getTuplePartCSRule()); } 

-	 EOF 

-;

-

-// Rule TuplePartCS

-ruleTuplePartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getGroup()); }

-(rule__TuplePartCS__Group__0)

-{ after(grammarAccess.getTuplePartCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionLiteralExpCS

-entryRuleCollectionLiteralExpCS 

-:

-{ before(grammarAccess.getCollectionLiteralExpCSRule()); }

-	 ruleCollectionLiteralExpCS

-{ after(grammarAccess.getCollectionLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionLiteralExpCS

-ruleCollectionLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }

-(rule__CollectionLiteralExpCS__Group__0)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionLiteralPartCS

-entryRuleCollectionLiteralPartCS 

-:

-{ before(grammarAccess.getCollectionLiteralPartCSRule()); }

-	 ruleCollectionLiteralPartCS

-{ after(grammarAccess.getCollectionLiteralPartCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionLiteralPartCS

-ruleCollectionLiteralPartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }

-(rule__CollectionLiteralPartCS__Alternatives)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionPatternCS

-entryRuleCollectionPatternCS 

-:

-{ before(grammarAccess.getCollectionPatternCSRule()); }

-	 ruleCollectionPatternCS

-{ after(grammarAccess.getCollectionPatternCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionPatternCS

-ruleCollectionPatternCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup()); }

-(rule__CollectionPatternCS__Group__0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleConstructorPartCS

-entryRuleConstructorPartCS 

-:

-{ before(grammarAccess.getConstructorPartCSRule()); }

-	 ruleConstructorPartCS

-{ after(grammarAccess.getConstructorPartCSRule()); } 

-	 EOF 

-;

-

-// Rule ConstructorPartCS

-ruleConstructorPartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getGroup()); }

-(rule__ConstructorPartCS__Group__0)

-{ after(grammarAccess.getConstructorPartCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePatternExpCS

-entryRulePatternExpCS 

-:

-{ before(grammarAccess.getPatternExpCSRule()); }

-	 rulePatternExpCS

-{ after(grammarAccess.getPatternExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PatternExpCS

-rulePatternExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getGroup()); }

-(rule__PatternExpCS__Group__0)

-{ after(grammarAccess.getPatternExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLambdaLiteralExpCS

-entryRuleLambdaLiteralExpCS 

-:

-{ before(grammarAccess.getLambdaLiteralExpCSRule()); }

-	 ruleLambdaLiteralExpCS

-{ after(grammarAccess.getLambdaLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule LambdaLiteralExpCS

-ruleLambdaLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }

-(rule__LambdaLiteralExpCS__Group__0)

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimitiveLiteralExpCS

-entryRulePrimitiveLiteralExpCS 

-:

-{ before(grammarAccess.getPrimitiveLiteralExpCSRule()); }

-	 rulePrimitiveLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrimitiveLiteralExpCS

-rulePrimitiveLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }

-(rule__PrimitiveLiteralExpCS__Alternatives)

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTupleLiteralExpCS

-entryRuleTupleLiteralExpCS 

-:

-{ before(grammarAccess.getTupleLiteralExpCSRule()); }

-	 ruleTupleLiteralExpCS

-{ after(grammarAccess.getTupleLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TupleLiteralExpCS

-ruleTupleLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }

-(rule__TupleLiteralExpCS__Group__0)

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTupleLiteralPartCS

-entryRuleTupleLiteralPartCS 

-:

-{ before(grammarAccess.getTupleLiteralPartCSRule()); }

-	 ruleTupleLiteralPartCS

-{ after(grammarAccess.getTupleLiteralPartCSRule()); } 

-	 EOF 

-;

-

-// Rule TupleLiteralPartCS

-ruleTupleLiteralPartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }

-(rule__TupleLiteralPartCS__Group__0)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNumberLiteralExpCS

-entryRuleNumberLiteralExpCS 

-:

-{ before(grammarAccess.getNumberLiteralExpCSRule()); }

-	 ruleNumberLiteralExpCS

-{ after(grammarAccess.getNumberLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NumberLiteralExpCS

-ruleNumberLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }

-(rule__NumberLiteralExpCS__SymbolAssignment)

-{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleStringLiteralExpCS

-entryRuleStringLiteralExpCS 

-:

-{ before(grammarAccess.getStringLiteralExpCSRule()); }

-	 ruleStringLiteralExpCS

-{ after(grammarAccess.getStringLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule StringLiteralExpCS

-ruleStringLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-(

-{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-(rule__StringLiteralExpCS__SegmentsAssignment)

-{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-)

-(

-{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-(rule__StringLiteralExpCS__SegmentsAssignment)*

-{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-)

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleBooleanLiteralExpCS

-entryRuleBooleanLiteralExpCS 

-:

-{ before(grammarAccess.getBooleanLiteralExpCSRule()); }

-	 ruleBooleanLiteralExpCS

-{ after(grammarAccess.getBooleanLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule BooleanLiteralExpCS

-ruleBooleanLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }

-(rule__BooleanLiteralExpCS__Alternatives)

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnlimitedNaturalLiteralExpCS

-entryRuleUnlimitedNaturalLiteralExpCS 

-:

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }

-	 ruleUnlimitedNaturalLiteralExpCS

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule UnlimitedNaturalLiteralExpCS

-ruleUnlimitedNaturalLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }

-(rule__UnlimitedNaturalLiteralExpCS__Group__0)

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleInvalidLiteralExpCS

-entryRuleInvalidLiteralExpCS 

-:

-{ before(grammarAccess.getInvalidLiteralExpCSRule()); }

-	 ruleInvalidLiteralExpCS

-{ after(grammarAccess.getInvalidLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule InvalidLiteralExpCS

-ruleInvalidLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }

-(rule__InvalidLiteralExpCS__Group__0)

-{ after(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNullLiteralExpCS

-entryRuleNullLiteralExpCS 

-:

-{ before(grammarAccess.getNullLiteralExpCSRule()); }

-	 ruleNullLiteralExpCS

-{ after(grammarAccess.getNullLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NullLiteralExpCS

-ruleNullLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }

-(rule__NullLiteralExpCS__Group__0)

-{ after(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeLiteralCS

-entryRuleTypeLiteralCS 

-:

-{ before(grammarAccess.getTypeLiteralCSRule()); }

-	 ruleTypeLiteralCS

-{ after(grammarAccess.getTypeLiteralCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeLiteralCS

-ruleTypeLiteralCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }

-(rule__TypeLiteralCS__Alternatives)

-{ after(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeLiteralWithMultiplicityCS

-entryRuleTypeLiteralWithMultiplicityCS 

-:

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }

-	 ruleTypeLiteralWithMultiplicityCS

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeLiteralWithMultiplicityCS

-ruleTypeLiteralWithMultiplicityCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }

-(rule__TypeLiteralWithMultiplicityCS__Group__0)

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeLiteralExpCS

-entryRuleTypeLiteralExpCS 

-:

-{ before(grammarAccess.getTypeLiteralExpCSRule()); }

-	 ruleTypeLiteralExpCS

-{ after(grammarAccess.getTypeLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeLiteralExpCS

-ruleTypeLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }

-(rule__TypeLiteralExpCS__OwnedTypeAssignment)

-{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeNameExpCS

-entryRuleTypeNameExpCS 

-:

-{ before(grammarAccess.getTypeNameExpCSRule()); }

-	 ruleTypeNameExpCS

-{ after(grammarAccess.getTypeNameExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeNameExpCS

-ruleTypeNameExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getGroup()); }

-(rule__TypeNameExpCS__Group__0)

-{ after(grammarAccess.getTypeNameExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeExpCS

-entryRuleTypeExpCS 

-:

-{ before(grammarAccess.getTypeExpCSRule()); }

-	 ruleTypeExpCS

-{ after(grammarAccess.getTypeExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeExpCS

-ruleTypeExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getGroup()); }

-(rule__TypeExpCS__Group__0)

-{ after(grammarAccess.getTypeExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleExpCS

-entryRuleExpCS 

-:

-{ before(grammarAccess.getExpCSRule()); }

-	 ruleExpCS

-{ after(grammarAccess.getExpCSRule()); } 

-	 EOF 

-;

-

-// Rule ExpCS

-ruleExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getExpCSAccess().getAlternatives()); }

-(rule__ExpCS__Alternatives)

-{ after(grammarAccess.getExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrefixedLetExpCS

-entryRulePrefixedLetExpCS 

-:

-{ before(grammarAccess.getPrefixedLetExpCSRule()); }

-	 rulePrefixedLetExpCS

-{ after(grammarAccess.getPrefixedLetExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrefixedLetExpCS

-rulePrefixedLetExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }

-(rule__PrefixedLetExpCS__Alternatives)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrefixedPrimaryExpCS

-entryRulePrefixedPrimaryExpCS 

-:

-{ before(grammarAccess.getPrefixedPrimaryExpCSRule()); }

-	 rulePrefixedPrimaryExpCS

-{ after(grammarAccess.getPrefixedPrimaryExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrefixedPrimaryExpCS

-rulePrefixedPrimaryExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }

-(rule__PrefixedPrimaryExpCS__Alternatives)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimaryExpCS

-entryRulePrimaryExpCS 

-:

-{ before(grammarAccess.getPrimaryExpCSRule()); }

-	 rulePrimaryExpCS

-{ after(grammarAccess.getPrimaryExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrimaryExpCS

-rulePrimaryExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }

-(rule__PrimaryExpCS__Alternatives)

-{ after(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNameExpCS

-entryRuleNameExpCS 

-:

-{ before(grammarAccess.getNameExpCSRule()); }

-	 ruleNameExpCS

-{ after(grammarAccess.getNameExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NameExpCS

-ruleNameExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNameExpCSAccess().getGroup()); }

-(rule__NameExpCS__Group__0)

-{ after(grammarAccess.getNameExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCurlyBracketedClauseCS

-entryRuleCurlyBracketedClauseCS 

-:

-{ before(grammarAccess.getCurlyBracketedClauseCSRule()); }

-	 ruleCurlyBracketedClauseCS

-{ after(grammarAccess.getCurlyBracketedClauseCSRule()); } 

-	 EOF 

-;

-

-// Rule CurlyBracketedClauseCS

-ruleCurlyBracketedClauseCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }

-(rule__CurlyBracketedClauseCS__Group__0)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleRoundBracketedClauseCS

-entryRuleRoundBracketedClauseCS 

-:

-{ before(grammarAccess.getRoundBracketedClauseCSRule()); }

-	 ruleRoundBracketedClauseCS

-{ after(grammarAccess.getRoundBracketedClauseCSRule()); } 

-	 EOF 

-;

-

-// Rule RoundBracketedClauseCS

-ruleRoundBracketedClauseCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }

-(rule__RoundBracketedClauseCS__Group__0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleSquareBracketedClauseCS

-entryRuleSquareBracketedClauseCS 

-:

-{ before(grammarAccess.getSquareBracketedClauseCSRule()); }

-	 ruleSquareBracketedClauseCS

-{ after(grammarAccess.getSquareBracketedClauseCSRule()); } 

-	 EOF 

-;

-

-// Rule SquareBracketedClauseCS

-ruleSquareBracketedClauseCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }

-(rule__SquareBracketedClauseCS__Group__0)

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingArgCS

-entryRuleNavigatingArgCS 

-:

-{ before(grammarAccess.getNavigatingArgCSRule()); }

-	 ruleNavigatingArgCS

-{ after(grammarAccess.getNavigatingArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingArgCS

-ruleNavigatingArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }

-(rule__NavigatingArgCS__Alternatives)

-{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingBarArgCS

-entryRuleNavigatingBarArgCS 

-:

-{ before(grammarAccess.getNavigatingBarArgCSRule()); }

-	 ruleNavigatingBarArgCS

-{ after(grammarAccess.getNavigatingBarArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingBarArgCS

-ruleNavigatingBarArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }

-(rule__NavigatingBarArgCS__Group__0)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingCommaArgCS

-entryRuleNavigatingCommaArgCS 

-:

-{ before(grammarAccess.getNavigatingCommaArgCSRule()); }

-	 ruleNavigatingCommaArgCS

-{ after(grammarAccess.getNavigatingCommaArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingCommaArgCS

-ruleNavigatingCommaArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }

-(rule__NavigatingCommaArgCS__Group__0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingSemiArgCS

-entryRuleNavigatingSemiArgCS 

-:

-{ before(grammarAccess.getNavigatingSemiArgCSRule()); }

-	 ruleNavigatingSemiArgCS

-{ after(grammarAccess.getNavigatingSemiArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingSemiArgCS

-ruleNavigatingSemiArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }

-(rule__NavigatingSemiArgCS__Group__0)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingArgExpCS

-entryRuleNavigatingArgExpCS 

-:

-{ before(grammarAccess.getNavigatingArgExpCSRule()); }

-	 ruleNavigatingArgExpCS

-{ after(grammarAccess.getNavigatingArgExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingArgExpCS

-ruleNavigatingArgExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); }

-	ruleExpCS

-{ after(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleIfExpCS

-entryRuleIfExpCS 

-:

-{ before(grammarAccess.getIfExpCSRule()); }

-	 ruleIfExpCS

-{ after(grammarAccess.getIfExpCSRule()); } 

-	 EOF 

-;

-

-// Rule IfExpCS

-ruleIfExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIfExpCSAccess().getGroup()); }

-(rule__IfExpCS__Group__0)

-{ after(grammarAccess.getIfExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleElseIfThenExpCS

-entryRuleElseIfThenExpCS 

-:

-{ before(grammarAccess.getElseIfThenExpCSRule()); }

-	 ruleElseIfThenExpCS

-{ after(grammarAccess.getElseIfThenExpCSRule()); } 

-	 EOF 

-;

-

-// Rule ElseIfThenExpCS

-ruleElseIfThenExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }

-(rule__ElseIfThenExpCS__Group__0)

-{ after(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLetExpCS

-entryRuleLetExpCS 

-:

-{ before(grammarAccess.getLetExpCSRule()); }

-	 ruleLetExpCS

-{ after(grammarAccess.getLetExpCSRule()); } 

-	 EOF 

-;

-

-// Rule LetExpCS

-ruleLetExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLetExpCSAccess().getGroup()); }

-(rule__LetExpCS__Group__0)

-{ after(grammarAccess.getLetExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLetVariableCS

-entryRuleLetVariableCS 

-:

-{ before(grammarAccess.getLetVariableCSRule()); }

-	 ruleLetVariableCS

-{ after(grammarAccess.getLetVariableCSRule()); } 

-	 EOF 

-;

-

-// Rule LetVariableCS

-ruleLetVariableCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getGroup()); }

-(rule__LetVariableCS__Group__0)

-{ after(grammarAccess.getLetVariableCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNestedExpCS

-entryRuleNestedExpCS 

-:

-{ before(grammarAccess.getNestedExpCSRule()); }

-	 ruleNestedExpCS

-{ after(grammarAccess.getNestedExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NestedExpCS

-ruleNestedExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getGroup()); }

-(rule__NestedExpCS__Group__0)

-{ after(grammarAccess.getNestedExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleSelfExpCS

-entryRuleSelfExpCS 

-:

-{ before(grammarAccess.getSelfExpCSRule()); }

-	 ruleSelfExpCS

-{ after(grammarAccess.getSelfExpCSRule()); } 

-	 EOF 

-;

-

-// Rule SelfExpCS

-ruleSelfExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getSelfExpCSAccess().getGroup()); }

-(rule__SelfExpCS__Group__0)

-{ after(grammarAccess.getSelfExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleMultiplicityBoundsCS

-entryRuleMultiplicityBoundsCS 

-:

-{ before(grammarAccess.getMultiplicityBoundsCSRule()); }

-	 ruleMultiplicityBoundsCS

-{ after(grammarAccess.getMultiplicityBoundsCSRule()); } 

-	 EOF 

-;

-

-// Rule MultiplicityBoundsCS

-ruleMultiplicityBoundsCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }

-(rule__MultiplicityBoundsCS__Group__0)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleMultiplicityCS

-entryRuleMultiplicityCS 

-:

-{ before(grammarAccess.getMultiplicityCSRule()); }

-	 ruleMultiplicityCS

-{ after(grammarAccess.getMultiplicityCSRule()); } 

-	 EOF 

-;

-

-// Rule MultiplicityCS

-ruleMultiplicityCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getGroup()); }

-(rule__MultiplicityCS__Group__0)

-{ after(grammarAccess.getMultiplicityCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleMultiplicityStringCS

-entryRuleMultiplicityStringCS 

-:

-{ before(grammarAccess.getMultiplicityStringCSRule()); }

-	 ruleMultiplicityStringCS

-{ after(grammarAccess.getMultiplicityStringCSRule()); } 

-	 EOF 

-;

-

-// Rule MultiplicityStringCS

-ruleMultiplicityStringCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }

-(rule__MultiplicityStringCS__StringBoundsAssignment)

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePathNameCS

-entryRulePathNameCS 

-:

-{ before(grammarAccess.getPathNameCSRule()); }

-	 rulePathNameCS

-{ after(grammarAccess.getPathNameCSRule()); } 

-	 EOF 

-;

-

-// Rule PathNameCS

-rulePathNameCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPathNameCSAccess().getGroup()); }

-(rule__PathNameCS__Group__0)

-{ after(grammarAccess.getPathNameCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleFirstPathElementCS

-entryRuleFirstPathElementCS 

-:

-{ before(grammarAccess.getFirstPathElementCSRule()); }

-	 ruleFirstPathElementCS

-{ after(grammarAccess.getFirstPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule FirstPathElementCS

-ruleFirstPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }

-(rule__FirstPathElementCS__ReferredElementAssignment)

-{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNextPathElementCS

-entryRuleNextPathElementCS 

-:

-{ before(grammarAccess.getNextPathElementCSRule()); }

-	 ruleNextPathElementCS

-{ after(grammarAccess.getNextPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule NextPathElementCS

-ruleNextPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }

-(rule__NextPathElementCS__ReferredElementAssignment)

-{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTemplateParameterSubstitutionCS

-entryRuleTemplateParameterSubstitutionCS 

-:

-{ before(grammarAccess.getTemplateParameterSubstitutionCSRule()); }

-	 ruleTemplateParameterSubstitutionCS

-{ after(grammarAccess.getTemplateParameterSubstitutionCSRule()); } 

-	 EOF 

-;

-

-// Rule TemplateParameterSubstitutionCS

-ruleTemplateParameterSubstitutionCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }

-(rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment)

-{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeParameterCS

-entryRuleTypeParameterCS 

-:

-{ before(grammarAccess.getTypeParameterCSRule()); }

-	 ruleTypeParameterCS

-{ after(grammarAccess.getTypeParameterCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeParameterCS

-ruleTypeParameterCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup()); }

-(rule__TypeParameterCS__Group__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeRefCS

-entryRuleTypeRefCS 

-:

-{ before(grammarAccess.getTypeRefCSRule()); }

-	 ruleTypeRefCS

-{ after(grammarAccess.getTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeRefCS

-ruleTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeRefCSAccess().getAlternatives()); }

-(rule__TypeRefCS__Alternatives)

-{ after(grammarAccess.getTypeRefCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypedTypeRefCS

-entryRuleTypedTypeRefCS 

-:

-{ before(grammarAccess.getTypedTypeRefCSRule()); }

-	 ruleTypedTypeRefCS

-{ after(grammarAccess.getTypedTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypedTypeRefCS

-ruleTypedTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }

-(rule__TypedTypeRefCS__Group__0)

-{ after(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleWildcardTypeRefCS

-entryRuleWildcardTypeRefCS 

-:

-{ before(grammarAccess.getWildcardTypeRefCSRule()); }

-	 ruleWildcardTypeRefCS

-{ after(grammarAccess.getWildcardTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule WildcardTypeRefCS

-ruleWildcardTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }

-(rule__WildcardTypeRefCS__Group__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleID

-entryRuleID 

-:

-{ before(grammarAccess.getIDRule()); }

-	 ruleID

-{ after(grammarAccess.getIDRule()); } 

-	 EOF 

-;

-

-// Rule ID

-ruleID

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIDAccess().getAlternatives()); }

-(rule__ID__Alternatives)

-{ after(grammarAccess.getIDAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleIdentifier

-entryRuleIdentifier 

-:

-{ before(grammarAccess.getIdentifierRule()); }

-	 ruleIdentifier

-{ after(grammarAccess.getIdentifierRule()); } 

-	 EOF 

-;

-

-// Rule Identifier

-ruleIdentifier

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }

-	ruleID

-{ after(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLOWER

-entryRuleLOWER 

-:

-{ before(grammarAccess.getLOWERRule()); }

-	 ruleLOWER

-{ after(grammarAccess.getLOWERRule()); } 

-	 EOF 

-;

-

-// Rule LOWER

-ruleLOWER

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }

-	RULE_INT

-{ after(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNUMBER_LITERAL

-entryRuleNUMBER_LITERAL 

-:

-{ before(grammarAccess.getNUMBER_LITERALRule()); }

-	 ruleNUMBER_LITERAL

-{ after(grammarAccess.getNUMBER_LITERALRule()); } 

-	 EOF 

-;

-

-// Rule NUMBER_LITERAL

-ruleNUMBER_LITERAL

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }

-	RULE_INT

-{ after(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleStringLiteral

-entryRuleStringLiteral 

-:

-{ before(grammarAccess.getStringLiteralRule()); }

-	 ruleStringLiteral

-{ after(grammarAccess.getStringLiteralRule()); } 

-	 EOF 

-;

-

-// Rule StringLiteral

-ruleStringLiteral

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-	RULE_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUPPER

-entryRuleUPPER 

-:

-{ before(grammarAccess.getUPPERRule()); }

-	 ruleUPPER

-{ after(grammarAccess.getUPPERRule()); } 

-	 EOF 

-;

-

-// Rule UPPER

-ruleUPPER

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUPPERAccess().getAlternatives()); }

-(rule__UPPER__Alternatives)

-{ after(grammarAccess.getUPPERAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleURI

-entryRuleURI 

-:

-{ before(grammarAccess.getURIRule()); }

-	 ruleURI

-{ after(grammarAccess.getURIRule()); } 

-	 EOF 

-;

-

-// Rule URI

-ruleURI

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-	RULE_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-rule__EnumerationLiteralName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall_0()); }

-	ruleEssentialOCLUnrestrictedName

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getAbstractKeyword_1()); }

-

-	'abstract' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getAbstractKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getAttributeKeyword_2()); }

-

-	'attribute' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getAttributeKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getBodyKeyword_3()); }

-

-	'body' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getBodyKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getCallableKeyword_4()); }

-

-	'callable' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getCallableKeyword_4()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getClassKeyword_5()); }

-

-	'class' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getClassKeyword_5()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getComposesKeyword_6()); }

-

-	'composes' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getComposesKeyword_6()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getDatatypeKeyword_7()); }

-

-	'datatype' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getDatatypeKeyword_7()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getDefinitionKeyword_8()); }

-

-	'definition' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getDefinitionKeyword_8()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getDerivationKeyword_9()); }

-

-	'derivation' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getDerivationKeyword_9()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getDerivedKeyword_10()); }

-

-	'derived' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getDerivedKeyword_10()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getEnumKeyword_11()); }

-

-	'enum' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getEnumKeyword_11()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getExtendsKeyword_12()); }

-

-	'extends' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getExtendsKeyword_12()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getIdKeyword_13()); }

-

-	'id' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getIdKeyword_13()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getImportKeyword_14()); }

-

-	'import' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getImportKeyword_14()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getInitialKeyword_15()); }

-

-	'initial' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getInitialKeyword_15()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getInterfaceKeyword_16()); }

-

-	'interface' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getInterfaceKeyword_16()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getKeyKeyword_17()); }

-

-	'key' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getKeyKeyword_17()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getLibraryKeyword_18()); }

-

-	'library' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getLibraryKeyword_18()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getModuleKeyword_19()); }

-

-	'module' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getModuleKeyword_19()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getOperationKeyword_20()); }

-

-	'operation' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getOperationKeyword_20()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getOrderedKeyword_21()); }

-

-	'ordered' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getOrderedKeyword_21()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getPackageKeyword_22()); }

-

-	'package' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getPackageKeyword_22()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getPostconditionKeyword_23()); }

-

-	'postcondition' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getPostconditionKeyword_23()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getPreconditionKeyword_24()); }

-

-	'precondition' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getPreconditionKeyword_24()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getPrimitiveKeyword_25()); }

-

-	'primitive' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getPrimitiveKeyword_25()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getPropertyKeyword_26()); }

-

-	'property' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getPropertyKeyword_26()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getReadonlyKeyword_27()); }

-

-	'readonly' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getReadonlyKeyword_27()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getReferenceKeyword_28()); }

-

-	'reference' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getReferenceKeyword_28()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getResolveKeyword_29()); }

-

-	'resolve' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getResolveKeyword_29()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getStaticKeyword_30()); }

-

-	'static' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getStaticKeyword_30()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getSuperKeyword_31()); }

-

-	'super' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getSuperKeyword_31()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getThrowsKeyword_32()); }

-

-	'throws' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getThrowsKeyword_32()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getTransientKeyword_33()); }

-

-	'transient' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getTransientKeyword_33()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getUniqueKeyword_34()); }

-

-	'unique' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getUniqueKeyword_34()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getUnsettableKeyword_35()); }

-

-	'unsettable' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getUnsettableKeyword_35()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralNameAccess().getVolatileKeyword_36()); }

-

-	'volatile' 

-

-{ after(grammarAccess.getEnumerationLiteralNameAccess().getVolatileKeyword_36()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__Alternatives_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getGroup_3_0()); }

-(rule__InvariantConstraintCS__Group_3_0__0)

-{ after(grammarAccess.getInvariantConstraintCSAccess().getGroup_3_0()); }

-)

-

-    |(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getSemicolonKeyword_3_1()); }

-

-	';' 

-

-{ after(grammarAccess.getInvariantConstraintCSAccess().getSemicolonKeyword_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__NameAlternatives_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getNameUnrestrictedNameParserRuleCall_2_0_0()); }

-	ruleUnrestrictedName

-{ after(grammarAccess.getAnnotationCSAccess().getNameUnrestrictedNameParserRuleCall_2_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getAnnotationCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); }

-	RULE_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getAnnotationCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Alternatives_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getGroup_4_0()); }

-(rule__AnnotationCS__Group_4_0__0)

-{ after(grammarAccess.getAnnotationCSAccess().getGroup_4_0()); }

-)

-

-    |(

-{ before(grammarAccess.getAnnotationCSAccess().getSemicolonKeyword_4_1()); }

-

-	';' 

-

-{ after(grammarAccess.getAnnotationCSAccess().getSemicolonKeyword_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Alternatives_4_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAssignment_4_0_1_0()); }

-(rule__AnnotationCS__OwnedAnnotationsAssignment_4_0_1_0)

-{ after(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAssignment_4_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedContentsAssignment_4_0_1_1()); }

-(rule__AnnotationCS__OwnedContentsAssignment_4_0_1_1)

-{ after(grammarAccess.getAnnotationCSAccess().getOwnedContentsAssignment_4_0_1_1()); }

-)

-

-    |(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedReferencesAssignment_4_0_1_2()); }

-(rule__AnnotationCS__OwnedReferencesAssignment_4_0_1_2)

-{ after(grammarAccess.getAnnotationCSAccess().getOwnedReferencesAssignment_4_0_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationElementCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationElementCSAccess().getAnnotationCSParserRuleCall_0()); }

-	ruleAnnotationCS

-{ after(grammarAccess.getAnnotationElementCSAccess().getAnnotationCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getAnnotationElementCSAccess().getDocumentationCSParserRuleCall_1()); }

-	ruleDocumentationCS

-{ after(grammarAccess.getAnnotationElementCSAccess().getDocumentationCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getAnnotationElementCSAccess().getSysMLCSParserRuleCall_2()); }

-	ruleSysMLCS

-{ after(grammarAccess.getAnnotationElementCSAccess().getSysMLCSParserRuleCall_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Alternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getGroup_0_0()); }

-(rule__AttributeCS__Group_0_0__0)

-{ after(grammarAccess.getAttributeCSAccess().getGroup_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getGroup_0_1()); }

-(rule__AttributeCS__Group_0_1__0)

-{ after(grammarAccess.getAttributeCSAccess().getGroup_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Alternatives_5_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_0()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_0)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_1()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_1)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_2()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_2)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_2()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_3()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_3)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_3()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_4()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_4)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_4()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_5()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_5)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_5()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_6()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_6)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_6()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_7()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_7)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_7()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_8()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_8)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_8()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_9()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_9)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_9()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_10()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_10)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_10()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_11()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_11)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_11()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_12()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_12)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_12()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_13()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_13)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_13()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_14()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_14)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_14()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_15()); }

-(rule__AttributeCS__QualifiersAssignment_5_1_0_15)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_15()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Alternatives_6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getGroup_6_0()); }

-(rule__AttributeCS__Group_6_0__0)

-{ after(grammarAccess.getAttributeCSAccess().getGroup_6_0()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_1()); }

-

-	';' 

-

-{ after(grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Alternatives_6_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getOwnedAnnotationsAssignment_6_0_1_0()); }

-(rule__AttributeCS__OwnedAnnotationsAssignment_6_0_1_0)

-{ after(grammarAccess.getAttributeCSAccess().getOwnedAnnotationsAssignment_6_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getGroup_6_0_1_1()); }

-(rule__AttributeCS__Group_6_0_1_1__0)

-{ after(grammarAccess.getAttributeCSAccess().getGroup_6_0_1_1()); }

-)

-

-    |(

-{ before(grammarAccess.getAttributeCSAccess().getGroup_6_0_1_2()); }

-(rule__AttributeCS__Group_6_0_1_2__0)

-{ after(grammarAccess.getAttributeCSAccess().getGroup_6_0_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ClassCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getClassCSAccess().getStructuredClassCSParserRuleCall_0()); }

-	ruleStructuredClassCS

-{ after(grammarAccess.getClassCSAccess().getStructuredClassCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getClassCSAccess().getDataTypeCSParserRuleCall_1()); }

-	ruleDataTypeCS

-{ after(grammarAccess.getClassCSAccess().getDataTypeCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getClassCSAccess().getEnumerationCSParserRuleCall_2()); }

-	ruleEnumerationCS

-{ after(grammarAccess.getClassCSAccess().getEnumerationCSParserRuleCall_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Alternatives_5_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getIsSerializableAssignment_5_1_0()); }

-(rule__DataTypeCS__IsSerializableAssignment_5_1_0)

-{ after(grammarAccess.getDataTypeCSAccess().getIsSerializableAssignment_5_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getDataTypeCSAccess().getSerializableKeyword_5_1_1()); }

-

-	'!serializable' 

-

-{ after(grammarAccess.getDataTypeCSAccess().getSerializableKeyword_5_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Alternatives_6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getGroup_6_0()); }

-(rule__DataTypeCS__Group_6_0__0)

-{ after(grammarAccess.getDataTypeCSAccess().getGroup_6_0()); }

-)

-

-    |(

-{ before(grammarAccess.getDataTypeCSAccess().getSemicolonKeyword_6_1()); }

-

-	';' 

-

-{ after(grammarAccess.getDataTypeCSAccess().getSemicolonKeyword_6_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Alternatives_6_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getOwnedAnnotationsAssignment_6_0_1_0()); }

-(rule__DataTypeCS__OwnedAnnotationsAssignment_6_0_1_0)

-{ after(grammarAccess.getDataTypeCSAccess().getOwnedAnnotationsAssignment_6_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getDataTypeCSAccess().getOwnedConstraintsAssignment_6_0_1_1()); }

-(rule__DataTypeCS__OwnedConstraintsAssignment_6_0_1_1)

-{ after(grammarAccess.getDataTypeCSAccess().getOwnedConstraintsAssignment_6_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DetailCS__NameAlternatives_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDetailCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); }

-	ruleUnrestrictedName

-{ after(grammarAccess.getDetailCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getDetailCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_0_0_1()); }

-	RULE_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getDetailCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_0_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DetailCS__ValuesAlternatives_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDetailCSAccess().getValuesSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_0()); }

-	RULE_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getDetailCSAccess().getValuesSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getDetailCSAccess().getValuesML_SINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); }

-	RULE_ML_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getDetailCSAccess().getValuesML_SINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Alternatives_4_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getIsSerializableAssignment_4_1_0()); }

-(rule__EnumerationCS__IsSerializableAssignment_4_1_0)

-{ after(grammarAccess.getEnumerationCSAccess().getIsSerializableAssignment_4_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationCSAccess().getSerializableKeyword_4_1_1()); }

-

-	'!serializable' 

-

-{ after(grammarAccess.getEnumerationCSAccess().getSerializableKeyword_4_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Alternatives_5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getGroup_5_0()); }

-(rule__EnumerationCS__Group_5_0__0)

-{ after(grammarAccess.getEnumerationCSAccess().getGroup_5_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationCSAccess().getSemicolonKeyword_5_1()); }

-

-	';' 

-

-{ after(grammarAccess.getEnumerationCSAccess().getSemicolonKeyword_5_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Alternatives_5_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getOwnedAnnotationsAssignment_5_0_1_0()); }

-(rule__EnumerationCS__OwnedAnnotationsAssignment_5_0_1_0)

-{ after(grammarAccess.getEnumerationCSAccess().getOwnedAnnotationsAssignment_5_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationCSAccess().getOwnedLiteralsAssignment_5_0_1_1()); }

-(rule__EnumerationCS__OwnedLiteralsAssignment_5_0_1_1)

-{ after(grammarAccess.getEnumerationCSAccess().getOwnedLiteralsAssignment_5_0_1_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationCSAccess().getOwnedConstraintsAssignment_5_0_1_2()); }

-(rule__EnumerationCS__OwnedConstraintsAssignment_5_0_1_2)

-{ after(grammarAccess.getEnumerationCSAccess().getOwnedConstraintsAssignment_5_0_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__Alternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getGroup_0_0()); }

-(rule__EnumerationLiteralCS__Group_0_0__0)

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getGroup_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getNameAssignment_0_1()); }

-(rule__EnumerationLiteralCS__NameAssignment_0_1)

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getNameAssignment_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getGroup_2_0()); }

-(rule__EnumerationLiteralCS__Group_2_0__0)

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getSemicolonKeyword_2_1()); }

-

-	';' 

-

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getSemicolonKeyword_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ModelElementCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getModelElementCSAccess().getClassCSParserRuleCall_0()); }

-	ruleClassCS

-{ after(grammarAccess.getModelElementCSAccess().getClassCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getModelElementCSAccess().getEnumerationLiteralCSParserRuleCall_1()); }

-	ruleEnumerationLiteralCS

-{ after(grammarAccess.getModelElementCSAccess().getEnumerationLiteralCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getModelElementCSAccess().getOperationCSParserRuleCall_2()); }

-	ruleOperationCS

-{ after(grammarAccess.getModelElementCSAccess().getOperationCSParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getModelElementCSAccess().getPackageCSParserRuleCall_3()); }

-	rulePackageCS

-{ after(grammarAccess.getModelElementCSAccess().getPackageCSParserRuleCall_3()); }

-)

-

-    |(

-{ before(grammarAccess.getModelElementCSAccess().getStructuralFeatureCSParserRuleCall_4()); }

-	ruleStructuralFeatureCS

-{ after(grammarAccess.getModelElementCSAccess().getStructuralFeatureCSParserRuleCall_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Alternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getGroup_0_0()); }

-(rule__OperationCS__Group_0_0__0)

-{ after(grammarAccess.getOperationCSAccess().getGroup_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getOperationCSAccess().getGroup_0_1()); }

-(rule__OperationCS__Group_0_1__0)

-{ after(grammarAccess.getOperationCSAccess().getGroup_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Alternatives_9_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_0()); }

-(rule__OperationCS__QualifiersAssignment_9_1_0_0)

-{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_1()); }

-(rule__OperationCS__QualifiersAssignment_9_1_0_1)

-{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_2()); }

-(rule__OperationCS__QualifiersAssignment_9_1_0_2)

-{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_2()); }

-)

-

-    |(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_3()); }

-(rule__OperationCS__QualifiersAssignment_9_1_0_3)

-{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_3()); }

-)

-

-    |(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_4()); }

-(rule__OperationCS__QualifiersAssignment_9_1_0_4)

-{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_4()); }

-)

-

-    |(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_5()); }

-(rule__OperationCS__QualifiersAssignment_9_1_0_5)

-{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Alternatives_10

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getGroup_10_0()); }

-(rule__OperationCS__Group_10_0__0)

-{ after(grammarAccess.getOperationCSAccess().getGroup_10_0()); }

-)

-

-    |(

-{ before(grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_1()); }

-

-	';' 

-

-{ after(grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Alternatives_10_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedAnnotationsAssignment_10_0_1_0()); }

-(rule__OperationCS__OwnedAnnotationsAssignment_10_0_1_0)

-{ after(grammarAccess.getOperationCSAccess().getOwnedAnnotationsAssignment_10_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getOperationCSAccess().getOwnedPreconditionsAssignment_10_0_1_1()); }

-(rule__OperationCS__OwnedPreconditionsAssignment_10_0_1_1)

-{ after(grammarAccess.getOperationCSAccess().getOwnedPreconditionsAssignment_10_0_1_1()); }

-)

-

-    |(

-{ before(grammarAccess.getOperationCSAccess().getGroup_10_0_1_2()); }

-(rule__OperationCS__Group_10_0_1_2__0)

-{ after(grammarAccess.getOperationCSAccess().getGroup_10_0_1_2()); }

-)

-

-    |(

-{ before(grammarAccess.getOperationCSAccess().getOwnedPostconditionsAssignment_10_0_1_3()); }

-(rule__OperationCS__OwnedPostconditionsAssignment_10_0_1_3)

-{ after(grammarAccess.getOperationCSAccess().getOwnedPostconditionsAssignment_10_0_1_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Alternatives_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getGroup_4_0()); }

-(rule__PackageCS__Group_4_0__0)

-{ after(grammarAccess.getPackageCSAccess().getGroup_4_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPackageCSAccess().getSemicolonKeyword_4_1()); }

-

-	';' 

-

-{ after(grammarAccess.getPackageCSAccess().getSemicolonKeyword_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Alternatives_4_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAssignment_4_0_1_0()); }

-(rule__PackageCS__OwnedAnnotationsAssignment_4_0_1_0)

-{ after(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAssignment_4_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPackageCSAccess().getOwnedPackagesAssignment_4_0_1_1()); }

-(rule__PackageCS__OwnedPackagesAssignment_4_0_1_1)

-{ after(grammarAccess.getPackageCSAccess().getOwnedPackagesAssignment_4_0_1_1()); }

-)

-

-    |(

-{ before(grammarAccess.getPackageCSAccess().getOwnedClassesAssignment_4_0_1_2()); }

-(rule__PackageCS__OwnedClassesAssignment_4_0_1_2)

-{ after(grammarAccess.getPackageCSAccess().getOwnedClassesAssignment_4_0_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Alternatives_2_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_0()); }

-(rule__ParameterCS__QualifiersAssignment_2_1_0_0)

-{ after(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_1()); }

-(rule__ParameterCS__QualifiersAssignment_2_1_0_1)

-{ after(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_2()); }

-(rule__ParameterCS__QualifiersAssignment_2_1_0_2)

-{ after(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_2()); }

-)

-

-    |(

-{ before(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_3()); }

-(rule__ParameterCS__QualifiersAssignment_2_1_0_3)

-{ after(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Alternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getGroup_0_0()); }

-(rule__ReferenceCS__Group_0_0__0)

-{ after(grammarAccess.getReferenceCSAccess().getGroup_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getGroup_0_1()); }

-(rule__ReferenceCS__Group_0_1__0)

-{ after(grammarAccess.getReferenceCSAccess().getGroup_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Alternatives_6_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_0()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_0)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_1()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_1)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_2()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_2)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_2()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_3()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_3)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_3()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_4()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_4)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_4()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_5()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_5)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_5()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_6()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_6)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_6()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_7()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_7)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_7()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_8()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_8)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_8()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_9()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_9)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_9()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_10()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_10)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_10()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_11()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_11)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_11()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_12()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_12)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_12()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_13()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_13)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_13()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_14()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_14)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_14()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_15()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_15)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_15()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_16()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_16)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_16()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_17()); }

-(rule__ReferenceCS__QualifiersAssignment_6_1_0_17)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_17()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Alternatives_7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getGroup_7_0()); }

-(rule__ReferenceCS__Group_7_0__0)

-{ after(grammarAccess.getReferenceCSAccess().getGroup_7_0()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_1()); }

-

-	';' 

-

-{ after(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Alternatives_7_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getOwnedAnnotationsAssignment_7_0_1_0()); }

-(rule__ReferenceCS__OwnedAnnotationsAssignment_7_0_1_0)

-{ after(grammarAccess.getReferenceCSAccess().getOwnedAnnotationsAssignment_7_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_1()); }

-(rule__ReferenceCS__Group_7_0_1_1__0)

-{ after(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_1()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_2()); }

-(rule__ReferenceCS__Group_7_0_1_2__0)

-{ after(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_2()); }

-)

-

-    |(

-{ before(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_3()); }

-(rule__ReferenceCS__Group_7_0_1_3__0)

-{ after(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SpecificationCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSpecificationCSAccess().getOwnedExpressionAssignment_0()); }

-(rule__SpecificationCS__OwnedExpressionAssignment_0)

-{ after(grammarAccess.getSpecificationCSAccess().getOwnedExpressionAssignment_0()); }

-)

-

-    |(

-{ before(grammarAccess.getSpecificationCSAccess().getExprStringAssignment_1()); }

-(rule__SpecificationCS__ExprStringAssignment_1)

-{ after(grammarAccess.getSpecificationCSAccess().getExprStringAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Alternatives_7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getGroup_7_0()); }

-(rule__StructuredClassCS__Group_7_0__0)

-{ after(grammarAccess.getStructuredClassCSAccess().getGroup_7_0()); }

-)

-

-    |(

-{ before(grammarAccess.getStructuredClassCSAccess().getSemicolonKeyword_7_1()); }

-

-	';' 

-

-{ after(grammarAccess.getStructuredClassCSAccess().getSemicolonKeyword_7_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Alternatives_7_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getOwnedAnnotationsAssignment_7_0_1_0()); }

-(rule__StructuredClassCS__OwnedAnnotationsAssignment_7_0_1_0)

-{ after(grammarAccess.getStructuredClassCSAccess().getOwnedAnnotationsAssignment_7_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getStructuredClassCSAccess().getOwnedOperationsAssignment_7_0_1_1()); }

-(rule__StructuredClassCS__OwnedOperationsAssignment_7_0_1_1)

-{ after(grammarAccess.getStructuredClassCSAccess().getOwnedOperationsAssignment_7_0_1_1()); }

-)

-

-    |(

-{ before(grammarAccess.getStructuredClassCSAccess().getOwnedPropertiesAssignment_7_0_1_2()); }

-(rule__StructuredClassCS__OwnedPropertiesAssignment_7_0_1_2)

-{ after(grammarAccess.getStructuredClassCSAccess().getOwnedPropertiesAssignment_7_0_1_2()); }

-)

-

-    |(

-{ before(grammarAccess.getStructuredClassCSAccess().getOwnedConstraintsAssignment_7_0_1_3()); }

-(rule__StructuredClassCS__OwnedConstraintsAssignment_7_0_1_3)

-{ after(grammarAccess.getStructuredClassCSAccess().getOwnedConstraintsAssignment_7_0_1_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuralFeatureCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuralFeatureCSAccess().getAttributeCSParserRuleCall_0()); }

-	ruleAttributeCS

-{ after(grammarAccess.getStructuralFeatureCSAccess().getAttributeCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getStructuralFeatureCSAccess().getReferenceCSParserRuleCall_1()); }

-	ruleReferenceCS

-{ after(grammarAccess.getStructuralFeatureCSAccess().getReferenceCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SysMLCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSysMLCSAccess().getGroup_2_0()); }

-(rule__SysMLCS__Group_2_0__0)

-{ after(grammarAccess.getSysMLCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getSysMLCSAccess().getGroup_2_1()); }

-(rule__SysMLCS__Group_2_1__0)

-{ after(grammarAccess.getSysMLCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_0()); }

-(rule__TemplateBindingCS__Group_0__0)

-{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_1()); }

-(rule__TemplateBindingCS__Group_1__0)

-{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_0()); }

-(rule__TemplateSignatureCS__Group_0__0)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_1()); }

-(rule__TemplateSignatureCS__Group_1__0)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedRefCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedRefCSAccess().getTypeLiteralCSParserRuleCall_0()); }

-	ruleTypeLiteralCS

-{ after(grammarAccess.getTypedRefCSAccess().getTypeLiteralCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); }

-	ruleTypedTypeRefCS

-{ after(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UnrestrictedName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUnrestrictedNameAccess().getEnumerationLiteralNameParserRuleCall_0()); }

-	ruleEnumerationLiteralName

-{ after(grammarAccess.getUnrestrictedNameAccess().getEnumerationLiteralNameParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getUnrestrictedNameAccess().getAnnotationKeyword_1()); }

-

-	'annotation' 

-

-{ after(grammarAccess.getUnrestrictedNameAccess().getAnnotationKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getUnrestrictedNameAccess().getDocumentationKeyword_2()); }

-

-	'documentation' 

-

-{ after(grammarAccess.getUnrestrictedNameAccess().getDocumentationKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getUnrestrictedNameAccess().getInvariantKeyword_3()); }

-

-	'invariant' 

-

-{ after(grammarAccess.getUnrestrictedNameAccess().getInvariantKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getUnrestrictedNameAccess().getLiteralKeyword_4()); }

-

-	'literal' 

-

-{ after(grammarAccess.getUnrestrictedNameAccess().getLiteralKeyword_4()); }

-)

-

-    |(

-{ before(grammarAccess.getUnrestrictedNameAccess().getSerializableKeyword_5()); }

-

-	'serializable' 

-

-{ after(grammarAccess.getUnrestrictedNameAccess().getSerializableKeyword_5()); }

-)

-

-    |(

-{ before(grammarAccess.getUnrestrictedNameAccess().getSysmlKeyword_6()); }

-

-	'sysml' 

-

-{ after(grammarAccess.getUnrestrictedNameAccess().getSysmlKeyword_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EssentialOCLUnaryOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }

-

-	'-' 

-

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }

-

-	'not' 

-

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EssentialOCLInfixOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }

-

-	'*' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }

-

-	'/' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }

-

-	'+' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }

-

-	'-' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }

-

-	'>' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }

-

-	'<' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }

-

-	'>=' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }

-

-	'<=' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }

-

-	'=' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }

-

-	'<>' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }

-

-	'and' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }

-

-	'or' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }

-

-	'xor' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }

-

-	'implies' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EssentialOCLNavigationOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }

-

-	'.' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }

-

-	'->' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }

-

-	'?.' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }

-

-	'?->' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BinaryOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }

-	ruleInfixOperatorName

-{ after(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }

-	ruleNavigationOperatorName

-{ after(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EssentialOCLUnreservedName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }

-	ruleUnrestrictedName

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }

-	ruleCollectionTypeIdentifier

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }

-	rulePrimitiveTypeIdentifier

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }

-

-	'Tuple' 

-

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }

-(rule__URIFirstPathElementCS__ReferredElementAssignment_0)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }

-)

-

-    |(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }

-(rule__URIFirstPathElementCS__Group_1__0)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimitiveTypeIdentifier__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }

-

-	'Boolean' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }

-

-	'Integer' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }

-

-	'Real' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }

-

-	'String' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }

-

-	'UnlimitedNatural' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }

-

-	'OclAny' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }

-

-	'OclInvalid' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); }

-

-	'OclVoid' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeIdentifier__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }

-

-	'Set' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }

-

-	'Bag' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }

-

-	'Sequence' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }

-

-	'Collection' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }

-

-	'OrderedSet' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }

-(rule__CollectionLiteralPartCS__Group_0__0)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }

-(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }

-	ruleExpCS

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }

-	rulePatternExpCS

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimitiveLiteralExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }

-	ruleNumberLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }

-	ruleStringLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }

-	ruleBooleanLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }

-	ruleUnlimitedNaturalLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }

-	ruleInvalidLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }

-	ruleNullLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BooleanLiteralExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }

-(rule__BooleanLiteralExpCS__SymbolAssignment_0)

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }

-)

-

-    |(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }

-(rule__BooleanLiteralExpCS__SymbolAssignment_1)

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }

-	rulePrimitiveTypeCS

-{ after(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }

-	ruleCollectionTypeCS

-{ after(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }

-	ruleTupleTypeCS

-{ after(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__Alternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }

-	ruleTypeNameExpCS

-{ after(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }

-	ruleTypeLiteralCS

-{ after(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }

-	ruleCollectionPatternCS

-{ after(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getGroup_0()); }

-(rule__ExpCS__Group_0__0)

-{ after(grammarAccess.getExpCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }

-	rulePrefixedLetExpCS

-{ after(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }

-(rule__PrefixedLetExpCS__Group_0__0)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }

-	ruleLetExpCS

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }

-(rule__PrefixedPrimaryExpCS__Group_0__0)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }

-	rulePrimaryExpCS

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimaryExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }

-	ruleNestedExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }

-	ruleIfExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }

-	ruleSelfExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }

-	rulePrimitiveLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }

-	ruleTupleLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }

-	ruleCollectionLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }

-	ruleLambdaLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }

-	ruleTypeLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }

-	ruleNameExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }

-(rule__CurlyBracketedClauseCS__Group_2_0__0)?

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }

-(rule__CurlyBracketedClauseCS__ValueAssignment_2_1)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }

-(rule__NavigatingArgCS__Group_0__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }

-(rule__NavigatingArgCS__Group_1__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Alternatives_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }

-(rule__NavigatingArgCS__Group_0_1_0__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }

-(rule__NavigatingArgCS__Group_0_1_1__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }

-(rule__NavigatingCommaArgCS__Group_2_0__0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }

-(rule__NavigatingCommaArgCS__Group_2_1__0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedConditionAlternatives_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }

-	ruleExpCS

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }

-	rulePatternExpCS

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Alternatives_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }

-	ruleMultiplicityBoundsCS

-{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }

-	ruleMultiplicityStringCS

-{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityStringCS__StringBoundsAlternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }

-

-	'*' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }

-

-	'+' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }

-

-	'?' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Alternatives_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }

-(rule__TypeParameterCS__Group_1_0__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }

-(rule__TypeParameterCS__Group_1_1__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeRefCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }

-	ruleTypedRefCS

-{ after(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }

-	ruleWildcardTypeRefCS

-{ after(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }

-(rule__WildcardTypeRefCS__Group_2_0__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }

-(rule__WildcardTypeRefCS__Group_2_1__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ID__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }

-	RULE_SIMPLE_ID

-{ after(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }

-	RULE_ESCAPED_ID

-{ after(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UPPER__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }

-	RULE_INT

-{ after(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }

-

-	'*' 

-

-{ after(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-rule__TopLevelCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TopLevelCS__Group__0__Impl

-	rule__TopLevelCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TopLevelCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTopLevelCSAccess().getTopLevelCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getTopLevelCSAccess().getTopLevelCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TopLevelCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TopLevelCS__Group__1__Impl

-	rule__TopLevelCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TopLevelCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTopLevelCSAccess().getGroup_1()); }

-(rule__TopLevelCS__Group_1__0)?

-{ after(grammarAccess.getTopLevelCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TopLevelCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TopLevelCS__Group__2__Impl

-	rule__TopLevelCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TopLevelCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTopLevelCSAccess().getOwnedLibrariesAssignment_2()); }

-(rule__TopLevelCS__OwnedLibrariesAssignment_2)*

-{ after(grammarAccess.getTopLevelCSAccess().getOwnedLibrariesAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TopLevelCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TopLevelCS__Group__3__Impl

-	rule__TopLevelCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TopLevelCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTopLevelCSAccess().getOwnedImportsAssignment_3()); }

-(rule__TopLevelCS__OwnedImportsAssignment_3)*

-{ after(grammarAccess.getTopLevelCSAccess().getOwnedImportsAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TopLevelCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TopLevelCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TopLevelCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTopLevelCSAccess().getOwnedPackagesAssignment_4()); }

-(rule__TopLevelCS__OwnedPackagesAssignment_4)*

-{ after(grammarAccess.getTopLevelCSAccess().getOwnedPackagesAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__TopLevelCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TopLevelCS__Group_1__0__Impl

-	rule__TopLevelCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TopLevelCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTopLevelCSAccess().getModuleKeyword_1_0()); }

-

-	'module' 

-

-{ after(grammarAccess.getTopLevelCSAccess().getModuleKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TopLevelCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TopLevelCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TopLevelCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTopLevelCSAccess().getUnrestrictedNameParserRuleCall_1_1()); }

-	ruleUnrestrictedName

-{ after(grammarAccess.getTopLevelCSAccess().getUnrestrictedNameParserRuleCall_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__SIGNED__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SIGNED__Group__0__Impl

-	rule__SIGNED__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SIGNED__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSIGNEDAccess().getHyphenMinusKeyword_0()); }

-(

-	'-' 

-)?

-{ after(grammarAccess.getSIGNEDAccess().getHyphenMinusKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SIGNED__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SIGNED__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SIGNED__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSIGNEDAccess().getINTTerminalRuleCall_1()); }

-	RULE_INT

-{ after(grammarAccess.getSIGNEDAccess().getINTTerminalRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__InvariantConstraintCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvariantConstraintCS__Group__0__Impl

-	rule__InvariantConstraintCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getIsCallableAssignment_0()); }

-(rule__InvariantConstraintCS__IsCallableAssignment_0)?

-{ after(grammarAccess.getInvariantConstraintCSAccess().getIsCallableAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvariantConstraintCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvariantConstraintCS__Group__1__Impl

-	rule__InvariantConstraintCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getStereotypeAssignment_1()); }

-(rule__InvariantConstraintCS__StereotypeAssignment_1)

-{ after(grammarAccess.getInvariantConstraintCSAccess().getStereotypeAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvariantConstraintCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvariantConstraintCS__Group__2__Impl

-	rule__InvariantConstraintCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getGroup_2()); }

-(rule__InvariantConstraintCS__Group_2__0)?

-{ after(grammarAccess.getInvariantConstraintCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvariantConstraintCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvariantConstraintCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getAlternatives_3()); }

-(rule__InvariantConstraintCS__Alternatives_3)

-{ after(grammarAccess.getInvariantConstraintCSAccess().getAlternatives_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__InvariantConstraintCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvariantConstraintCS__Group_2__0__Impl

-	rule__InvariantConstraintCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getNameAssignment_2_0()); }

-(rule__InvariantConstraintCS__NameAssignment_2_0)

-{ after(grammarAccess.getInvariantConstraintCSAccess().getNameAssignment_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvariantConstraintCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvariantConstraintCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getGroup_2_1()); }

-(rule__InvariantConstraintCS__Group_2_1__0)?

-{ after(grammarAccess.getInvariantConstraintCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__InvariantConstraintCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvariantConstraintCS__Group_2_1__0__Impl

-	rule__InvariantConstraintCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getLeftParenthesisKeyword_2_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getInvariantConstraintCSAccess().getLeftParenthesisKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvariantConstraintCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvariantConstraintCS__Group_2_1__1__Impl

-	rule__InvariantConstraintCS__Group_2_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getOwnedMessageSpecificationAssignment_2_1_1()); }

-(rule__InvariantConstraintCS__OwnedMessageSpecificationAssignment_2_1_1)

-{ after(grammarAccess.getInvariantConstraintCSAccess().getOwnedMessageSpecificationAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvariantConstraintCS__Group_2_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvariantConstraintCS__Group_2_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__Group_2_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getRightParenthesisKeyword_2_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getInvariantConstraintCSAccess().getRightParenthesisKeyword_2_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__InvariantConstraintCS__Group_3_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvariantConstraintCS__Group_3_0__0__Impl

-	rule__InvariantConstraintCS__Group_3_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__Group_3_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getColonKeyword_3_0_0()); }

-

-	':' 

-

-{ after(grammarAccess.getInvariantConstraintCSAccess().getColonKeyword_3_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvariantConstraintCS__Group_3_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvariantConstraintCS__Group_3_0__1__Impl

-	rule__InvariantConstraintCS__Group_3_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__Group_3_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getOwnedSpecificationAssignment_3_0_1()); }

-(rule__InvariantConstraintCS__OwnedSpecificationAssignment_3_0_1)?

-{ after(grammarAccess.getInvariantConstraintCSAccess().getOwnedSpecificationAssignment_3_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvariantConstraintCS__Group_3_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvariantConstraintCS__Group_3_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__Group_3_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getSemicolonKeyword_3_0_2()); }

-

-	';' 

-

-{ after(grammarAccess.getInvariantConstraintCSAccess().getSemicolonKeyword_3_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PostconditionConstraintCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostconditionConstraintCS__Group__0__Impl

-	rule__PostconditionConstraintCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostconditionConstraintCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getStereotypeAssignment_0()); }

-(rule__PostconditionConstraintCS__StereotypeAssignment_0)

-{ after(grammarAccess.getPostconditionConstraintCSAccess().getStereotypeAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PostconditionConstraintCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostconditionConstraintCS__Group__1__Impl

-	rule__PostconditionConstraintCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostconditionConstraintCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getGroup_1()); }

-(rule__PostconditionConstraintCS__Group_1__0)?

-{ after(grammarAccess.getPostconditionConstraintCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PostconditionConstraintCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostconditionConstraintCS__Group__2__Impl

-	rule__PostconditionConstraintCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostconditionConstraintCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getColonKeyword_2()); }

-

-	':' 

-

-{ after(grammarAccess.getPostconditionConstraintCSAccess().getColonKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PostconditionConstraintCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostconditionConstraintCS__Group__3__Impl

-	rule__PostconditionConstraintCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostconditionConstraintCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getOwnedSpecificationAssignment_3()); }

-(rule__PostconditionConstraintCS__OwnedSpecificationAssignment_3)?

-{ after(grammarAccess.getPostconditionConstraintCSAccess().getOwnedSpecificationAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PostconditionConstraintCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostconditionConstraintCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostconditionConstraintCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getSemicolonKeyword_4()); }

-

-	';' 

-

-{ after(grammarAccess.getPostconditionConstraintCSAccess().getSemicolonKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__PostconditionConstraintCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostconditionConstraintCS__Group_1__0__Impl

-	rule__PostconditionConstraintCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostconditionConstraintCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getNameAssignment_1_0()); }

-(rule__PostconditionConstraintCS__NameAssignment_1_0)

-{ after(grammarAccess.getPostconditionConstraintCSAccess().getNameAssignment_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PostconditionConstraintCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostconditionConstraintCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostconditionConstraintCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getGroup_1_1()); }

-(rule__PostconditionConstraintCS__Group_1_1__0)?

-{ after(grammarAccess.getPostconditionConstraintCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__PostconditionConstraintCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostconditionConstraintCS__Group_1_1__0__Impl

-	rule__PostconditionConstraintCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostconditionConstraintCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getLeftParenthesisKeyword_1_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getPostconditionConstraintCSAccess().getLeftParenthesisKeyword_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PostconditionConstraintCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostconditionConstraintCS__Group_1_1__1__Impl

-	rule__PostconditionConstraintCS__Group_1_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostconditionConstraintCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }

-(rule__PostconditionConstraintCS__OwnedMessageSpecificationAssignment_1_1_1)

-{ after(grammarAccess.getPostconditionConstraintCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PostconditionConstraintCS__Group_1_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostconditionConstraintCS__Group_1_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostconditionConstraintCS__Group_1_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getRightParenthesisKeyword_1_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getPostconditionConstraintCSAccess().getRightParenthesisKeyword_1_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PreconditionConstraintCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreconditionConstraintCS__Group__0__Impl

-	rule__PreconditionConstraintCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreconditionConstraintCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getStereotypeAssignment_0()); }

-(rule__PreconditionConstraintCS__StereotypeAssignment_0)

-{ after(grammarAccess.getPreconditionConstraintCSAccess().getStereotypeAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PreconditionConstraintCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreconditionConstraintCS__Group__1__Impl

-	rule__PreconditionConstraintCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreconditionConstraintCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getGroup_1()); }

-(rule__PreconditionConstraintCS__Group_1__0)?

-{ after(grammarAccess.getPreconditionConstraintCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PreconditionConstraintCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreconditionConstraintCS__Group__2__Impl

-	rule__PreconditionConstraintCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreconditionConstraintCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getColonKeyword_2()); }

-

-	':' 

-

-{ after(grammarAccess.getPreconditionConstraintCSAccess().getColonKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PreconditionConstraintCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreconditionConstraintCS__Group__3__Impl

-	rule__PreconditionConstraintCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreconditionConstraintCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getOwnedSpecificationAssignment_3()); }

-(rule__PreconditionConstraintCS__OwnedSpecificationAssignment_3)?

-{ after(grammarAccess.getPreconditionConstraintCSAccess().getOwnedSpecificationAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PreconditionConstraintCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreconditionConstraintCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreconditionConstraintCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getSemicolonKeyword_4()); }

-

-	';' 

-

-{ after(grammarAccess.getPreconditionConstraintCSAccess().getSemicolonKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__PreconditionConstraintCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreconditionConstraintCS__Group_1__0__Impl

-	rule__PreconditionConstraintCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreconditionConstraintCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getNameAssignment_1_0()); }

-(rule__PreconditionConstraintCS__NameAssignment_1_0)

-{ after(grammarAccess.getPreconditionConstraintCSAccess().getNameAssignment_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PreconditionConstraintCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreconditionConstraintCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreconditionConstraintCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getGroup_1_1()); }

-(rule__PreconditionConstraintCS__Group_1_1__0)?

-{ after(grammarAccess.getPreconditionConstraintCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__PreconditionConstraintCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreconditionConstraintCS__Group_1_1__0__Impl

-	rule__PreconditionConstraintCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreconditionConstraintCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getLeftParenthesisKeyword_1_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getPreconditionConstraintCSAccess().getLeftParenthesisKeyword_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PreconditionConstraintCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreconditionConstraintCS__Group_1_1__1__Impl

-	rule__PreconditionConstraintCS__Group_1_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreconditionConstraintCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }

-(rule__PreconditionConstraintCS__OwnedMessageSpecificationAssignment_1_1_1)

-{ after(grammarAccess.getPreconditionConstraintCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PreconditionConstraintCS__Group_1_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreconditionConstraintCS__Group_1_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreconditionConstraintCS__Group_1_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getRightParenthesisKeyword_1_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getPreconditionConstraintCSAccess().getRightParenthesisKeyword_1_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__AnnotationCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group__0__Impl

-	rule__AnnotationCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getAnnotationCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getAnnotationCSAccess().getAnnotationCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group__1__Impl

-	rule__AnnotationCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getAnnotationKeyword_1()); }

-

-	'annotation' 

-

-{ after(grammarAccess.getAnnotationCSAccess().getAnnotationKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group__2__Impl

-	rule__AnnotationCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getNameAssignment_2()); }

-(rule__AnnotationCS__NameAssignment_2)?

-{ after(grammarAccess.getAnnotationCSAccess().getNameAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group__3__Impl

-	rule__AnnotationCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getGroup_3()); }

-(rule__AnnotationCS__Group_3__0)?

-{ after(grammarAccess.getAnnotationCSAccess().getGroup_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getAlternatives_4()); }

-(rule__AnnotationCS__Alternatives_4)

-{ after(grammarAccess.getAnnotationCSAccess().getAlternatives_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__AnnotationCS__Group_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_3__0__Impl

-	rule__AnnotationCS__Group_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getLeftParenthesisKeyword_3_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getAnnotationCSAccess().getLeftParenthesisKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_3__1__Impl

-	rule__AnnotationCS__Group_3__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_3_1()); }

-(rule__AnnotationCS__OwnedDetailsAssignment_3_1)

-{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group_3__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_3__2__Impl

-	rule__AnnotationCS__Group_3__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_3__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getGroup_3_2()); }

-(rule__AnnotationCS__Group_3_2__0)*

-{ after(grammarAccess.getAnnotationCSAccess().getGroup_3_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group_3__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_3__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_3__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getRightParenthesisKeyword_3_3()); }

-

-	')' 

-

-{ after(grammarAccess.getAnnotationCSAccess().getRightParenthesisKeyword_3_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__AnnotationCS__Group_3_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_3_2__0__Impl

-	rule__AnnotationCS__Group_3_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_3_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getCommaKeyword_3_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getAnnotationCSAccess().getCommaKeyword_3_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group_3_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_3_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_3_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_3_2_1()); }

-(rule__AnnotationCS__OwnedDetailsAssignment_3_2_1)

-{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_3_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__AnnotationCS__Group_4_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_4_0__0__Impl

-	rule__AnnotationCS__Group_4_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_4_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getLeftCurlyBracketKeyword_4_0_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getAnnotationCSAccess().getLeftCurlyBracketKeyword_4_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group_4_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_4_0__1__Impl

-	rule__AnnotationCS__Group_4_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_4_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-(

-{ before(grammarAccess.getAnnotationCSAccess().getAlternatives_4_0_1()); }

-(rule__AnnotationCS__Alternatives_4_0_1)

-{ after(grammarAccess.getAnnotationCSAccess().getAlternatives_4_0_1()); }

-)

-(

-{ before(grammarAccess.getAnnotationCSAccess().getAlternatives_4_0_1()); }

-(rule__AnnotationCS__Alternatives_4_0_1)*

-{ after(grammarAccess.getAnnotationCSAccess().getAlternatives_4_0_1()); }

-)

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group_4_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_4_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_4_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getRightCurlyBracketKeyword_4_0_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getAnnotationCSAccess().getRightCurlyBracketKeyword_4_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__AttributeCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group__0__Impl

-	rule__AttributeCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getAlternatives_0()); }

-(rule__AttributeCS__Alternatives_0)?

-{ after(grammarAccess.getAttributeCSAccess().getAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group__1__Impl

-	rule__AttributeCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getAttributeKeyword_1()); }

-

-	'attribute' 

-

-{ after(grammarAccess.getAttributeCSAccess().getAttributeKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group__2__Impl

-	rule__AttributeCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getNameAssignment_2()); }

-(rule__AttributeCS__NameAssignment_2)

-{ after(grammarAccess.getAttributeCSAccess().getNameAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group__3__Impl

-	rule__AttributeCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getGroup_3()); }

-(rule__AttributeCS__Group_3__0)?

-{ after(grammarAccess.getAttributeCSAccess().getGroup_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group__4__Impl

-	rule__AttributeCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getGroup_4()); }

-(rule__AttributeCS__Group_4__0)?

-{ after(grammarAccess.getAttributeCSAccess().getGroup_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group__5__Impl

-	rule__AttributeCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getGroup_5()); }

-(rule__AttributeCS__Group_5__0)?

-{ after(grammarAccess.getAttributeCSAccess().getGroup_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group__6__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getAlternatives_6()); }

-(rule__AttributeCS__Alternatives_6)

-{ after(grammarAccess.getAttributeCSAccess().getAlternatives_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__AttributeCS__Group_0_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_0_0__0__Impl

-	rule__AttributeCS__Group_0_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_0_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_0_0()); }

-(rule__AttributeCS__QualifiersAssignment_0_0_0)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_0_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_0_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_0_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_0_1()); }

-(rule__AttributeCS__QualifiersAssignment_0_0_1)?

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__AttributeCS__Group_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_0_1__0__Impl

-	rule__AttributeCS__Group_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_1_0()); }

-(rule__AttributeCS__QualifiersAssignment_0_1_0)

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_0_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_1_1()); }

-(rule__AttributeCS__QualifiersAssignment_0_1_1)?

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__AttributeCS__Group_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_3__0__Impl

-	rule__AttributeCS__Group_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getColonKeyword_3_0()); }

-

-	':' 

-

-{ after(grammarAccess.getAttributeCSAccess().getColonKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_3__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getOwnedTypeAssignment_3_1()); }

-(rule__AttributeCS__OwnedTypeAssignment_3_1)

-{ after(grammarAccess.getAttributeCSAccess().getOwnedTypeAssignment_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__AttributeCS__Group_4__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_4__0__Impl

-	rule__AttributeCS__Group_4__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_4__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getEqualsSignKeyword_4_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getAttributeCSAccess().getEqualsSignKeyword_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_4__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_4__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_4__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getDefaultAssignment_4_1()); }

-(rule__AttributeCS__DefaultAssignment_4_1)

-{ after(grammarAccess.getAttributeCSAccess().getDefaultAssignment_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__AttributeCS__Group_5__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_5__0__Impl

-	rule__AttributeCS__Group_5__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_5__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_5__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_5__1__Impl

-	rule__AttributeCS__Group_5__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_5__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-(

-{ before(grammarAccess.getAttributeCSAccess().getGroup_5_1()); }

-(rule__AttributeCS__Group_5_1__0)

-{ after(grammarAccess.getAttributeCSAccess().getGroup_5_1()); }

-)

-(

-{ before(grammarAccess.getAttributeCSAccess().getGroup_5_1()); }

-(rule__AttributeCS__Group_5_1__0)*

-{ after(grammarAccess.getAttributeCSAccess().getGroup_5_1()); }

-)

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_5__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_5__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_5__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__AttributeCS__Group_5_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_5_1__0__Impl

-	rule__AttributeCS__Group_5_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_5_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getAlternatives_5_1_0()); }

-(rule__AttributeCS__Alternatives_5_1_0)

-{ after(grammarAccess.getAttributeCSAccess().getAlternatives_5_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_5_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_5_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_5_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1()); }

-(

-	',' 

-)?

-{ after(grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__AttributeCS__Group_6_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_6_0__0__Impl

-	rule__AttributeCS__Group_6_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_6_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_6_0_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_6_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_6_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_6_0__1__Impl

-	rule__AttributeCS__Group_6_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_6_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getAlternatives_6_0_1()); }

-(rule__AttributeCS__Alternatives_6_0_1)*

-{ after(grammarAccess.getAttributeCSAccess().getAlternatives_6_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_6_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_6_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_6_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_6_0_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_6_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__AttributeCS__Group_6_0_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_6_0_1_1__0__Impl

-	rule__AttributeCS__Group_6_0_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_6_0_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()); }

-

-	'derivation' 

-

-{ after(grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_6_0_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_6_0_1_1__1__Impl

-	rule__AttributeCS__Group_6_0_1_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_6_0_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()); }

-(	ruleUnrestrictedName)?

-{ after(grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_6_0_1_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_6_0_1_1__2__Impl

-	rule__AttributeCS__Group_6_0_1_1__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_6_0_1_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()); }

-

-	':' 

-

-{ after(grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_6_0_1_1__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_6_0_1_1__3__Impl

-	rule__AttributeCS__Group_6_0_1_1__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_6_0_1_1__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsAssignment_6_0_1_1_3()); }

-(rule__AttributeCS__OwnedDefaultExpressionsAssignment_6_0_1_1_3)?

-{ after(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsAssignment_6_0_1_1_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_6_0_1_1__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_6_0_1_1__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_6_0_1_1__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4()); }

-

-	';' 

-

-{ after(grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__AttributeCS__Group_6_0_1_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_6_0_1_2__0__Impl

-	rule__AttributeCS__Group_6_0_1_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_6_0_1_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()); }

-

-	'initial' 

-

-{ after(grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_6_0_1_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_6_0_1_2__1__Impl

-	rule__AttributeCS__Group_6_0_1_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_6_0_1_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()); }

-(	ruleUnrestrictedName)?

-{ after(grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_6_0_1_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_6_0_1_2__2__Impl

-	rule__AttributeCS__Group_6_0_1_2__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_6_0_1_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()); }

-

-	':' 

-

-{ after(grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_6_0_1_2__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_6_0_1_2__3__Impl

-	rule__AttributeCS__Group_6_0_1_2__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_6_0_1_2__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsAssignment_6_0_1_2_3()); }

-(rule__AttributeCS__OwnedDefaultExpressionsAssignment_6_0_1_2_3)?

-{ after(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsAssignment_6_0_1_2_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AttributeCS__Group_6_0_1_2__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AttributeCS__Group_6_0_1_2__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__Group_6_0_1_2__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4()); }

-

-	';' 

-

-{ after(grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__DataTypeCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group__0__Impl

-	rule__DataTypeCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getIsPrimitiveAssignment_0()); }

-(rule__DataTypeCS__IsPrimitiveAssignment_0)?

-{ after(grammarAccess.getDataTypeCSAccess().getIsPrimitiveAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DataTypeCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group__1__Impl

-	rule__DataTypeCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getDatatypeKeyword_1()); }

-

-	'datatype' 

-

-{ after(grammarAccess.getDataTypeCSAccess().getDatatypeKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DataTypeCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group__2__Impl

-	rule__DataTypeCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getNameAssignment_2()); }

-(rule__DataTypeCS__NameAssignment_2)

-{ after(grammarAccess.getDataTypeCSAccess().getNameAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DataTypeCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group__3__Impl

-	rule__DataTypeCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getOwnedSignatureAssignment_3()); }

-(rule__DataTypeCS__OwnedSignatureAssignment_3)?

-{ after(grammarAccess.getDataTypeCSAccess().getOwnedSignatureAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DataTypeCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group__4__Impl

-	rule__DataTypeCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getGroup_4()); }

-(rule__DataTypeCS__Group_4__0)?

-{ after(grammarAccess.getDataTypeCSAccess().getGroup_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DataTypeCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group__5__Impl

-	rule__DataTypeCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getGroup_5()); }

-(rule__DataTypeCS__Group_5__0)?

-{ after(grammarAccess.getDataTypeCSAccess().getGroup_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DataTypeCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group__6__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getAlternatives_6()); }

-(rule__DataTypeCS__Alternatives_6)

-{ after(grammarAccess.getDataTypeCSAccess().getAlternatives_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__DataTypeCS__Group_4__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group_4__0__Impl

-	rule__DataTypeCS__Group_4__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group_4__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getColonKeyword_4_0()); }

-

-	':' 

-

-{ after(grammarAccess.getDataTypeCSAccess().getColonKeyword_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DataTypeCS__Group_4__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group_4__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group_4__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getInstanceClassNameAssignment_4_1()); }

-(rule__DataTypeCS__InstanceClassNameAssignment_4_1)

-{ after(grammarAccess.getDataTypeCSAccess().getInstanceClassNameAssignment_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__DataTypeCS__Group_5__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group_5__0__Impl

-	rule__DataTypeCS__Group_5__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group_5__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getLeftCurlyBracketKeyword_5_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getDataTypeCSAccess().getLeftCurlyBracketKeyword_5_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DataTypeCS__Group_5__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group_5__1__Impl

-	rule__DataTypeCS__Group_5__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group_5__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getAlternatives_5_1()); }

-(rule__DataTypeCS__Alternatives_5_1)?

-{ after(grammarAccess.getDataTypeCSAccess().getAlternatives_5_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DataTypeCS__Group_5__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group_5__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group_5__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getRightCurlyBracketKeyword_5_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getDataTypeCSAccess().getRightCurlyBracketKeyword_5_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__DataTypeCS__Group_6_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group_6_0__0__Impl

-	rule__DataTypeCS__Group_6_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group_6_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getLeftCurlyBracketKeyword_6_0_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getDataTypeCSAccess().getLeftCurlyBracketKeyword_6_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DataTypeCS__Group_6_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group_6_0__1__Impl

-	rule__DataTypeCS__Group_6_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group_6_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getAlternatives_6_0_1()); }

-(rule__DataTypeCS__Alternatives_6_0_1)*

-{ after(grammarAccess.getDataTypeCSAccess().getAlternatives_6_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DataTypeCS__Group_6_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DataTypeCS__Group_6_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__Group_6_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getRightCurlyBracketKeyword_6_0_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getDataTypeCSAccess().getRightCurlyBracketKeyword_6_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__DetailCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DetailCS__Group__0__Impl

-	rule__DetailCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DetailCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDetailCSAccess().getNameAssignment_0()); }

-(rule__DetailCS__NameAssignment_0)

-{ after(grammarAccess.getDetailCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DetailCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DetailCS__Group__1__Impl

-	rule__DetailCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DetailCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDetailCSAccess().getEqualsSignKeyword_1()); }

-

-	'=' 

-

-{ after(grammarAccess.getDetailCSAccess().getEqualsSignKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DetailCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DetailCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DetailCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDetailCSAccess().getValuesAssignment_2()); }

-(rule__DetailCS__ValuesAssignment_2)*

-{ after(grammarAccess.getDetailCSAccess().getValuesAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__DocumentationCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group__0__Impl

-	rule__DocumentationCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getDocumentationCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getDocumentationCSAccess().getDocumentationCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group__1__Impl

-	rule__DocumentationCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getDocumentationKeyword_1()); }

-

-	'documentation' 

-

-{ after(grammarAccess.getDocumentationCSAccess().getDocumentationKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group__2__Impl

-	rule__DocumentationCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getValueAssignment_2()); }

-(rule__DocumentationCS__ValueAssignment_2)?

-{ after(grammarAccess.getDocumentationCSAccess().getValueAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group__3__Impl

-	rule__DocumentationCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getGroup_3()); }

-(rule__DocumentationCS__Group_3__0)?

-{ after(grammarAccess.getDocumentationCSAccess().getGroup_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getSemicolonKeyword_4()); }

-

-	';' 

-

-{ after(grammarAccess.getDocumentationCSAccess().getSemicolonKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__DocumentationCS__Group_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group_3__0__Impl

-	rule__DocumentationCS__Group_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getLeftParenthesisKeyword_3_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getDocumentationCSAccess().getLeftParenthesisKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group_3__1__Impl

-	rule__DocumentationCS__Group_3__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_1()); }

-(rule__DocumentationCS__OwnedDetailsAssignment_3_1)

-{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group_3__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group_3__2__Impl

-	rule__DocumentationCS__Group_3__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group_3__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getGroup_3_2()); }

-(rule__DocumentationCS__Group_3_2__0)*

-{ after(grammarAccess.getDocumentationCSAccess().getGroup_3_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group_3__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group_3__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group_3__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getRightParenthesisKeyword_3_3()); }

-

-	')' 

-

-{ after(grammarAccess.getDocumentationCSAccess().getRightParenthesisKeyword_3_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__DocumentationCS__Group_3_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group_3_2__0__Impl

-	rule__DocumentationCS__Group_3_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group_3_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getCommaKeyword_3_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getDocumentationCSAccess().getCommaKeyword_3_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group_3_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group_3_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group_3_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_2_1()); }

-(rule__DocumentationCS__OwnedDetailsAssignment_3_2_1)

-{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__EnumerationCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationCS__Group__0__Impl

-	rule__EnumerationCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getEnumKeyword_0()); }

-

-	'enum' 

-

-{ after(grammarAccess.getEnumerationCSAccess().getEnumKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationCS__Group__1__Impl

-	rule__EnumerationCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getNameAssignment_1()); }

-(rule__EnumerationCS__NameAssignment_1)

-{ after(grammarAccess.getEnumerationCSAccess().getNameAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationCS__Group__2__Impl

-	rule__EnumerationCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getOwnedSignatureAssignment_2()); }

-(rule__EnumerationCS__OwnedSignatureAssignment_2)?

-{ after(grammarAccess.getEnumerationCSAccess().getOwnedSignatureAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationCS__Group__3__Impl

-	rule__EnumerationCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getGroup_3()); }

-(rule__EnumerationCS__Group_3__0)?

-{ after(grammarAccess.getEnumerationCSAccess().getGroup_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationCS__Group__4__Impl

-	rule__EnumerationCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getGroup_4()); }

-(rule__EnumerationCS__Group_4__0)?

-{ after(grammarAccess.getEnumerationCSAccess().getGroup_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationCS__Group__5__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getAlternatives_5()); }

-(rule__EnumerationCS__Alternatives_5)

-{ after(grammarAccess.getEnumerationCSAccess().getAlternatives_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__EnumerationCS__Group_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationCS__Group_3__0__Impl

-	rule__EnumerationCS__Group_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Group_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getColonKeyword_3_0()); }

-

-	':' 

-

-{ after(grammarAccess.getEnumerationCSAccess().getColonKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationCS__Group_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationCS__Group_3__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Group_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getInstanceClassNameAssignment_3_1()); }

-(rule__EnumerationCS__InstanceClassNameAssignment_3_1)

-{ after(grammarAccess.getEnumerationCSAccess().getInstanceClassNameAssignment_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__EnumerationCS__Group_4__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationCS__Group_4__0__Impl

-	rule__EnumerationCS__Group_4__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Group_4__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getLeftCurlyBracketKeyword_4_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getEnumerationCSAccess().getLeftCurlyBracketKeyword_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationCS__Group_4__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationCS__Group_4__1__Impl

-	rule__EnumerationCS__Group_4__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Group_4__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getAlternatives_4_1()); }

-(rule__EnumerationCS__Alternatives_4_1)?

-{ after(grammarAccess.getEnumerationCSAccess().getAlternatives_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationCS__Group_4__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationCS__Group_4__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Group_4__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getRightCurlyBracketKeyword_4_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getEnumerationCSAccess().getRightCurlyBracketKeyword_4_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__EnumerationCS__Group_5_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationCS__Group_5_0__0__Impl

-	rule__EnumerationCS__Group_5_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Group_5_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getLeftCurlyBracketKeyword_5_0_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getEnumerationCSAccess().getLeftCurlyBracketKeyword_5_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationCS__Group_5_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationCS__Group_5_0__1__Impl

-	rule__EnumerationCS__Group_5_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Group_5_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getAlternatives_5_0_1()); }

-(rule__EnumerationCS__Alternatives_5_0_1)*

-{ after(grammarAccess.getEnumerationCSAccess().getAlternatives_5_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationCS__Group_5_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationCS__Group_5_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__Group_5_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getRightCurlyBracketKeyword_5_0_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getEnumerationCSAccess().getRightCurlyBracketKeyword_5_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__EnumerationLiteralCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationLiteralCS__Group__0__Impl

-	rule__EnumerationLiteralCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getAlternatives_0()); }

-(rule__EnumerationLiteralCS__Alternatives_0)

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationLiteralCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationLiteralCS__Group__1__Impl

-	rule__EnumerationLiteralCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getGroup_1()); }

-(rule__EnumerationLiteralCS__Group_1__0)?

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationLiteralCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationLiteralCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getAlternatives_2()); }

-(rule__EnumerationLiteralCS__Alternatives_2)

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__EnumerationLiteralCS__Group_0_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationLiteralCS__Group_0_0__0__Impl

-	rule__EnumerationLiteralCS__Group_0_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__Group_0_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getLiteralKeyword_0_0_0()); }

-

-	'literal' 

-

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getLiteralKeyword_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationLiteralCS__Group_0_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationLiteralCS__Group_0_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__Group_0_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getNameAssignment_0_0_1()); }

-(rule__EnumerationLiteralCS__NameAssignment_0_0_1)

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getNameAssignment_0_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__EnumerationLiteralCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationLiteralCS__Group_1__0__Impl

-	rule__EnumerationLiteralCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getEqualsSignKeyword_1_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getEqualsSignKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationLiteralCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationLiteralCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getValueAssignment_1_1()); }

-(rule__EnumerationLiteralCS__ValueAssignment_1_1)

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getValueAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__EnumerationLiteralCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationLiteralCS__Group_2_0__0__Impl

-	rule__EnumerationLiteralCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getLeftCurlyBracketKeyword_2_0_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getLeftCurlyBracketKeyword_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationLiteralCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationLiteralCS__Group_2_0__1__Impl

-	rule__EnumerationLiteralCS__Group_2_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getOwnedAnnotationsAssignment_2_0_1()); }

-(rule__EnumerationLiteralCS__OwnedAnnotationsAssignment_2_0_1)*

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getOwnedAnnotationsAssignment_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__EnumerationLiteralCS__Group_2_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__EnumerationLiteralCS__Group_2_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__Group_2_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getRightCurlyBracketKeyword_2_0_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getEnumerationLiteralCSAccess().getRightCurlyBracketKeyword_2_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__ImportCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ImportCS__Group__0__Impl

-	rule__ImportCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getImportKeyword_0()); }

-

-	'import' 

-

-{ after(grammarAccess.getImportCSAccess().getImportKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ImportCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ImportCS__Group__1__Impl

-	rule__ImportCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getGroup_1()); }

-(rule__ImportCS__Group_1__0)?

-{ after(grammarAccess.getImportCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ImportCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ImportCS__Group__2__Impl

-	rule__ImportCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getOwnedPathNameAssignment_2()); }

-(rule__ImportCS__OwnedPathNameAssignment_2)

-{ after(grammarAccess.getImportCSAccess().getOwnedPathNameAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ImportCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ImportCS__Group__3__Impl

-	rule__ImportCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getIsAllAssignment_3()); }

-(rule__ImportCS__IsAllAssignment_3)?

-{ after(grammarAccess.getImportCSAccess().getIsAllAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ImportCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ImportCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getSemicolonKeyword_4()); }

-

-	';' 

-

-{ after(grammarAccess.getImportCSAccess().getSemicolonKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__ImportCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ImportCS__Group_1__0__Impl

-	rule__ImportCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getNameAssignment_1_0()); }

-(rule__ImportCS__NameAssignment_1_0)

-{ after(grammarAccess.getImportCSAccess().getNameAssignment_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ImportCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ImportCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getColonKeyword_1_1()); }

-

-	':' 

-

-{ after(grammarAccess.getImportCSAccess().getColonKeyword_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibraryCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibraryCS__Group__0__Impl

-	rule__LibraryCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibraryCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryCSAccess().getLibraryKeyword_0()); }

-

-	'library' 

-

-{ after(grammarAccess.getLibraryCSAccess().getLibraryKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibraryCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibraryCS__Group__1__Impl

-	rule__LibraryCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibraryCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryCSAccess().getGroup_1()); }

-(rule__LibraryCS__Group_1__0)?

-{ after(grammarAccess.getLibraryCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibraryCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibraryCS__Group__2__Impl

-	rule__LibraryCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibraryCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryCSAccess().getReferredPackageAssignment_2()); }

-(rule__LibraryCS__ReferredPackageAssignment_2)

-{ after(grammarAccess.getLibraryCSAccess().getReferredPackageAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibraryCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibraryCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibraryCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryCSAccess().getSemicolonKeyword_3()); }

-

-	';' 

-

-{ after(grammarAccess.getLibraryCSAccess().getSemicolonKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__LibraryCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibraryCS__Group_1__0__Impl

-	rule__LibraryCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibraryCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryCSAccess().getNameAssignment_1_0()); }

-(rule__LibraryCS__NameAssignment_1_0)

-{ after(grammarAccess.getLibraryCSAccess().getNameAssignment_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibraryCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibraryCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibraryCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryCSAccess().getColonKeyword_1_1()); }

-

-	':' 

-

-{ after(grammarAccess.getLibraryCSAccess().getColonKeyword_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ModelElementRefCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ModelElementRefCS__Group__0__Impl

-	rule__ModelElementRefCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ModelElementRefCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getModelElementRefCSAccess().getReferenceKeyword_0()); }

-

-	'reference' 

-

-{ after(grammarAccess.getModelElementRefCSAccess().getReferenceKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ModelElementRefCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ModelElementRefCS__Group__1__Impl

-	rule__ModelElementRefCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ModelElementRefCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getModelElementRefCSAccess().getOwnedPathNameAssignment_1()); }

-(rule__ModelElementRefCS__OwnedPathNameAssignment_1)

-{ after(grammarAccess.getModelElementRefCSAccess().getOwnedPathNameAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ModelElementRefCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ModelElementRefCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ModelElementRefCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getModelElementRefCSAccess().getSemicolonKeyword_2()); }

-

-	';' 

-

-{ after(grammarAccess.getModelElementRefCSAccess().getSemicolonKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__OperationCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group__0__Impl

-	rule__OperationCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getAlternatives_0()); }

-(rule__OperationCS__Alternatives_0)?

-{ after(grammarAccess.getOperationCSAccess().getAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group__1__Impl

-	rule__OperationCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOperationKeyword_1()); }

-

-	'operation' 

-

-{ after(grammarAccess.getOperationCSAccess().getOperationKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group__2__Impl

-	rule__OperationCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedSignatureAssignment_2()); }

-(rule__OperationCS__OwnedSignatureAssignment_2)?

-{ after(grammarAccess.getOperationCSAccess().getOwnedSignatureAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group__3__Impl

-	rule__OperationCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getNameAssignment_3()); }

-(rule__OperationCS__NameAssignment_3)

-{ after(grammarAccess.getOperationCSAccess().getNameAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group__4__Impl

-	rule__OperationCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getLeftParenthesisKeyword_4()); }

-

-	'(' 

-

-{ after(grammarAccess.getOperationCSAccess().getLeftParenthesisKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group__5__Impl

-	rule__OperationCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getGroup_5()); }

-(rule__OperationCS__Group_5__0)?

-{ after(grammarAccess.getOperationCSAccess().getGroup_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group__6__Impl

-	rule__OperationCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getRightParenthesisKeyword_6()); }

-

-	')' 

-

-{ after(grammarAccess.getOperationCSAccess().getRightParenthesisKeyword_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group__7__Impl

-	rule__OperationCS__Group__8

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getGroup_7()); }

-(rule__OperationCS__Group_7__0)?

-{ after(grammarAccess.getOperationCSAccess().getGroup_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group__8

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group__8__Impl

-	rule__OperationCS__Group__9

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group__8__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getGroup_8()); }

-(rule__OperationCS__Group_8__0)?

-{ after(grammarAccess.getOperationCSAccess().getGroup_8()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group__9

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group__9__Impl

-	rule__OperationCS__Group__10

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group__9__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getGroup_9()); }

-(rule__OperationCS__Group_9__0)?

-{ after(grammarAccess.getOperationCSAccess().getGroup_9()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group__10

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group__10__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group__10__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getAlternatives_10()); }

-(rule__OperationCS__Alternatives_10)

-{ after(grammarAccess.getOperationCSAccess().getAlternatives_10()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__OperationCS__Group_0_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_0_0__0__Impl

-	rule__OperationCS__Group_0_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_0_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_0_0()); }

-(rule__OperationCS__QualifiersAssignment_0_0_0)

-{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_0_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_0_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_0_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_0_1()); }

-(rule__OperationCS__QualifiersAssignment_0_0_1)?

-{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__OperationCS__Group_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_0_1__0__Impl

-	rule__OperationCS__Group_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_1_0()); }

-(rule__OperationCS__QualifiersAssignment_0_1_0)

-{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_0_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_1_1()); }

-(rule__OperationCS__QualifiersAssignment_0_1_1)?

-{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__OperationCS__Group_5__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_5__0__Impl

-	rule__OperationCS__Group_5__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_5__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedParametersAssignment_5_0()); }

-(rule__OperationCS__OwnedParametersAssignment_5_0)

-{ after(grammarAccess.getOperationCSAccess().getOwnedParametersAssignment_5_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_5__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_5__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_5__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getGroup_5_1()); }

-(rule__OperationCS__Group_5_1__0)*

-{ after(grammarAccess.getOperationCSAccess().getGroup_5_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__OperationCS__Group_5_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_5_1__0__Impl

-	rule__OperationCS__Group_5_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_5_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getCommaKeyword_5_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getOperationCSAccess().getCommaKeyword_5_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_5_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_5_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_5_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedParametersAssignment_5_1_1()); }

-(rule__OperationCS__OwnedParametersAssignment_5_1_1)

-{ after(grammarAccess.getOperationCSAccess().getOwnedParametersAssignment_5_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__OperationCS__Group_7__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_7__0__Impl

-	rule__OperationCS__Group_7__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_7__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getColonKeyword_7_0()); }

-

-	':' 

-

-{ after(grammarAccess.getOperationCSAccess().getColonKeyword_7_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_7__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_7__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_7__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedTypeAssignment_7_1()); }

-(rule__OperationCS__OwnedTypeAssignment_7_1)

-{ after(grammarAccess.getOperationCSAccess().getOwnedTypeAssignment_7_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__OperationCS__Group_8__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_8__0__Impl

-	rule__OperationCS__Group_8__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_8__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getThrowsKeyword_8_0()); }

-

-	'throws' 

-

-{ after(grammarAccess.getOperationCSAccess().getThrowsKeyword_8_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_8__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_8__1__Impl

-	rule__OperationCS__Group_8__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_8__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedExceptionsAssignment_8_1()); }

-(rule__OperationCS__OwnedExceptionsAssignment_8_1)

-{ after(grammarAccess.getOperationCSAccess().getOwnedExceptionsAssignment_8_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_8__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_8__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_8__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getGroup_8_2()); }

-(rule__OperationCS__Group_8_2__0)*

-{ after(grammarAccess.getOperationCSAccess().getGroup_8_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__OperationCS__Group_8_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_8_2__0__Impl

-	rule__OperationCS__Group_8_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_8_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getCommaKeyword_8_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getOperationCSAccess().getCommaKeyword_8_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_8_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_8_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_8_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedExceptionsAssignment_8_2_1()); }

-(rule__OperationCS__OwnedExceptionsAssignment_8_2_1)

-{ after(grammarAccess.getOperationCSAccess().getOwnedExceptionsAssignment_8_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__OperationCS__Group_9__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_9__0__Impl

-	rule__OperationCS__Group_9__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_9__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_9_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_9_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_9__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_9__1__Impl

-	rule__OperationCS__Group_9__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_9__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-(

-{ before(grammarAccess.getOperationCSAccess().getGroup_9_1()); }

-(rule__OperationCS__Group_9_1__0)

-{ after(grammarAccess.getOperationCSAccess().getGroup_9_1()); }

-)

-(

-{ before(grammarAccess.getOperationCSAccess().getGroup_9_1()); }

-(rule__OperationCS__Group_9_1__0)*

-{ after(grammarAccess.getOperationCSAccess().getGroup_9_1()); }

-)

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_9__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_9__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_9__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_9_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_9_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__OperationCS__Group_9_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_9_1__0__Impl

-	rule__OperationCS__Group_9_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_9_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getAlternatives_9_1_0()); }

-(rule__OperationCS__Alternatives_9_1_0)

-{ after(grammarAccess.getOperationCSAccess().getAlternatives_9_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_9_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_9_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_9_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getCommaKeyword_9_1_1()); }

-(

-	',' 

-)?

-{ after(grammarAccess.getOperationCSAccess().getCommaKeyword_9_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__OperationCS__Group_10_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_10_0__0__Impl

-	rule__OperationCS__Group_10_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_10_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_10_0_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_10_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_10_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_10_0__1__Impl

-	rule__OperationCS__Group_10_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_10_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getAlternatives_10_0_1()); }

-(rule__OperationCS__Alternatives_10_0_1)*

-{ after(grammarAccess.getOperationCSAccess().getAlternatives_10_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_10_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_10_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_10_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_10_0_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_10_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__OperationCS__Group_10_0_1_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_10_0_1_2__0__Impl

-	rule__OperationCS__Group_10_0_1_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_10_0_1_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getBodyKeyword_10_0_1_2_0()); }

-

-	'body' 

-

-{ after(grammarAccess.getOperationCSAccess().getBodyKeyword_10_0_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_10_0_1_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_10_0_1_2__1__Impl

-	rule__OperationCS__Group_10_0_1_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_10_0_1_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getUnrestrictedNameParserRuleCall_10_0_1_2_1()); }

-(	ruleUnrestrictedName)?

-{ after(grammarAccess.getOperationCSAccess().getUnrestrictedNameParserRuleCall_10_0_1_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_10_0_1_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_10_0_1_2__2__Impl

-	rule__OperationCS__Group_10_0_1_2__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_10_0_1_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getColonKeyword_10_0_1_2_2()); }

-

-	':' 

-

-{ after(grammarAccess.getOperationCSAccess().getColonKeyword_10_0_1_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_10_0_1_2__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_10_0_1_2__3__Impl

-	rule__OperationCS__Group_10_0_1_2__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_10_0_1_2__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedBodyExpressionsAssignment_10_0_1_2_3()); }

-(rule__OperationCS__OwnedBodyExpressionsAssignment_10_0_1_2_3)?

-{ after(grammarAccess.getOperationCSAccess().getOwnedBodyExpressionsAssignment_10_0_1_2_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__OperationCS__Group_10_0_1_2__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__OperationCS__Group_10_0_1_2__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Group_10_0_1_2__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_0_1_2_4()); }

-

-	';' 

-

-{ after(grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_0_1_2_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__PackageCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group__0__Impl

-	rule__PackageCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getPackageKeyword_0()); }

-

-	'package' 

-

-{ after(grammarAccess.getPackageCSAccess().getPackageKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group__1__Impl

-	rule__PackageCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getNameAssignment_1()); }

-(rule__PackageCS__NameAssignment_1)

-{ after(grammarAccess.getPackageCSAccess().getNameAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group__2__Impl

-	rule__PackageCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getGroup_2()); }

-(rule__PackageCS__Group_2__0)?

-{ after(grammarAccess.getPackageCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group__3__Impl

-	rule__PackageCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getGroup_3()); }

-(rule__PackageCS__Group_3__0)?

-{ after(grammarAccess.getPackageCSAccess().getGroup_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getAlternatives_4()); }

-(rule__PackageCS__Alternatives_4)

-{ after(grammarAccess.getPackageCSAccess().getAlternatives_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__PackageCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group_2__0__Impl

-	rule__PackageCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getPackageCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getNsPrefixAssignment_2_1()); }

-(rule__PackageCS__NsPrefixAssignment_2_1)

-{ after(grammarAccess.getPackageCSAccess().getNsPrefixAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__PackageCS__Group_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group_3__0__Impl

-	rule__PackageCS__Group_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getEqualsSignKeyword_3_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getPackageCSAccess().getEqualsSignKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group_3__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getNsURIAssignment_3_1()); }

-(rule__PackageCS__NsURIAssignment_3_1)

-{ after(grammarAccess.getPackageCSAccess().getNsURIAssignment_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__PackageCS__Group_4_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group_4_0__0__Impl

-	rule__PackageCS__Group_4_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group_4_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getLeftCurlyBracketKeyword_4_0_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getPackageCSAccess().getLeftCurlyBracketKeyword_4_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group_4_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group_4_0__1__Impl

-	rule__PackageCS__Group_4_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group_4_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getAlternatives_4_0_1()); }

-(rule__PackageCS__Alternatives_4_0_1)*

-{ after(grammarAccess.getPackageCSAccess().getAlternatives_4_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group_4_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group_4_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group_4_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getRightCurlyBracketKeyword_4_0_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getPackageCSAccess().getRightCurlyBracketKeyword_4_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__ParameterCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group__0__Impl

-	rule__ParameterCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getNameAssignment_0()); }

-(rule__ParameterCS__NameAssignment_0)

-{ after(grammarAccess.getParameterCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ParameterCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group__1__Impl

-	rule__ParameterCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getGroup_1()); }

-(rule__ParameterCS__Group_1__0)?

-{ after(grammarAccess.getParameterCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ParameterCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group__2__Impl

-	rule__ParameterCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getGroup_2()); }

-(rule__ParameterCS__Group_2__0)?

-{ after(grammarAccess.getParameterCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ParameterCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getGroup_3()); }

-(rule__ParameterCS__Group_3__0)?

-{ after(grammarAccess.getParameterCSAccess().getGroup_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__ParameterCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group_1__0__Impl

-	rule__ParameterCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getColonKeyword_1_0()); }

-

-	':' 

-

-{ after(grammarAccess.getParameterCSAccess().getColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ParameterCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getOwnedTypeAssignment_1_1()); }

-(rule__ParameterCS__OwnedTypeAssignment_1_1)

-{ after(grammarAccess.getParameterCSAccess().getOwnedTypeAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ParameterCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group_2__0__Impl

-	rule__ParameterCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_2_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ParameterCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group_2__1__Impl

-	rule__ParameterCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-(

-{ before(grammarAccess.getParameterCSAccess().getGroup_2_1()); }

-(rule__ParameterCS__Group_2_1__0)

-{ after(grammarAccess.getParameterCSAccess().getGroup_2_1()); }

-)

-(

-{ before(grammarAccess.getParameterCSAccess().getGroup_2_1()); }

-(rule__ParameterCS__Group_2_1__0)*

-{ after(grammarAccess.getParameterCSAccess().getGroup_2_1()); }

-)

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ParameterCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group_2__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_2_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__ParameterCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group_2_1__0__Impl

-	rule__ParameterCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getAlternatives_2_1_0()); }

-(rule__ParameterCS__Alternatives_2_1_0)

-{ after(grammarAccess.getParameterCSAccess().getAlternatives_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ParameterCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getCommaKeyword_2_1_1()); }

-(

-	',' 

-)?

-{ after(grammarAccess.getParameterCSAccess().getCommaKeyword_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ParameterCS__Group_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group_3__0__Impl

-	rule__ParameterCS__Group_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_3_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ParameterCS__Group_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group_3__1__Impl

-	rule__ParameterCS__Group_3__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getOwnedAnnotationsAssignment_3_1()); }

-(rule__ParameterCS__OwnedAnnotationsAssignment_3_1)*

-{ after(grammarAccess.getParameterCSAccess().getOwnedAnnotationsAssignment_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ParameterCS__Group_3__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group_3__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group_3__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_3_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_3_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__ReferenceCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group__0__Impl

-	rule__ReferenceCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getAlternatives_0()); }

-(rule__ReferenceCS__Alternatives_0)?

-{ after(grammarAccess.getReferenceCSAccess().getAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group__1__Impl

-	rule__ReferenceCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getPropertyKeyword_1()); }

-

-	'property' 

-

-{ after(grammarAccess.getReferenceCSAccess().getPropertyKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group__2__Impl

-	rule__ReferenceCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getNameAssignment_2()); }

-(rule__ReferenceCS__NameAssignment_2)

-{ after(grammarAccess.getReferenceCSAccess().getNameAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group__3__Impl

-	rule__ReferenceCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getGroup_3()); }

-(rule__ReferenceCS__Group_3__0)?

-{ after(grammarAccess.getReferenceCSAccess().getGroup_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group__4__Impl

-	rule__ReferenceCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getGroup_4()); }

-(rule__ReferenceCS__Group_4__0)?

-{ after(grammarAccess.getReferenceCSAccess().getGroup_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group__5__Impl

-	rule__ReferenceCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getGroup_5()); }

-(rule__ReferenceCS__Group_5__0)?

-{ after(grammarAccess.getReferenceCSAccess().getGroup_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group__6__Impl

-	rule__ReferenceCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getGroup_6()); }

-(rule__ReferenceCS__Group_6__0)?

-{ after(grammarAccess.getReferenceCSAccess().getGroup_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group__7__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getAlternatives_7()); }

-(rule__ReferenceCS__Alternatives_7)

-{ after(grammarAccess.getReferenceCSAccess().getAlternatives_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__ReferenceCS__Group_0_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_0_0__0__Impl

-	rule__ReferenceCS__Group_0_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_0_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_0_0()); }

-(rule__ReferenceCS__QualifiersAssignment_0_0_0)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_0_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_0_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_0_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_0_1()); }

-(rule__ReferenceCS__QualifiersAssignment_0_0_1)?

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ReferenceCS__Group_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_0_1__0__Impl

-	rule__ReferenceCS__Group_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_1_0()); }

-(rule__ReferenceCS__QualifiersAssignment_0_1_0)

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_0_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_1_1()); }

-(rule__ReferenceCS__QualifiersAssignment_0_1_1)?

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ReferenceCS__Group_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_3__0__Impl

-	rule__ReferenceCS__Group_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getNumberSignKeyword_3_0()); }

-

-	'#' 

-

-{ after(grammarAccess.getReferenceCSAccess().getNumberSignKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_3__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getReferredOppositeAssignment_3_1()); }

-(rule__ReferenceCS__ReferredOppositeAssignment_3_1)

-{ after(grammarAccess.getReferenceCSAccess().getReferredOppositeAssignment_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ReferenceCS__Group_4__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_4__0__Impl

-	rule__ReferenceCS__Group_4__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_4__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getColonKeyword_4_0()); }

-

-	':' 

-

-{ after(grammarAccess.getReferenceCSAccess().getColonKeyword_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_4__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_4__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_4__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getOwnedTypeAssignment_4_1()); }

-(rule__ReferenceCS__OwnedTypeAssignment_4_1)

-{ after(grammarAccess.getReferenceCSAccess().getOwnedTypeAssignment_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ReferenceCS__Group_5__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_5__0__Impl

-	rule__ReferenceCS__Group_5__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_5__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getEqualsSignKeyword_5_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getReferenceCSAccess().getEqualsSignKeyword_5_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_5__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_5__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_5__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getDefaultAssignment_5_1()); }

-(rule__ReferenceCS__DefaultAssignment_5_1)

-{ after(grammarAccess.getReferenceCSAccess().getDefaultAssignment_5_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ReferenceCS__Group_6__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_6__0__Impl

-	rule__ReferenceCS__Group_6__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_6__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_6__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_6__1__Impl

-	rule__ReferenceCS__Group_6__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_6__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-(

-{ before(grammarAccess.getReferenceCSAccess().getGroup_6_1()); }

-(rule__ReferenceCS__Group_6_1__0)

-{ after(grammarAccess.getReferenceCSAccess().getGroup_6_1()); }

-)

-(

-{ before(grammarAccess.getReferenceCSAccess().getGroup_6_1()); }

-(rule__ReferenceCS__Group_6_1__0)*

-{ after(grammarAccess.getReferenceCSAccess().getGroup_6_1()); }

-)

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_6__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_6__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_6__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__ReferenceCS__Group_6_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_6_1__0__Impl

-	rule__ReferenceCS__Group_6_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_6_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getAlternatives_6_1_0()); }

-(rule__ReferenceCS__Alternatives_6_1_0)

-{ after(grammarAccess.getReferenceCSAccess().getAlternatives_6_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_6_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_6_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_6_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1()); }

-(

-	',' 

-)?

-{ after(grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ReferenceCS__Group_7_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0__0__Impl

-	rule__ReferenceCS__Group_7_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_7_0_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_7_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_7_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0__1__Impl

-	rule__ReferenceCS__Group_7_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getAlternatives_7_0_1()); }

-(rule__ReferenceCS__Alternatives_7_0_1)*

-{ after(grammarAccess.getReferenceCSAccess().getAlternatives_7_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_7_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_7_0_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_7_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__ReferenceCS__Group_7_0_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_1__0__Impl

-	rule__ReferenceCS__Group_7_0_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getKeyKeyword_7_0_1_1_0()); }

-

-	'key' 

-

-{ after(grammarAccess.getReferenceCSAccess().getKeyKeyword_7_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_7_0_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_1__1__Impl

-	rule__ReferenceCS__Group_7_0_1_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getReferredKeysAssignment_7_0_1_1_1()); }

-(rule__ReferenceCS__ReferredKeysAssignment_7_0_1_1_1)

-{ after(grammarAccess.getReferenceCSAccess().getReferredKeysAssignment_7_0_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_7_0_1_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_1__2__Impl

-	rule__ReferenceCS__Group_7_0_1_1__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_1_2()); }

-(rule__ReferenceCS__Group_7_0_1_1_2__0)*

-{ after(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_7_0_1_1__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_1__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_1__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_1_3()); }

-

-	';' 

-

-{ after(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_1_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__ReferenceCS__Group_7_0_1_1_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_1_2__0__Impl

-	rule__ReferenceCS__Group_7_0_1_1_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_1_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getCommaKeyword_7_0_1_1_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getReferenceCSAccess().getCommaKeyword_7_0_1_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_7_0_1_1_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_1_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_1_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getReferredKeysAssignment_7_0_1_1_2_1()); }

-(rule__ReferenceCS__ReferredKeysAssignment_7_0_1_1_2_1)

-{ after(grammarAccess.getReferenceCSAccess().getReferredKeysAssignment_7_0_1_1_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ReferenceCS__Group_7_0_1_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_2__0__Impl

-	rule__ReferenceCS__Group_7_0_1_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()); }

-

-	'derivation' 

-

-{ after(grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_7_0_1_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_2__1__Impl

-	rule__ReferenceCS__Group_7_0_1_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()); }

-(	ruleUnrestrictedName)?

-{ after(grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_7_0_1_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_2__2__Impl

-	rule__ReferenceCS__Group_7_0_1_2__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()); }

-

-	':' 

-

-{ after(grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_7_0_1_2__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_2__3__Impl

-	rule__ReferenceCS__Group_7_0_1_2__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_2__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsAssignment_7_0_1_2_3()); }

-(rule__ReferenceCS__OwnedDefaultExpressionsAssignment_7_0_1_2_3)?

-{ after(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsAssignment_7_0_1_2_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_7_0_1_2__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_2__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_2__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4()); }

-

-	';' 

-

-{ after(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__ReferenceCS__Group_7_0_1_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_3__0__Impl

-	rule__ReferenceCS__Group_7_0_1_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()); }

-

-	'initial' 

-

-{ after(grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_7_0_1_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_3__1__Impl

-	rule__ReferenceCS__Group_7_0_1_3__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()); }

-(	ruleUnrestrictedName)?

-{ after(grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_7_0_1_3__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_3__2__Impl

-	rule__ReferenceCS__Group_7_0_1_3__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_3__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()); }

-

-	':' 

-

-{ after(grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_7_0_1_3__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_3__3__Impl

-	rule__ReferenceCS__Group_7_0_1_3__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_3__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsAssignment_7_0_1_3_3()); }

-(rule__ReferenceCS__OwnedDefaultExpressionsAssignment_7_0_1_3_3)?

-{ after(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsAssignment_7_0_1_3_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ReferenceCS__Group_7_0_1_3__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ReferenceCS__Group_7_0_1_3__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__Group_7_0_1_3__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4()); }

-

-	';' 

-

-{ after(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__StructuredClassCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group__0__Impl

-	rule__StructuredClassCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getIsAbstractAssignment_0()); }

-(rule__StructuredClassCS__IsAbstractAssignment_0)?

-{ after(grammarAccess.getStructuredClassCSAccess().getIsAbstractAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group__1__Impl

-	rule__StructuredClassCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getClassKeyword_1()); }

-

-	'class' 

-

-{ after(grammarAccess.getStructuredClassCSAccess().getClassKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group__2__Impl

-	rule__StructuredClassCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getNameAssignment_2()); }

-(rule__StructuredClassCS__NameAssignment_2)

-{ after(grammarAccess.getStructuredClassCSAccess().getNameAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group__3__Impl

-	rule__StructuredClassCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getOwnedSignatureAssignment_3()); }

-(rule__StructuredClassCS__OwnedSignatureAssignment_3)?

-{ after(grammarAccess.getStructuredClassCSAccess().getOwnedSignatureAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group__4__Impl

-	rule__StructuredClassCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getGroup_4()); }

-(rule__StructuredClassCS__Group_4__0)?

-{ after(grammarAccess.getStructuredClassCSAccess().getGroup_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group__5__Impl

-	rule__StructuredClassCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getGroup_5()); }

-(rule__StructuredClassCS__Group_5__0)?

-{ after(grammarAccess.getStructuredClassCSAccess().getGroup_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group__6__Impl

-	rule__StructuredClassCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getGroup_6()); }

-(rule__StructuredClassCS__Group_6__0)?

-{ after(grammarAccess.getStructuredClassCSAccess().getGroup_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group__7__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getAlternatives_7()); }

-(rule__StructuredClassCS__Alternatives_7)

-{ after(grammarAccess.getStructuredClassCSAccess().getAlternatives_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__StructuredClassCS__Group_4__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group_4__0__Impl

-	rule__StructuredClassCS__Group_4__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group_4__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getExtendsKeyword_4_0()); }

-

-	'extends' 

-

-{ after(grammarAccess.getStructuredClassCSAccess().getExtendsKeyword_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group_4__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group_4__1__Impl

-	rule__StructuredClassCS__Group_4__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group_4__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesAssignment_4_1()); }

-(rule__StructuredClassCS__OwnedSuperTypesAssignment_4_1)

-{ after(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesAssignment_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group_4__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group_4__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group_4__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getGroup_4_2()); }

-(rule__StructuredClassCS__Group_4_2__0)*

-{ after(grammarAccess.getStructuredClassCSAccess().getGroup_4_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__StructuredClassCS__Group_4_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group_4_2__0__Impl

-	rule__StructuredClassCS__Group_4_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group_4_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getCommaKeyword_4_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getStructuredClassCSAccess().getCommaKeyword_4_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group_4_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group_4_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group_4_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesAssignment_4_2_1()); }

-(rule__StructuredClassCS__OwnedSuperTypesAssignment_4_2_1)

-{ after(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesAssignment_4_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__StructuredClassCS__Group_5__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group_5__0__Impl

-	rule__StructuredClassCS__Group_5__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group_5__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getColonKeyword_5_0()); }

-

-	':' 

-

-{ after(grammarAccess.getStructuredClassCSAccess().getColonKeyword_5_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group_5__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group_5__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group_5__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getInstanceClassNameAssignment_5_1()); }

-(rule__StructuredClassCS__InstanceClassNameAssignment_5_1)

-{ after(grammarAccess.getStructuredClassCSAccess().getInstanceClassNameAssignment_5_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__StructuredClassCS__Group_6__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group_6__0__Impl

-	rule__StructuredClassCS__Group_6__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group_6__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getLeftCurlyBracketKeyword_6_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getStructuredClassCSAccess().getLeftCurlyBracketKeyword_6_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group_6__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group_6__1__Impl

-	rule__StructuredClassCS__Group_6__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group_6__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getIsInterfaceAssignment_6_1()); }

-(rule__StructuredClassCS__IsInterfaceAssignment_6_1)?

-{ after(grammarAccess.getStructuredClassCSAccess().getIsInterfaceAssignment_6_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group_6__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group_6__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group_6__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getRightCurlyBracketKeyword_6_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getStructuredClassCSAccess().getRightCurlyBracketKeyword_6_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__StructuredClassCS__Group_7_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group_7_0__0__Impl

-	rule__StructuredClassCS__Group_7_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group_7_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getLeftCurlyBracketKeyword_7_0_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getStructuredClassCSAccess().getLeftCurlyBracketKeyword_7_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group_7_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group_7_0__1__Impl

-	rule__StructuredClassCS__Group_7_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group_7_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getAlternatives_7_0_1()); }

-(rule__StructuredClassCS__Alternatives_7_0_1)*

-{ after(grammarAccess.getStructuredClassCSAccess().getAlternatives_7_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__StructuredClassCS__Group_7_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__StructuredClassCS__Group_7_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__Group_7_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getRightCurlyBracketKeyword_7_0_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getStructuredClassCSAccess().getRightCurlyBracketKeyword_7_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__SysMLCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SysMLCS__Group__0__Impl

-	rule__SysMLCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SysMLCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSysMLCSAccess().getSysMLCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getSysMLCSAccess().getSysMLCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SysMLCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SysMLCS__Group__1__Impl

-	rule__SysMLCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SysMLCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSysMLCSAccess().getSysmlKeyword_1()); }

-

-	'sysml' 

-

-{ after(grammarAccess.getSysMLCSAccess().getSysmlKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SysMLCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SysMLCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SysMLCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSysMLCSAccess().getAlternatives_2()); }

-(rule__SysMLCS__Alternatives_2)

-{ after(grammarAccess.getSysMLCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__SysMLCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SysMLCS__Group_2_0__0__Impl

-	rule__SysMLCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SysMLCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSysMLCSAccess().getOwnedDetailsAssignment_2_0_0()); }

-(rule__SysMLCS__OwnedDetailsAssignment_2_0_0)

-{ after(grammarAccess.getSysMLCSAccess().getOwnedDetailsAssignment_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SysMLCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SysMLCS__Group_2_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SysMLCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSysMLCSAccess().getSemicolonKeyword_2_0_1()); }

-

-	';' 

-

-{ after(grammarAccess.getSysMLCSAccess().getSemicolonKeyword_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__SysMLCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SysMLCS__Group_2_1__0__Impl

-	rule__SysMLCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SysMLCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSysMLCSAccess().getLeftCurlyBracketKeyword_2_1_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getSysMLCSAccess().getLeftCurlyBracketKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SysMLCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SysMLCS__Group_2_1__1__Impl

-	rule__SysMLCS__Group_2_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SysMLCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSysMLCSAccess().getGroup_2_1_1()); }

-(rule__SysMLCS__Group_2_1_1__0)*

-{ after(grammarAccess.getSysMLCSAccess().getGroup_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SysMLCS__Group_2_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SysMLCS__Group_2_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SysMLCS__Group_2_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSysMLCSAccess().getRightCurlyBracketKeyword_2_1_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getSysMLCSAccess().getRightCurlyBracketKeyword_2_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__SysMLCS__Group_2_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SysMLCS__Group_2_1_1__0__Impl

-	rule__SysMLCS__Group_2_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SysMLCS__Group_2_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSysMLCSAccess().getOwnedDetailsAssignment_2_1_1_0()); }

-(rule__SysMLCS__OwnedDetailsAssignment_2_1_1_0)

-{ after(grammarAccess.getSysMLCSAccess().getOwnedDetailsAssignment_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SysMLCS__Group_2_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SysMLCS__Group_2_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SysMLCS__Group_2_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSysMLCSAccess().getSemicolonKeyword_2_1_1_1()); }

-

-	';' 

-

-{ after(grammarAccess.getSysMLCSAccess().getSemicolonKeyword_2_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypedMultiplicityRefCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedMultiplicityRefCS__Group__0__Impl

-	rule__TypedMultiplicityRefCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedMultiplicityRefCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getTypedRefCSParserRuleCall_0()); }

-	ruleTypedRefCS

-{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getTypedRefCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypedMultiplicityRefCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedMultiplicityRefCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedMultiplicityRefCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityAssignment_1()); }

-(rule__TypedMultiplicityRefCS__OwnedMultiplicityAssignment_1)?

-{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TemplateBindingCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_0__0__Impl

-	rule__TemplateBindingCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_0__1__Impl

-	rule__TemplateBindingCS__Group_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_0_1()); }

-(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_0_1)

-{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_0__2__Impl

-	rule__TemplateBindingCS__Group_0__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_0_2()); }

-(rule__TemplateBindingCS__Group_0_2__0)*

-{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group_0__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_0__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_0__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_0_3()); }

-

-	')' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_0_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TemplateBindingCS__Group_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_0_2__0__Impl

-	rule__TemplateBindingCS__Group_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_0_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_0_2_1()); }

-(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_0_2_1)

-{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TemplateBindingCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_1__0__Impl

-	rule__TemplateBindingCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getLessThanSignKeyword_1_0()); }

-

-	'<' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getLessThanSignKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_1__1__Impl

-	rule__TemplateBindingCS__Group_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1_1()); }

-(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1_1)

-{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_1__2__Impl

-	rule__TemplateBindingCS__Group_1__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_1_2()); }

-(rule__TemplateBindingCS__Group_1_2__0)*

-{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group_1__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_1__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_1__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getGreaterThanSignKeyword_1_3()); }

-

-	'>' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getGreaterThanSignKeyword_1_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TemplateBindingCS__Group_1_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_1_2__0__Impl

-	rule__TemplateBindingCS__Group_1_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_1_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_1_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group_1_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_1_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_1_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1_2_1()); }

-(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1_2_1)

-{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TemplateSignatureCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_0__0__Impl

-	rule__TemplateSignatureCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_0__1__Impl

-	rule__TemplateSignatureCS__Group_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_1()); }

-(rule__TemplateSignatureCS__OwnedParametersAssignment_0_1)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_0__2__Impl

-	rule__TemplateSignatureCS__Group_0__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_0_2()); }

-(rule__TemplateSignatureCS__Group_0_2__0)*

-{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_0__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_0__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_0__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3()); }

-

-	')' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TemplateSignatureCS__Group_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_0_2__0__Impl

-	rule__TemplateSignatureCS__Group_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_2_1()); }

-(rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TemplateSignatureCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_1__0__Impl

-	rule__TemplateSignatureCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0()); }

-

-	'<' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_1__1__Impl

-	rule__TemplateSignatureCS__Group_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_1()); }

-(rule__TemplateSignatureCS__OwnedParametersAssignment_1_1)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_1__2__Impl

-	rule__TemplateSignatureCS__Group_1__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_1_2()); }

-(rule__TemplateSignatureCS__Group_1_2__0)*

-{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_1__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_1__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_1__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3()); }

-

-	'>' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TemplateSignatureCS__Group_1_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_1_2__0__Impl

-	rule__TemplateSignatureCS__Group_1_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_1_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_1_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_1_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_1_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_2_1()); }

-(rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__URIPathNameCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIPathNameCS__Group__0__Impl

-	rule__URIPathNameCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIPathNameCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-(rule__URIPathNameCS__OwnedPathElementsAssignment_0)

-{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__URIPathNameCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIPathNameCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIPathNameCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIPathNameCSAccess().getGroup_1()); }

-(rule__URIPathNameCS__Group_1__0)*

-{ after(grammarAccess.getURIPathNameCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__URIPathNameCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIPathNameCS__Group_1__0__Impl

-	rule__URIPathNameCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIPathNameCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0()); }

-

-	'::' 

-

-{ after(grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__URIPathNameCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIPathNameCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIPathNameCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-(rule__URIPathNameCS__OwnedPathElementsAssignment_1_1)

-{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__URIFirstPathElementCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIFirstPathElementCS__Group_1__0__Impl

-	rule__URIFirstPathElementCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }

-(

-

-)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__URIFirstPathElementCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIFirstPathElementCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }

-(rule__URIFirstPathElementCS__ReferredElementAssignment_1_1)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionTypeCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group__0__Impl

-	rule__CollectionTypeCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }

-(rule__CollectionTypeCS__NameAssignment_0)

-{ after(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionTypeCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }

-(rule__CollectionTypeCS__Group_1__0)?

-{ after(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionTypeCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group_1__0__Impl

-	rule__CollectionTypeCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionTypeCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group_1__1__Impl

-	rule__CollectionTypeCS__Group_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }

-(rule__CollectionTypeCS__OwnedTypeAssignment_1_1)

-{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionTypeCS__Group_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TupleTypeCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group__0__Impl

-	rule__TupleTypeCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }

-(rule__TupleTypeCS__NameAssignment_0)

-{ after(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }

-(rule__TupleTypeCS__Group_1__0)?

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TupleTypeCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1__0__Impl

-	rule__TupleTypeCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1__1__Impl

-	rule__TupleTypeCS__Group_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }

-(rule__TupleTypeCS__Group_1_1__0)?

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TupleTypeCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1__0__Impl

-	rule__TupleTypeCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }

-(rule__TupleTypeCS__OwnedPartsAssignment_1_1_0)

-{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }

-(rule__TupleTypeCS__Group_1_1_1__0)*

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TupleTypeCS__Group_1_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1_1__0__Impl

-	rule__TupleTypeCS__Group_1_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }

-(rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1)

-{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TuplePartCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TuplePartCS__Group__0__Impl

-	rule__TuplePartCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }

-(rule__TuplePartCS__NameAssignment_0)

-{ after(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TuplePartCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TuplePartCS__Group__1__Impl

-	rule__TuplePartCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }

-

-	':' 

-

-{ after(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TuplePartCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TuplePartCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }

-(rule__TuplePartCS__OwnedTypeAssignment_2)

-{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__CollectionLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__0__Impl

-	rule__CollectionLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }

-(rule__CollectionLiteralExpCS__OwnedTypeAssignment_0)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__1__Impl

-	rule__CollectionLiteralExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__2__Impl

-	rule__CollectionLiteralExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }

-(rule__CollectionLiteralExpCS__Group_2__0)?

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__CollectionLiteralExpCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2__0__Impl

-	rule__CollectionLiteralExpCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }

-(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }

-(rule__CollectionLiteralExpCS__Group_2_1__0)*

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionLiteralExpCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2_1__0__Impl

-	rule__CollectionLiteralExpCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }

-(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionLiteralPartCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0__0__Impl

-	rule__CollectionLiteralPartCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }

-(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralPartCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }

-(rule__CollectionLiteralPartCS__Group_0_1__0)?

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionLiteralPartCS__Group_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0_1__0__Impl

-	rule__CollectionLiteralPartCS__Group_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }

-

-	'..' 

-

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralPartCS__Group_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }

-(rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionPatternCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__0__Impl

-	rule__CollectionPatternCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }

-(rule__CollectionPatternCS__OwnedTypeAssignment_0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__1__Impl

-	rule__CollectionPatternCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__2__Impl

-	rule__CollectionPatternCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }

-(rule__CollectionPatternCS__Group_2__0)?

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__CollectionPatternCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2__0__Impl

-	rule__CollectionPatternCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }

-(rule__CollectionPatternCS__OwnedPartsAssignment_2_0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2__1__Impl

-	rule__CollectionPatternCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }

-(rule__CollectionPatternCS__Group_2_1__0)*

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }

-(rule__CollectionPatternCS__Group_2_2__0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__CollectionPatternCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_1__0__Impl

-	rule__CollectionPatternCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }

-(rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1)

-{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionPatternCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_2__0__Impl

-	rule__CollectionPatternCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }

-

-	'++' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }

-(rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1)

-{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ConstructorPartCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstructorPartCS__Group__0__Impl

-	rule__ConstructorPartCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }

-(rule__ConstructorPartCS__ReferredPropertyAssignment_0)

-{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ConstructorPartCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstructorPartCS__Group__1__Impl

-	rule__ConstructorPartCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }

-

-	'=' 

-

-{ after(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ConstructorPartCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstructorPartCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }

-(rule__ConstructorPartCS__OwnedInitExpressionAssignment_2)

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PatternExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PatternExpCS__Group__0__Impl

-	rule__PatternExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }

-(rule__PatternExpCS__PatternVariableNameAssignment_0)?

-{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PatternExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PatternExpCS__Group__1__Impl

-	rule__PatternExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }

-

-	':' 

-

-{ after(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PatternExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PatternExpCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }

-(rule__PatternExpCS__OwnedPatternTypeAssignment_2)

-{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__LambdaLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__0__Impl

-	rule__LambdaLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }

-

-	'Lambda' 

-

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__1__Impl

-	rule__LambdaLiteralExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaLiteralExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__2__Impl

-	rule__LambdaLiteralExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }

-(rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2)

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaLiteralExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TupleLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__0__Impl

-	rule__TupleLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }

-

-	'Tuple' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__1__Impl

-	rule__TupleLiteralExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__2__Impl

-	rule__TupleLiteralExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }

-(rule__TupleLiteralExpCS__OwnedPartsAssignment_2)

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__3__Impl

-	rule__TupleLiteralExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }

-(rule__TupleLiteralExpCS__Group_3__0)*

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }

-

-	'}' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__TupleLiteralExpCS__Group_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group_3__0__Impl

-	rule__TupleLiteralExpCS__Group_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group_3__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }

-(rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1)

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TupleLiteralPartCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__0__Impl

-	rule__TupleLiteralPartCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }

-(rule__TupleLiteralPartCS__NameAssignment_0)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__1__Impl

-	rule__TupleLiteralPartCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }

-(rule__TupleLiteralPartCS__Group_1__0)?

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__2__Impl

-	rule__TupleLiteralPartCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }

-

-	'=' 

-

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }

-(rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TupleLiteralPartCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group_1__0__Impl

-	rule__TupleLiteralPartCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }

-

-	':' 

-

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }

-(rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__UnlimitedNaturalLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl

-	rule__UnlimitedNaturalLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__UnlimitedNaturalLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }

-

-	'*' 

-

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__InvalidLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvalidLiteralExpCS__Group__0__Impl

-	rule__InvalidLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvalidLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvalidLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvalidLiteralExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvalidLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }

-

-	'invalid' 

-

-{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NullLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NullLiteralExpCS__Group__0__Impl

-	rule__NullLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NullLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NullLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NullLiteralExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NullLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }

-

-	'null' 

-

-{ after(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeLiteralWithMultiplicityCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeLiteralWithMultiplicityCS__Group__0__Impl

-	rule__TypeLiteralWithMultiplicityCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralWithMultiplicityCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }

-	ruleTypeLiteralCS

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeLiteralWithMultiplicityCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeLiteralWithMultiplicityCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralWithMultiplicityCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }

-(rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1)?

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeNameExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group__0__Impl

-	rule__TypeNameExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-(rule__TypeNameExpCS__OwnedPathNameAssignment_0)

-{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }

-(rule__TypeNameExpCS__Group_1__0)?

-{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeNameExpCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1__0__Impl

-	rule__TypeNameExpCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }

-(rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0)

-{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }

-(rule__TypeNameExpCS__Group_1_1__0)?

-{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeNameExpCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1_1__0__Impl

-	rule__TypeNameExpCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1_1__1__Impl

-	rule__TypeNameExpCS__Group_1_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }

-(rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1)

-{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group_1_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TypeExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeExpCS__Group__0__Impl

-	rule__TypeExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }

-(rule__TypeExpCS__Alternatives_0)

-{ after(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }

-(rule__TypeExpCS__OwnedMultiplicityAssignment_1)?

-{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ExpCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0__0__Impl

-	rule__ExpCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }

-	rulePrefixedPrimaryExpCS

-{ after(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ExpCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getGroup_0_1()); }

-(rule__ExpCS__Group_0_1__0)?

-{ after(grammarAccess.getExpCSAccess().getGroup_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ExpCS__Group_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0_1__0__Impl

-	rule__ExpCS__Group_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }

-(

-

-)

-{ after(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ExpCS__Group_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0_1__1__Impl

-	rule__ExpCS__Group_0_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }

-(rule__ExpCS__NameAssignment_0_1_1)

-{ after(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ExpCS__Group_0_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }

-(rule__ExpCS__OwnedRightAssignment_0_1_2)

-{ after(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PrefixedLetExpCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedLetExpCS__Group_0__0__Impl

-	rule__PrefixedLetExpCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }

-(

-

-)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedLetExpCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedLetExpCS__Group_0__1__Impl

-	rule__PrefixedLetExpCS__Group_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }

-(rule__PrefixedLetExpCS__NameAssignment_0_1)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedLetExpCS__Group_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedLetExpCS__Group_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Group_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }

-(rule__PrefixedLetExpCS__OwnedRightAssignment_0_2)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PrefixedPrimaryExpCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedPrimaryExpCS__Group_0__0__Impl

-	rule__PrefixedPrimaryExpCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }

-(

-

-)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedPrimaryExpCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedPrimaryExpCS__Group_0__1__Impl

-	rule__PrefixedPrimaryExpCS__Group_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }

-(rule__PrefixedPrimaryExpCS__NameAssignment_0_1)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedPrimaryExpCS__Group_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedPrimaryExpCS__Group_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Group_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }

-(rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NameExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__0__Impl

-	rule__NameExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-(rule__NameExpCS__OwnedPathNameAssignment_0)

-{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__1__Impl

-	rule__NameExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }

-(rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1)*

-{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__2__Impl

-	rule__NameExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }

-(rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2)?

-{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__3__Impl

-	rule__NameExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }

-(rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3)?

-{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getGroup_4()); }

-(rule__NameExpCS__Group_4__0)?

-{ after(grammarAccess.getNameExpCSAccess().getGroup_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__NameExpCS__Group_4__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group_4__0__Impl

-	rule__NameExpCS__Group_4__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group_4__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }

-(rule__NameExpCS__IsPreAssignment_4_0)

-{ after(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group_4__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group_4__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group_4__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }

-

-	'pre' 

-

-{ after(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CurlyBracketedClauseCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__0__Impl

-	rule__CurlyBracketedClauseCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__1__Impl

-	rule__CurlyBracketedClauseCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__2__Impl

-	rule__CurlyBracketedClauseCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }

-(rule__CurlyBracketedClauseCS__Alternatives_2)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__CurlyBracketedClauseCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0__0__Impl

-	rule__CurlyBracketedClauseCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }

-(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }

-(rule__CurlyBracketedClauseCS__Group_2_0_1__0)*

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl

-	rule__CurlyBracketedClauseCS__Group_2_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }

-(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__0__Impl

-	rule__RoundBracketedClauseCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__1__Impl

-	rule__RoundBracketedClauseCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }

-

-	'(' 

-

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__2__Impl

-	rule__RoundBracketedClauseCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }

-(rule__RoundBracketedClauseCS__Group_2__0)?

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }

-

-	')' 

-

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__0__Impl

-	rule__RoundBracketedClauseCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__1__Impl

-	rule__RoundBracketedClauseCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__2__Impl

-	rule__RoundBracketedClauseCS__Group_2__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }

-(rule__RoundBracketedClauseCS__Group_2_2__0)?

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }

-(rule__RoundBracketedClauseCS__Group_2_3__0)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_2__0__Impl

-	rule__RoundBracketedClauseCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group_2_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_3__0__Impl

-	rule__RoundBracketedClauseCS__Group_2_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_3__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__SquareBracketedClauseCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__0__Impl

-	rule__SquareBracketedClauseCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }

-

-	'[' 

-

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__1__Impl

-	rule__SquareBracketedClauseCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }

-(rule__SquareBracketedClauseCS__OwnedTermsAssignment_1)

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__2__Impl

-	rule__SquareBracketedClauseCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }

-(rule__SquareBracketedClauseCS__Group_2__0)*

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }

-

-	']' 

-

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__SquareBracketedClauseCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group_2__0__Impl

-	rule__SquareBracketedClauseCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }

-(rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1)

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0__0__Impl

-	rule__NavigatingArgCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }

-(rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }

-(rule__NavigatingArgCS__Alternatives_0_1)?

-{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0_1_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0__0__Impl

-	rule__NavigatingArgCS__Group_0_1_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0__1__Impl

-	rule__NavigatingArgCS__Group_0_1_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }

-(rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }

-(rule__NavigatingArgCS__Group_0_1_0_2__0)?

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0_1_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0_2__0__Impl

-	rule__NavigatingArgCS__Group_0_1_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }

-(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_1__0__Impl

-	rule__NavigatingArgCS__Group_0_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }

-

-	'in' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }

-(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_1__0__Impl

-	rule__NavigatingArgCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }

-(rule__NavigatingArgCS__OwnedTypeAssignment_1_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingBarArgCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group__0__Impl

-	rule__NavigatingBarArgCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }

-(rule__NavigatingBarArgCS__PrefixAssignment_0)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group__1__Impl

-	rule__NavigatingBarArgCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-(rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }

-(rule__NavigatingBarArgCS__Group_2__0)?

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingBarArgCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2__0__Impl

-	rule__NavigatingBarArgCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2__1__Impl

-	rule__NavigatingBarArgCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }

-(rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }

-(rule__NavigatingBarArgCS__Group_2_2__0)?

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingBarArgCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2_2__0__Impl

-	rule__NavigatingBarArgCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-(rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group__0__Impl

-	rule__NavigatingCommaArgCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }

-(rule__NavigatingCommaArgCS__PrefixAssignment_0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group__1__Impl

-	rule__NavigatingCommaArgCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-(rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }

-(rule__NavigatingCommaArgCS__Alternatives_2)?

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0__0__Impl

-	rule__NavigatingCommaArgCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0__1__Impl

-	rule__NavigatingCommaArgCS__Group_2_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }

-(rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }

-(rule__NavigatingCommaArgCS__Group_2_0_2__0)?

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group_2_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl

-	rule__NavigatingCommaArgCS__Group_2_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }

-(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_1__0__Impl

-	rule__NavigatingCommaArgCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }

-

-	'in' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }

-(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingSemiArgCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group__0__Impl

-	rule__NavigatingSemiArgCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }

-(rule__NavigatingSemiArgCS__PrefixAssignment_0)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group__1__Impl

-	rule__NavigatingSemiArgCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-(rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }

-(rule__NavigatingSemiArgCS__Group_2__0)?

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingSemiArgCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2__0__Impl

-	rule__NavigatingSemiArgCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2__1__Impl

-	rule__NavigatingSemiArgCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }

-(rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }

-(rule__NavigatingSemiArgCS__Group_2_2__0)?

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingSemiArgCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2_2__0__Impl

-	rule__NavigatingSemiArgCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-(rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__IfExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__0__Impl

-	rule__IfExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }

-

-	'if' 

-

-{ after(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__1__Impl

-	rule__IfExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }

-(rule__IfExpCS__OwnedConditionAssignment_1)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__2__Impl

-	rule__IfExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }

-

-	'then' 

-

-{ after(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__3__Impl

-	rule__IfExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-(rule__IfExpCS__OwnedThenExpressionAssignment_3)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__4__Impl

-	rule__IfExpCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }

-(rule__IfExpCS__OwnedIfThenExpressionsAssignment_4)*

-{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__5__Impl

-	rule__IfExpCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }

-

-	'else' 

-

-{ after(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__6__Impl

-	rule__IfExpCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }

-(rule__IfExpCS__OwnedElseExpressionAssignment_6)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__7__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }

-

-	'endif' 

-

-{ after(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__ElseIfThenExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__0__Impl

-	rule__ElseIfThenExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }

-

-	'elseif' 

-

-{ after(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ElseIfThenExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__1__Impl

-	rule__ElseIfThenExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }

-(rule__ElseIfThenExpCS__OwnedConditionAssignment_1)

-{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ElseIfThenExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__2__Impl

-	rule__ElseIfThenExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }

-

-	'then' 

-

-{ after(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ElseIfThenExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-(rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3)

-{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__LetExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__0__Impl

-	rule__LetExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }

-

-	'let' 

-

-{ after(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__1__Impl

-	rule__LetExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }

-(rule__LetExpCS__OwnedVariablesAssignment_1)

-{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__2__Impl

-	rule__LetExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getGroup_2()); }

-(rule__LetExpCS__Group_2__0)*

-{ after(grammarAccess.getLetExpCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__3__Impl

-	rule__LetExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }

-

-	'in' 

-

-{ after(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }

-(rule__LetExpCS__OwnedInExpressionAssignment_4)

-{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LetExpCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group_2__0__Impl

-	rule__LetExpCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }

-(rule__LetExpCS__OwnedVariablesAssignment_2_1)

-{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LetVariableCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__0__Impl

-	rule__LetVariableCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }

-(rule__LetVariableCS__NameAssignment_0)

-{ after(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__1__Impl

-	rule__LetVariableCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }

-(rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1)?

-{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__2__Impl

-	rule__LetVariableCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getGroup_2()); }

-(rule__LetVariableCS__Group_2__0)?

-{ after(grammarAccess.getLetVariableCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__3__Impl

-	rule__LetVariableCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }

-

-	'=' 

-

-{ after(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }

-(rule__LetVariableCS__OwnedInitExpressionAssignment_4)

-{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LetVariableCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group_2__0__Impl

-	rule__LetVariableCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }

-(rule__LetVariableCS__OwnedTypeAssignment_2_1)

-{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NestedExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NestedExpCS__Group__0__Impl

-	rule__NestedExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NestedExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NestedExpCS__Group__1__Impl

-	rule__NestedExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }

-(rule__NestedExpCS__OwnedExpressionAssignment_1)

-{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NestedExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NestedExpCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }

-

-	')' 

-

-{ after(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__SelfExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SelfExpCS__Group__0__Impl

-	rule__SelfExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SelfExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SelfExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SelfExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SelfExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }

-

-	'self' 

-

-{ after(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__MultiplicityBoundsCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group__0__Impl

-	rule__MultiplicityBoundsCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }

-(rule__MultiplicityBoundsCS__LowerBoundAssignment_0)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityBoundsCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }

-(rule__MultiplicityBoundsCS__Group_1__0)?

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__MultiplicityBoundsCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group_1__0__Impl

-	rule__MultiplicityBoundsCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }

-

-	'..' 

-

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityBoundsCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }

-(rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__MultiplicityCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityCS__Group__0__Impl

-	rule__MultiplicityCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }

-

-	'[' 

-

-{ after(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityCS__Group__1__Impl

-	rule__MultiplicityCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }

-(rule__MultiplicityCS__Alternatives_1)

-{ after(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }

-

-	']' 

-

-{ after(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PathNameCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group__0__Impl

-	rule__PathNameCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-(rule__PathNameCS__OwnedPathElementsAssignment_0)

-{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PathNameCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getGroup_1()); }

-(rule__PathNameCS__Group_1__0)*

-{ after(grammarAccess.getPathNameCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__PathNameCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group_1__0__Impl

-	rule__PathNameCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }

-

-	'::' 

-

-{ after(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PathNameCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-(rule__PathNameCS__OwnedPathElementsAssignment_1_1)

-{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeParameterCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group__0__Impl

-	rule__TypeParameterCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }

-(rule__TypeParameterCS__NameAssignment_0)

-{ after(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }

-(rule__TypeParameterCS__Alternatives_1)?

-{ after(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__0__Impl

-	rule__TypeParameterCS__Group_1_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }

-

-	'extends' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__1__Impl

-	rule__TypeParameterCS__Group_1_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }

-(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }

-(rule__TypeParameterCS__Group_1_0_2__0)*

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0_2__0__Impl

-	rule__TypeParameterCS__Group_1_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }

-

-	'&&' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }

-(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_1__0__Impl

-	rule__TypeParameterCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }

-

-	'super' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }

-(rule__TypeParameterCS__OwnedSuperAssignment_1_1_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypedTypeRefCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedTypeRefCS__Group__0__Impl

-	rule__TypedTypeRefCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }

-(rule__TypedTypeRefCS__OwnedPathNameAssignment_0)

-{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypedTypeRefCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedTypeRefCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }

-(rule__TypedTypeRefCS__OwnedBindingAssignment_1)?

-{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__0__Impl

-	rule__WildcardTypeRefCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__1__Impl

-	rule__WildcardTypeRefCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }

-

-	'?' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }

-(rule__WildcardTypeRefCS__Alternatives_2)?

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_0__0__Impl

-	rule__WildcardTypeRefCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }

-

-	'extends' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }

-(rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_1__0__Impl

-	rule__WildcardTypeRefCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }

-

-	'super' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }

-(rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-rule__TopLevelCS__OwnedLibrariesAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTopLevelCSAccess().getOwnedLibrariesLibraryCSParserRuleCall_2_0()); }

-	ruleLibraryCS{ after(grammarAccess.getTopLevelCSAccess().getOwnedLibrariesLibraryCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TopLevelCS__OwnedImportsAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTopLevelCSAccess().getOwnedImportsImportCSParserRuleCall_3_0()); }

-	ruleImportCS{ after(grammarAccess.getTopLevelCSAccess().getOwnedImportsImportCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TopLevelCS__OwnedPackagesAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTopLevelCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0()); }

-	rulePackageCS{ after(grammarAccess.getTopLevelCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__IsCallableAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getIsCallableCallableKeyword_0_0()); }

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getIsCallableCallableKeyword_0_0()); }

-

-	'callable' 

-

-{ after(grammarAccess.getInvariantConstraintCSAccess().getIsCallableCallableKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getInvariantConstraintCSAccess().getIsCallableCallableKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__StereotypeAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getStereotypeInvariantKeyword_1_0()); }

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getStereotypeInvariantKeyword_1_0()); }

-

-	'invariant' 

-

-{ after(grammarAccess.getInvariantConstraintCSAccess().getStereotypeInvariantKeyword_1_0()); }

-)

-

-{ after(grammarAccess.getInvariantConstraintCSAccess().getStereotypeInvariantKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__NameAssignment_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_2_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getInvariantConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__OwnedMessageSpecificationAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_2_1_1_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getInvariantConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvariantConstraintCS__OwnedSpecificationAssignment_3_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvariantConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0_1_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getInvariantConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostconditionConstraintCS__StereotypeAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getStereotypePostconditionKeyword_0_0()); }

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getStereotypePostconditionKeyword_0_0()); }

-

-	'postcondition' 

-

-{ after(grammarAccess.getPostconditionConstraintCSAccess().getStereotypePostconditionKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getPostconditionConstraintCSAccess().getStereotypePostconditionKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostconditionConstraintCS__NameAssignment_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getPostconditionConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostconditionConstraintCS__OwnedMessageSpecificationAssignment_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getPostconditionConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostconditionConstraintCS__OwnedSpecificationAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostconditionConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getPostconditionConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreconditionConstraintCS__StereotypeAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getStereotypePreconditionKeyword_0_0()); }

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getStereotypePreconditionKeyword_0_0()); }

-

-	'precondition' 

-

-{ after(grammarAccess.getPreconditionConstraintCSAccess().getStereotypePreconditionKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getPreconditionConstraintCSAccess().getStereotypePreconditionKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreconditionConstraintCS__NameAssignment_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getPreconditionConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreconditionConstraintCS__OwnedMessageSpecificationAssignment_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getPreconditionConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreconditionConstraintCS__OwnedSpecificationAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreconditionConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getPreconditionConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__NameAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getNameAlternatives_2_0()); }

-(rule__AnnotationCS__NameAlternatives_2_0)

-{ after(grammarAccess.getAnnotationCSAccess().getNameAlternatives_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__OwnedDetailsAssignment_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); }

-	ruleDetailCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__OwnedDetailsAssignment_3_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); }

-	ruleDetailCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__OwnedAnnotationsAssignment_4_0_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_0_1_0_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__OwnedContentsAssignment_4_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedContentsModelElementCSParserRuleCall_4_0_1_1_0()); }

-	ruleModelElementCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedContentsModelElementCSParserRuleCall_4_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__OwnedReferencesAssignment_4_0_1_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedReferencesModelElementRefCSParserRuleCall_4_0_1_2_0()); }

-	ruleModelElementRefCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedReferencesModelElementRefCSParserRuleCall_4_0_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_0_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }

-

-	'static' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_0_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }

-

-	'definition' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_0_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }

-

-	'definition' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }

-

-	'static' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__NameAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getAttributeCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__OwnedTypeAssignment_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_3_1_0()); }

-	ruleTypedMultiplicityRefCS{ after(grammarAccess.getAttributeCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__DefaultAssignment_4_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getDefaultSINGLE_QUOTED_STRINGTerminalRuleCall_4_1_0()); }

-	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getAttributeCSAccess().getDefaultSINGLE_QUOTED_STRINGTerminalRuleCall_4_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_0_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_0_0()); }

-

-	'derived' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_0_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_1_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_1_0()); }

-

-	'!derived' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_1_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_2_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_2_0()); }

-

-	'id' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_2_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_3_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_3_0()); }

-

-	'!id' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_3_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_4_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_4_0()); }

-

-	'ordered' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_4_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_5_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_5_0()); }

-

-	'!ordered' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_5_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_5_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_6_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_6_0()); }

-

-	'readonly' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_6_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_6_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_7_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_7_0()); }

-

-	'!readonly' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_7_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_7_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_8

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_8_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_8_0()); }

-

-	'transient' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_8_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_8_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_9

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_9_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_9_0()); }

-

-	'!transient' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_9_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_9_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_10

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_10_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_10_0()); }

-

-	'unique' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_10_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_10_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_11

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_11_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_11_0()); }

-

-	'!unique' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_11_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_11_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_12

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_12_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_12_0()); }

-

-	'unsettable' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_12_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_12_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_13

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_13_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_13_0()); }

-

-	'!unsettable' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_13_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_13_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_14

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_14_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_14_0()); }

-

-	'volatile' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_14_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_14_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__QualifiersAssignment_5_1_0_15

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_15_0()); }

-(

-{ before(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_15_0()); }

-

-	'!volatile' 

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_15_0()); }

-)

-

-{ after(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_15_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__OwnedAnnotationsAssignment_6_0_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getAttributeCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__OwnedDefaultExpressionsAssignment_6_0_1_1_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_6_0_1_1_3_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_6_0_1_1_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AttributeCS__OwnedDefaultExpressionsAssignment_6_0_1_2_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_6_0_1_2_3_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_6_0_1_2_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__IsPrimitiveAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getIsPrimitivePrimitiveKeyword_0_0()); }

-(

-{ before(grammarAccess.getDataTypeCSAccess().getIsPrimitivePrimitiveKeyword_0_0()); }

-

-	'primitive' 

-

-{ after(grammarAccess.getDataTypeCSAccess().getIsPrimitivePrimitiveKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getDataTypeCSAccess().getIsPrimitivePrimitiveKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__NameAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getDataTypeCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__OwnedSignatureAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); }

-	ruleTemplateSignatureCS{ after(grammarAccess.getDataTypeCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__InstanceClassNameAssignment_4_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_4_1_0()); }

-	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getDataTypeCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_4_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__IsSerializableAssignment_5_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getIsSerializableSerializableKeyword_5_1_0_0()); }

-(

-{ before(grammarAccess.getDataTypeCSAccess().getIsSerializableSerializableKeyword_5_1_0_0()); }

-

-	'serializable' 

-

-{ after(grammarAccess.getDataTypeCSAccess().getIsSerializableSerializableKeyword_5_1_0_0()); }

-)

-

-{ after(grammarAccess.getDataTypeCSAccess().getIsSerializableSerializableKeyword_5_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__OwnedAnnotationsAssignment_6_0_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getDataTypeCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DataTypeCS__OwnedConstraintsAssignment_6_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDataTypeCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_6_0_1_1_0()); }

-	ruleInvariantConstraintCS{ after(grammarAccess.getDataTypeCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_6_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DetailCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDetailCSAccess().getNameAlternatives_0_0()); }

-(rule__DetailCS__NameAlternatives_0_0)

-{ after(grammarAccess.getDetailCSAccess().getNameAlternatives_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DetailCS__ValuesAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDetailCSAccess().getValuesAlternatives_2_0()); }

-(rule__DetailCS__ValuesAlternatives_2_0)

-{ after(grammarAccess.getDetailCSAccess().getValuesAlternatives_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__ValueAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getValueSINGLE_QUOTED_STRINGTerminalRuleCall_2_0()); }

-	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getDocumentationCSAccess().getValueSINGLE_QUOTED_STRINGTerminalRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__OwnedDetailsAssignment_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); }

-	ruleDetailCS{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__OwnedDetailsAssignment_3_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); }

-	ruleDetailCS{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__NameAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getNameUnrestrictedNameParserRuleCall_1_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getEnumerationCSAccess().getNameUnrestrictedNameParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__OwnedSignatureAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }

-	ruleTemplateSignatureCS{ after(grammarAccess.getEnumerationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__InstanceClassNameAssignment_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_3_1_0()); }

-	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getEnumerationCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__IsSerializableAssignment_4_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getIsSerializableSerializableKeyword_4_1_0_0()); }

-(

-{ before(grammarAccess.getEnumerationCSAccess().getIsSerializableSerializableKeyword_4_1_0_0()); }

-

-	'serializable' 

-

-{ after(grammarAccess.getEnumerationCSAccess().getIsSerializableSerializableKeyword_4_1_0_0()); }

-)

-

-{ after(grammarAccess.getEnumerationCSAccess().getIsSerializableSerializableKeyword_4_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__OwnedAnnotationsAssignment_5_0_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_5_0_1_0_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getEnumerationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_5_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__OwnedLiteralsAssignment_5_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getOwnedLiteralsEnumerationLiteralCSParserRuleCall_5_0_1_1_0()); }

-	ruleEnumerationLiteralCS{ after(grammarAccess.getEnumerationCSAccess().getOwnedLiteralsEnumerationLiteralCSParserRuleCall_5_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationCS__OwnedConstraintsAssignment_5_0_1_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_5_0_1_2_0()); }

-	ruleInvariantConstraintCS{ after(grammarAccess.getEnumerationCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_5_0_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__NameAssignment_0_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_1_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getEnumerationLiteralCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__NameAssignment_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getNameEnumerationLiteralNameParserRuleCall_0_1_0()); }

-	ruleEnumerationLiteralName{ after(grammarAccess.getEnumerationLiteralCSAccess().getNameEnumerationLiteralNameParserRuleCall_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__ValueAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getValueSIGNEDParserRuleCall_1_1_0()); }

-	ruleSIGNED{ after(grammarAccess.getEnumerationLiteralCSAccess().getValueSIGNEDParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EnumerationLiteralCS__OwnedAnnotationsAssignment_2_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEnumerationLiteralCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_2_0_1_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getEnumerationLiteralCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_2_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__NameAssignment_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getImportCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__OwnedPathNameAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getOwnedPathNameURIPathNameCSParserRuleCall_2_0()); }

-	ruleURIPathNameCS{ after(grammarAccess.getImportCSAccess().getOwnedPathNameURIPathNameCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ImportCS__IsAllAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }

-(

-{ before(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }

-

-	'::*' 

-

-{ after(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }

-)

-

-{ after(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibraryCS__NameAssignment_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getLibraryCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibraryCS__ReferredPackageAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_2_0()); }

-(

-{ before(grammarAccess.getLibraryCSAccess().getReferredPackagePackageURIParserRuleCall_2_0_1()); }

-	ruleURI{ after(grammarAccess.getLibraryCSAccess().getReferredPackagePackageURIParserRuleCall_2_0_1()); }

-)

-{ after(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ModelElementRefCS__OwnedPathNameAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getModelElementRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); }

-	rulePathNameCS{ after(grammarAccess.getModelElementRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__QualifiersAssignment_0_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }

-

-	'static' 

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }

-)

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__QualifiersAssignment_0_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }

-

-	'definition' 

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }

-)

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__QualifiersAssignment_0_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }

-

-	'definition' 

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }

-)

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__QualifiersAssignment_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }

-

-	'static' 

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }

-)

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__OwnedSignatureAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }

-	ruleTemplateSignatureCS{ after(grammarAccess.getOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__NameAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getNameUnrestrictedNameParserRuleCall_3_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getOperationCSAccess().getNameUnrestrictedNameParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__OwnedParametersAssignment_5_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_0_0()); }

-	ruleParameterCS{ after(grammarAccess.getOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__OwnedParametersAssignment_5_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_1_1_0()); }

-	ruleParameterCS{ after(grammarAccess.getOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__OwnedTypeAssignment_7_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_7_1_0()); }

-	ruleTypedMultiplicityRefCS{ after(grammarAccess.getOperationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_7_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__OwnedExceptionsAssignment_8_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedExceptionsTypedRefCSParserRuleCall_8_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getOperationCSAccess().getOwnedExceptionsTypedRefCSParserRuleCall_8_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__OwnedExceptionsAssignment_8_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedExceptionsTypedRefCSParserRuleCall_8_2_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getOperationCSAccess().getOwnedExceptionsTypedRefCSParserRuleCall_8_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__QualifiersAssignment_9_1_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_0_0()); }

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_0_0()); }

-

-	'derived' 

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_0_0()); }

-)

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__QualifiersAssignment_9_1_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_1_0()); }

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_1_0()); }

-

-	'!derived' 

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_1_0()); }

-)

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__QualifiersAssignment_9_1_0_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_2_0()); }

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_2_0()); }

-

-	'ordered' 

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_2_0()); }

-)

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__QualifiersAssignment_9_1_0_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_3_0()); }

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_3_0()); }

-

-	'!ordered' 

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_3_0()); }

-)

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__QualifiersAssignment_9_1_0_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_4_0()); }

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_4_0()); }

-

-	'unique' 

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_4_0()); }

-)

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__QualifiersAssignment_9_1_0_5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_5_0()); }

-(

-{ before(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_5_0()); }

-

-	'!unique' 

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_5_0()); }

-)

-

-{ after(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_5_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__OwnedAnnotationsAssignment_10_0_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_10_0_1_0_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getOperationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_10_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__OwnedPreconditionsAssignment_10_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedPreconditionsPreconditionConstraintCSParserRuleCall_10_0_1_1_0()); }

-	rulePreconditionConstraintCS{ after(grammarAccess.getOperationCSAccess().getOwnedPreconditionsPreconditionConstraintCSParserRuleCall_10_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__OwnedBodyExpressionsAssignment_10_0_1_2_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedBodyExpressionsSpecificationCSParserRuleCall_10_0_1_2_3_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getOperationCSAccess().getOwnedBodyExpressionsSpecificationCSParserRuleCall_10_0_1_2_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__OwnedPostconditionsAssignment_10_0_1_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getOwnedPostconditionsPostconditionConstraintCSParserRuleCall_10_0_1_3_0()); }

-	rulePostconditionConstraintCS{ after(grammarAccess.getOperationCSAccess().getOwnedPostconditionsPostconditionConstraintCSParserRuleCall_10_0_1_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__NameAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getNameUnrestrictedNameParserRuleCall_1_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getPackageCSAccess().getNameUnrestrictedNameParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__NsPrefixAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getNsPrefixUnrestrictedNameParserRuleCall_2_1_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getPackageCSAccess().getNsPrefixUnrestrictedNameParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__NsURIAssignment_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getNsURIURIParserRuleCall_3_1_0()); }

-	ruleURI{ after(grammarAccess.getPackageCSAccess().getNsURIURIParserRuleCall_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__OwnedAnnotationsAssignment_4_0_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_0_1_0_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__OwnedPackagesAssignment_4_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_1_1_0()); }

-	rulePackageCS{ after(grammarAccess.getPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__OwnedClassesAssignment_4_0_1_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_0_1_2_0()); }

-	ruleClassCS{ after(grammarAccess.getPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_0_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__OwnedTypeAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_1_1_0()); }

-	ruleTypedMultiplicityRefCS{ after(grammarAccess.getParameterCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__QualifiersAssignment_2_1_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_0_0()); }

-(

-{ before(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_0_0()); }

-

-	'ordered' 

-

-{ after(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_0_0()); }

-)

-

-{ after(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__QualifiersAssignment_2_1_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_1_0()); }

-(

-{ before(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_1_0()); }

-

-	'!ordered' 

-

-{ after(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_1_0()); }

-)

-

-{ after(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__QualifiersAssignment_2_1_0_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_2_0()); }

-(

-{ before(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_2_0()); }

-

-	'unique' 

-

-{ after(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_2_0()); }

-)

-

-{ after(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__QualifiersAssignment_2_1_0_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_3_0()); }

-(

-{ before(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_3_0()); }

-

-	'!unique' 

-

-{ after(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_3_0()); }

-)

-

-{ after(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__OwnedAnnotationsAssignment_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_3_1_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getParameterCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_0_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }

-

-	'static' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_0_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }

-

-	'definition' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_0_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }

-

-	'definition' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }

-

-	'static' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__NameAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getReferenceCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__ReferredOppositeAssignment_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getReferredOppositePropertyCrossReference_3_1_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getReferredOppositePropertyUnrestrictedNameParserRuleCall_3_1_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getReferenceCSAccess().getReferredOppositePropertyUnrestrictedNameParserRuleCall_3_1_0_1()); }

-)

-{ after(grammarAccess.getReferenceCSAccess().getReferredOppositePropertyCrossReference_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__OwnedTypeAssignment_4_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_4_1_0()); }

-	ruleTypedMultiplicityRefCS{ after(grammarAccess.getReferenceCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_4_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__DefaultAssignment_5_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getDefaultSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0()); }

-	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getReferenceCSAccess().getDefaultSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_0_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_0_0()); }

-

-	'composes' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_0_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_1_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_1_0()); }

-

-	'!composes' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_1_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_2_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_2_0()); }

-

-	'derived' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_2_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_3_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_3_0()); }

-

-	'!derived' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_3_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_4_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_4_0()); }

-

-	'ordered' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_4_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_5_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_5_0()); }

-

-	'!ordered' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_5_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_5_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_6_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_6_0()); }

-

-	'readonly' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_6_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_6_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_7_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_7_0()); }

-

-	'!readonly' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_7_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_7_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_8

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_8_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_8_0()); }

-

-	'resolve' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_8_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_8_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_9

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_9_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_9_0()); }

-

-	'!resolve' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_9_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_9_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_10

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_10_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_10_0()); }

-

-	'transient' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_10_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_10_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_11

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_11_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_11_0()); }

-

-	'!transient' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_11_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_11_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_12

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_12_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_12_0()); }

-

-	'unique' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_12_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_12_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_13

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_13_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_13_0()); }

-

-	'!unique' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_13_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_13_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_14

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_14_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_14_0()); }

-

-	'unsettable' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_14_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_14_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_15

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_15_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_15_0()); }

-

-	'!unsettable' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_15_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_15_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_16

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_16_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_16_0()); }

-

-	'volatile' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_16_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_16_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__QualifiersAssignment_6_1_0_17

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_17_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_17_0()); }

-

-	'!volatile' 

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_17_0()); }

-)

-

-{ after(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_17_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__OwnedAnnotationsAssignment_7_0_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getReferenceCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__ReferredKeysAssignment_7_0_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyCrossReference_7_0_1_1_1_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyUnrestrictedNameParserRuleCall_7_0_1_1_1_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyUnrestrictedNameParserRuleCall_7_0_1_1_1_0_1()); }

-)

-{ after(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyCrossReference_7_0_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__ReferredKeysAssignment_7_0_1_1_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyCrossReference_7_0_1_1_2_1_0()); }

-(

-{ before(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyUnrestrictedNameParserRuleCall_7_0_1_1_2_1_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyUnrestrictedNameParserRuleCall_7_0_1_1_2_1_0_1()); }

-)

-{ after(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyCrossReference_7_0_1_1_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__OwnedDefaultExpressionsAssignment_7_0_1_2_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_7_0_1_2_3_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_7_0_1_2_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ReferenceCS__OwnedDefaultExpressionsAssignment_7_0_1_3_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_7_0_1_3_3_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_7_0_1_3_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SpecificationCS__OwnedExpressionAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0()); }

-	ruleExpCS{ after(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SpecificationCS__ExprStringAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); }

-	RULE_UNQUOTED_STRING{ after(grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__IsAbstractAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getIsAbstractAbstractKeyword_0_0()); }

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getIsAbstractAbstractKeyword_0_0()); }

-

-	'abstract' 

-

-{ after(grammarAccess.getStructuredClassCSAccess().getIsAbstractAbstractKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getStructuredClassCSAccess().getIsAbstractAbstractKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__NameAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getStructuredClassCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__OwnedSignatureAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); }

-	ruleTemplateSignatureCS{ after(grammarAccess.getStructuredClassCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__OwnedSuperTypesAssignment_4_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__OwnedSuperTypesAssignment_4_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_2_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__InstanceClassNameAssignment_5_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0()); }

-	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getStructuredClassCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__IsInterfaceAssignment_6_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getIsInterfaceInterfaceKeyword_6_1_0()); }

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getIsInterfaceInterfaceKeyword_6_1_0()); }

-

-	'interface' 

-

-{ after(grammarAccess.getStructuredClassCSAccess().getIsInterfaceInterfaceKeyword_6_1_0()); }

-)

-

-{ after(grammarAccess.getStructuredClassCSAccess().getIsInterfaceInterfaceKeyword_6_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__OwnedAnnotationsAssignment_7_0_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getStructuredClassCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__OwnedOperationsAssignment_7_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getOwnedOperationsOperationCSParserRuleCall_7_0_1_1_0()); }

-	ruleOperationCS{ after(grammarAccess.getStructuredClassCSAccess().getOwnedOperationsOperationCSParserRuleCall_7_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__OwnedPropertiesAssignment_7_0_1_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getOwnedPropertiesStructuralFeatureCSParserRuleCall_7_0_1_2_0()); }

-	ruleStructuralFeatureCS{ after(grammarAccess.getStructuredClassCSAccess().getOwnedPropertiesStructuralFeatureCSParserRuleCall_7_0_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StructuredClassCS__OwnedConstraintsAssignment_7_0_1_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStructuredClassCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_7_0_1_3_0()); }

-	ruleInvariantConstraintCS{ after(grammarAccess.getStructuredClassCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_7_0_1_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SysMLCS__OwnedDetailsAssignment_2_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSysMLCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_0_0_0()); }

-	ruleDetailCS{ after(grammarAccess.getSysMLCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SysMLCS__OwnedDetailsAssignment_2_1_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSysMLCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_1_1_0_0()); }

-	ruleDetailCS{ after(grammarAccess.getSysMLCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_1_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedMultiplicityRefCS__OwnedMultiplicityAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-	ruleMultiplicityCS{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__OwnedSubstitutionsAssignment_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_0_1_0()); }

-	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__OwnedSubstitutionsAssignment_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_0_2_1_0()); }

-	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_1_0()); }

-	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_2_1_0()); }

-	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__OwnedParametersAssignment_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_1_0()); }

-	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_2_1_0()); }

-	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__OwnedParametersAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_1_0()); }

-	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_2_1_0()); }

-	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__URIPathNameCS__OwnedPathElementsAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsURIFirstPathElementCSParserRuleCall_0_0()); }

-	ruleURIFirstPathElementCS{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsURIFirstPathElementCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIPathNameCS__OwnedPathElementsAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }

-	ruleNextPathElementCS{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__ReferredElementAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }

-)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__ReferredElementAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }

-	ruleURI{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }

-)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimitiveTypeCS__NameAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }

-	rulePrimitiveTypeIdentifier{ after(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }

-	ruleCollectionTypeIdentifier{ after(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__OwnedTypeAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-

-	'Tuple' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__OwnedPartsAssignment_1_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }

-	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }

-	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__OwnedTypeAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__OwnedTypeAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-	ruleCollectionTypeCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }

-	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }

-	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }

-	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }

-	rulePatternExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__OwnedTypeAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-	ruleCollectionTypeCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__OwnedPartsAssignment_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }

-	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }

-	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }

-	ruleIdentifier{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__ReferredPropertyAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }

-)

-{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__OwnedInitExpressionAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }

-(rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0)

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__PatternVariableNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__OwnedPatternTypeAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }

-	ruleExpCS{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__OwnedPartsAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }

-	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }

-	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }

-	ruleExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NumberLiteralExpCS__SymbolAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }

-	ruleNUMBER_LITERAL{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StringLiteralExpCS__SegmentsAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }

-	ruleStringLiteral{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BooleanLiteralExpCS__SymbolAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-

-	'true' 

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BooleanLiteralExpCS__SymbolAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-

-	'false' 

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-)

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-	ruleMultiplicityCS{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralExpCS__OwnedTypeAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }

-	ruleTypeLiteralWithMultiplicityCS{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__OwnedPathNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-	rulePathNameCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }

-	ruleCurlyBracketedClauseCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__OwnedMultiplicityAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-	ruleMultiplicityCS{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__NameAssignment_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }

-	ruleBinaryOperatorName{ after(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__OwnedRightAssignment_0_1_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }

-	ruleExpCS{ after(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__NameAssignment_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__OwnedRightAssignment_0_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }

-	rulePrefixedLetExpCS{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__NameAssignment_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }

-	rulePrefixedPrimaryExpCS{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedPathNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-	rulePathNameCS{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }

-	ruleSquareBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }

-	ruleRoundBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }

-	ruleCurlyBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__IsPreAssignment_4_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-(

-{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-

-	'@' 

-

-{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-)

-

-{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }

-	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }

-	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__ValueAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }

-	ruleStringLiteral{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }

-	ruleNavigatingArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }

-	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }

-	ruleNavigatingSemiArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }

-	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }

-	ruleNavigatingBarArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }

-	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__OwnedTermsAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }

-	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedTypeAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__PrefixAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-

-	'|' 

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__PrefixAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-

-	',' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__PrefixAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-

-	';' 

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedConditionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }

-(rule__IfExpCS__OwnedConditionAlternatives_1_0)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedThenExpressionAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedIfThenExpressionsAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }

-	ruleElseIfThenExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedElseExpressionAssignment_6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }

-	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__OwnedConditionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }

-	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__OwnedVariablesAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }

-	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__OwnedVariablesAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }

-	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__OwnedInExpressionAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }

-	ruleExpCS{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }

-	ruleRoundBracketedClauseCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__OwnedTypeAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__OwnedInitExpressionAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }

-	ruleExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__OwnedExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__LowerBoundAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }

-	ruleLOWER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }

-	ruleUPPER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityStringCS__StringBoundsAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }

-(rule__MultiplicityStringCS__StringBoundsAlternatives_0)

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__OwnedPathElementsAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }

-	ruleFirstPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__OwnedPathElementsAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }

-	ruleNextPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FirstPathElementCS__ReferredElementAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }

-)

-{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NextPathElementCS__ReferredElementAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }

-	ruleUnreservedName{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }

-)

-{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }

-	ruleTypeRefCS{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedSuperAssignment_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__OwnedPathNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-	rulePathNameCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__OwnedBindingAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }

-	ruleTemplateBindingCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-RULE_UNQUOTED_STRING : '\u00A3$%^\u00A3$%^';

-

-fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');

-

-fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');

-

-RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';

-

-RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';

-

-RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';

-

-RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;

-

-RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;

-

-RULE_INT : ('0'..'9')+;

-

-RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';

-

-RULE_SL_COMMENT : '--' ~(('\n'|'\r'))* ('\r'? '\n')?;

-

-RULE_WS : (' '|'\t'|'\r'|'\n')+;

-

-RULE_ANY_OTHER : .;

-

-

+/*
+ * generated by Xtext
+ */
+grammar InternalOCLinEcore;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.ocl.xtext.oclinecore.ui.contentassist.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.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.eclipse.ocl.xtext.oclinecore.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+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.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.ocl.xtext.oclinecore.services.OCLinEcoreGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private OCLinEcoreGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(OCLinEcoreGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleTopLevelCS
+entryRuleTopLevelCS 
+:
+{ before(grammarAccess.getTopLevelCSRule()); }
+	 ruleTopLevelCS
+{ after(grammarAccess.getTopLevelCSRule()); } 
+	 EOF 
+;
+
+// Rule TopLevelCS
+ruleTopLevelCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTopLevelCSAccess().getGroup()); }
+(rule__TopLevelCS__Group__0)
+{ after(grammarAccess.getTopLevelCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleSIGNED
+entryRuleSIGNED 
+:
+{ before(grammarAccess.getSIGNEDRule()); }
+	 ruleSIGNED
+{ after(grammarAccess.getSIGNEDRule()); } 
+	 EOF 
+;
+
+// Rule SIGNED
+ruleSIGNED
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSIGNEDAccess().getGroup()); }
+(rule__SIGNED__Group__0)
+{ after(grammarAccess.getSIGNEDAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEnumerationLiteralName
+entryRuleEnumerationLiteralName 
+:
+{ before(grammarAccess.getEnumerationLiteralNameRule()); }
+	 ruleEnumerationLiteralName
+{ after(grammarAccess.getEnumerationLiteralNameRule()); } 
+	 EOF 
+;
+
+// Rule EnumerationLiteralName
+ruleEnumerationLiteralName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getAlternatives()); }
+(rule__EnumerationLiteralName__Alternatives)
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleInvariantConstraintCS
+entryRuleInvariantConstraintCS 
+:
+{ before(grammarAccess.getInvariantConstraintCSRule()); }
+	 ruleInvariantConstraintCS
+{ after(grammarAccess.getInvariantConstraintCSRule()); } 
+	 EOF 
+;
+
+// Rule InvariantConstraintCS
+ruleInvariantConstraintCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getGroup()); }
+(rule__InvariantConstraintCS__Group__0)
+{ after(grammarAccess.getInvariantConstraintCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePostconditionConstraintCS
+entryRulePostconditionConstraintCS 
+:
+{ before(grammarAccess.getPostconditionConstraintCSRule()); }
+	 rulePostconditionConstraintCS
+{ after(grammarAccess.getPostconditionConstraintCSRule()); } 
+	 EOF 
+;
+
+// Rule PostconditionConstraintCS
+rulePostconditionConstraintCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getGroup()); }
+(rule__PostconditionConstraintCS__Group__0)
+{ after(grammarAccess.getPostconditionConstraintCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePreconditionConstraintCS
+entryRulePreconditionConstraintCS 
+:
+{ before(grammarAccess.getPreconditionConstraintCSRule()); }
+	 rulePreconditionConstraintCS
+{ after(grammarAccess.getPreconditionConstraintCSRule()); } 
+	 EOF 
+;
+
+// Rule PreconditionConstraintCS
+rulePreconditionConstraintCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getGroup()); }
+(rule__PreconditionConstraintCS__Group__0)
+{ after(grammarAccess.getPreconditionConstraintCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAnnotationCS
+entryRuleAnnotationCS 
+:
+{ before(grammarAccess.getAnnotationCSRule()); }
+	 ruleAnnotationCS
+{ after(grammarAccess.getAnnotationCSRule()); } 
+	 EOF 
+;
+
+// Rule AnnotationCS
+ruleAnnotationCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getGroup()); }
+(rule__AnnotationCS__Group__0)
+{ after(grammarAccess.getAnnotationCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAnnotationElementCS
+entryRuleAnnotationElementCS 
+:
+{ before(grammarAccess.getAnnotationElementCSRule()); }
+	 ruleAnnotationElementCS
+{ after(grammarAccess.getAnnotationElementCSRule()); } 
+	 EOF 
+;
+
+// Rule AnnotationElementCS
+ruleAnnotationElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAnnotationElementCSAccess().getAlternatives()); }
+(rule__AnnotationElementCS__Alternatives)
+{ after(grammarAccess.getAnnotationElementCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAttributeCS
+entryRuleAttributeCS 
+:
+{ before(grammarAccess.getAttributeCSRule()); }
+	 ruleAttributeCS
+{ after(grammarAccess.getAttributeCSRule()); } 
+	 EOF 
+;
+
+// Rule AttributeCS
+ruleAttributeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAttributeCSAccess().getGroup()); }
+(rule__AttributeCS__Group__0)
+{ after(grammarAccess.getAttributeCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleClassCS
+entryRuleClassCS 
+:
+{ before(grammarAccess.getClassCSRule()); }
+	 ruleClassCS
+{ after(grammarAccess.getClassCSRule()); } 
+	 EOF 
+;
+
+// Rule ClassCS
+ruleClassCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getClassCSAccess().getAlternatives()); }
+(rule__ClassCS__Alternatives)
+{ after(grammarAccess.getClassCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDataTypeCS
+entryRuleDataTypeCS 
+:
+{ before(grammarAccess.getDataTypeCSRule()); }
+	 ruleDataTypeCS
+{ after(grammarAccess.getDataTypeCSRule()); } 
+	 EOF 
+;
+
+// Rule DataTypeCS
+ruleDataTypeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getGroup()); }
+(rule__DataTypeCS__Group__0)
+{ after(grammarAccess.getDataTypeCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDetailCS
+entryRuleDetailCS 
+:
+{ before(grammarAccess.getDetailCSRule()); }
+	 ruleDetailCS
+{ after(grammarAccess.getDetailCSRule()); } 
+	 EOF 
+;
+
+// Rule DetailCS
+ruleDetailCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDetailCSAccess().getGroup()); }
+(rule__DetailCS__Group__0)
+{ after(grammarAccess.getDetailCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDocumentationCS
+entryRuleDocumentationCS 
+:
+{ before(grammarAccess.getDocumentationCSRule()); }
+	 ruleDocumentationCS
+{ after(grammarAccess.getDocumentationCSRule()); } 
+	 EOF 
+;
+
+// Rule DocumentationCS
+ruleDocumentationCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getGroup()); }
+(rule__DocumentationCS__Group__0)
+{ after(grammarAccess.getDocumentationCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEnumerationCS
+entryRuleEnumerationCS 
+:
+{ before(grammarAccess.getEnumerationCSRule()); }
+	 ruleEnumerationCS
+{ after(grammarAccess.getEnumerationCSRule()); } 
+	 EOF 
+;
+
+// Rule EnumerationCS
+ruleEnumerationCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getGroup()); }
+(rule__EnumerationCS__Group__0)
+{ after(grammarAccess.getEnumerationCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEnumerationLiteralCS
+entryRuleEnumerationLiteralCS 
+:
+{ before(grammarAccess.getEnumerationLiteralCSRule()); }
+	 ruleEnumerationLiteralCS
+{ after(grammarAccess.getEnumerationLiteralCSRule()); } 
+	 EOF 
+;
+
+// Rule EnumerationLiteralCS
+ruleEnumerationLiteralCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getGroup()); }
+(rule__EnumerationLiteralCS__Group__0)
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleImportCS
+entryRuleImportCS 
+:
+{ before(grammarAccess.getImportCSRule()); }
+	 ruleImportCS
+{ after(grammarAccess.getImportCSRule()); } 
+	 EOF 
+;
+
+// Rule ImportCS
+ruleImportCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getImportCSAccess().getGroup()); }
+(rule__ImportCS__Group__0)
+{ after(grammarAccess.getImportCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLibraryCS
+entryRuleLibraryCS 
+:
+{ before(grammarAccess.getLibraryCSRule()); }
+	 ruleLibraryCS
+{ after(grammarAccess.getLibraryCSRule()); } 
+	 EOF 
+;
+
+// Rule LibraryCS
+ruleLibraryCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLibraryCSAccess().getGroup()); }
+(rule__LibraryCS__Group__0)
+{ after(grammarAccess.getLibraryCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleModelElementCS
+entryRuleModelElementCS 
+:
+{ before(grammarAccess.getModelElementCSRule()); }
+	 ruleModelElementCS
+{ after(grammarAccess.getModelElementCSRule()); } 
+	 EOF 
+;
+
+// Rule ModelElementCS
+ruleModelElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getModelElementCSAccess().getAlternatives()); }
+(rule__ModelElementCS__Alternatives)
+{ after(grammarAccess.getModelElementCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleModelElementRefCS
+entryRuleModelElementRefCS 
+:
+{ before(grammarAccess.getModelElementRefCSRule()); }
+	 ruleModelElementRefCS
+{ after(grammarAccess.getModelElementRefCSRule()); } 
+	 EOF 
+;
+
+// Rule ModelElementRefCS
+ruleModelElementRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getModelElementRefCSAccess().getGroup()); }
+(rule__ModelElementRefCS__Group__0)
+{ after(grammarAccess.getModelElementRefCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOperationCS
+entryRuleOperationCS 
+:
+{ before(grammarAccess.getOperationCSRule()); }
+	 ruleOperationCS
+{ after(grammarAccess.getOperationCSRule()); } 
+	 EOF 
+;
+
+// Rule OperationCS
+ruleOperationCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOperationCSAccess().getGroup()); }
+(rule__OperationCS__Group__0)
+{ after(grammarAccess.getOperationCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePackageCS
+entryRulePackageCS 
+:
+{ before(grammarAccess.getPackageCSRule()); }
+	 rulePackageCS
+{ after(grammarAccess.getPackageCSRule()); } 
+	 EOF 
+;
+
+// Rule PackageCS
+rulePackageCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPackageCSAccess().getGroup()); }
+(rule__PackageCS__Group__0)
+{ after(grammarAccess.getPackageCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleParameterCS
+entryRuleParameterCS 
+:
+{ before(grammarAccess.getParameterCSRule()); }
+	 ruleParameterCS
+{ after(grammarAccess.getParameterCSRule()); } 
+	 EOF 
+;
+
+// Rule ParameterCS
+ruleParameterCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getParameterCSAccess().getGroup()); }
+(rule__ParameterCS__Group__0)
+{ after(grammarAccess.getParameterCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleReferenceCS
+entryRuleReferenceCS 
+:
+{ before(grammarAccess.getReferenceCSRule()); }
+	 ruleReferenceCS
+{ after(grammarAccess.getReferenceCSRule()); } 
+	 EOF 
+;
+
+// Rule ReferenceCS
+ruleReferenceCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getReferenceCSAccess().getGroup()); }
+(rule__ReferenceCS__Group__0)
+{ after(grammarAccess.getReferenceCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSpecificationCS
+entryRuleSpecificationCS 
+:
+{ before(grammarAccess.getSpecificationCSRule()); }
+	 ruleSpecificationCS
+{ after(grammarAccess.getSpecificationCSRule()); } 
+	 EOF 
+;
+
+// Rule SpecificationCS
+ruleSpecificationCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSpecificationCSAccess().getAlternatives()); }
+(rule__SpecificationCS__Alternatives)
+{ after(grammarAccess.getSpecificationCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStructuredClassCS
+entryRuleStructuredClassCS 
+:
+{ before(grammarAccess.getStructuredClassCSRule()); }
+	 ruleStructuredClassCS
+{ after(grammarAccess.getStructuredClassCSRule()); } 
+	 EOF 
+;
+
+// Rule StructuredClassCS
+ruleStructuredClassCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getGroup()); }
+(rule__StructuredClassCS__Group__0)
+{ after(grammarAccess.getStructuredClassCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStructuralFeatureCS
+entryRuleStructuralFeatureCS 
+:
+{ before(grammarAccess.getStructuralFeatureCSRule()); }
+	 ruleStructuralFeatureCS
+{ after(grammarAccess.getStructuralFeatureCSRule()); } 
+	 EOF 
+;
+
+// Rule StructuralFeatureCS
+ruleStructuralFeatureCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStructuralFeatureCSAccess().getAlternatives()); }
+(rule__StructuralFeatureCS__Alternatives)
+{ after(grammarAccess.getStructuralFeatureCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSysMLCS
+entryRuleSysMLCS 
+:
+{ before(grammarAccess.getSysMLCSRule()); }
+	 ruleSysMLCS
+{ after(grammarAccess.getSysMLCSRule()); } 
+	 EOF 
+;
+
+// Rule SysMLCS
+ruleSysMLCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSysMLCSAccess().getGroup()); }
+(rule__SysMLCS__Group__0)
+{ after(grammarAccess.getSysMLCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleTypedMultiplicityRefCS
+entryRuleTypedMultiplicityRefCS 
+:
+{ before(grammarAccess.getTypedMultiplicityRefCSRule()); }
+	 ruleTypedMultiplicityRefCS
+{ after(grammarAccess.getTypedMultiplicityRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypedMultiplicityRefCS
+ruleTypedMultiplicityRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getGroup()); }
+(rule__TypedMultiplicityRefCS__Group__0)
+{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTemplateBindingCS
+entryRuleTemplateBindingCS 
+:
+{ before(grammarAccess.getTemplateBindingCSRule()); }
+	 ruleTemplateBindingCS
+{ after(grammarAccess.getTemplateBindingCSRule()); } 
+	 EOF 
+;
+
+// Rule TemplateBindingCS
+ruleTemplateBindingCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getAlternatives()); }
+(rule__TemplateBindingCS__Alternatives)
+{ after(grammarAccess.getTemplateBindingCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTemplateSignatureCS
+entryRuleTemplateSignatureCS 
+:
+{ before(grammarAccess.getTemplateSignatureCSRule()); }
+	 ruleTemplateSignatureCS
+{ after(grammarAccess.getTemplateSignatureCSRule()); } 
+	 EOF 
+;
+
+// Rule TemplateSignatureCS
+ruleTemplateSignatureCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getAlternatives()); }
+(rule__TemplateSignatureCS__Alternatives)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypedRefCS
+entryRuleTypedRefCS 
+:
+{ before(grammarAccess.getTypedRefCSRule()); }
+	 ruleTypedRefCS
+{ after(grammarAccess.getTypedRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypedRefCS
+ruleTypedRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedRefCSAccess().getAlternatives()); }
+(rule__TypedRefCS__Alternatives)
+{ after(grammarAccess.getTypedRefCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnrestrictedName
+entryRuleUnrestrictedName 
+:
+{ before(grammarAccess.getUnrestrictedNameRule()); }
+	 ruleUnrestrictedName
+{ after(grammarAccess.getUnrestrictedNameRule()); } 
+	 EOF 
+;
+
+// Rule UnrestrictedName
+ruleUnrestrictedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnrestrictedNameAccess().getAlternatives()); }
+(rule__UnrestrictedName__Alternatives)
+{ after(grammarAccess.getUnrestrictedNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnaryOperatorName
+entryRuleEssentialOCLUnaryOperatorName 
+:
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); }
+	 ruleEssentialOCLUnaryOperatorName
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLUnaryOperatorName
+ruleEssentialOCLUnaryOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }
+(rule__EssentialOCLUnaryOperatorName__Alternatives)
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLInfixOperatorName
+entryRuleEssentialOCLInfixOperatorName 
+:
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameRule()); }
+	 ruleEssentialOCLInfixOperatorName
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLInfixOperatorName
+ruleEssentialOCLInfixOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }
+(rule__EssentialOCLInfixOperatorName__Alternatives)
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLNavigationOperatorName
+entryRuleEssentialOCLNavigationOperatorName 
+:
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); }
+	 ruleEssentialOCLNavigationOperatorName
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLNavigationOperatorName
+ruleEssentialOCLNavigationOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }
+(rule__EssentialOCLNavigationOperatorName__Alternatives)
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBinaryOperatorName
+entryRuleBinaryOperatorName 
+:
+{ before(grammarAccess.getBinaryOperatorNameRule()); }
+	 ruleBinaryOperatorName
+{ after(grammarAccess.getBinaryOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule BinaryOperatorName
+ruleBinaryOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }
+(rule__BinaryOperatorName__Alternatives)
+{ after(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleInfixOperatorName
+entryRuleInfixOperatorName 
+:
+{ before(grammarAccess.getInfixOperatorNameRule()); }
+	 ruleInfixOperatorName
+{ after(grammarAccess.getInfixOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule InfixOperatorName
+ruleInfixOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }
+	ruleEssentialOCLInfixOperatorName
+{ after(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigationOperatorName
+entryRuleNavigationOperatorName 
+:
+{ before(grammarAccess.getNavigationOperatorNameRule()); }
+	 ruleNavigationOperatorName
+{ after(grammarAccess.getNavigationOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule NavigationOperatorName
+ruleNavigationOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); }
+	ruleEssentialOCLNavigationOperatorName
+{ after(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnaryOperatorName
+entryRuleUnaryOperatorName 
+:
+{ before(grammarAccess.getUnaryOperatorNameRule()); }
+	 ruleUnaryOperatorName
+{ after(grammarAccess.getUnaryOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule UnaryOperatorName
+ruleUnaryOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }
+	ruleEssentialOCLUnaryOperatorName
+{ after(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLUnrestrictedName
+entryRuleEssentialOCLUnrestrictedName 
+:
+{ before(grammarAccess.getEssentialOCLUnrestrictedNameRule()); }
+	 ruleEssentialOCLUnrestrictedName
+{ after(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLUnrestrictedName
+ruleEssentialOCLUnrestrictedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }
+	ruleIdentifier
+{ after(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLUnreservedName
+entryRuleEssentialOCLUnreservedName 
+:
+{ before(grammarAccess.getEssentialOCLUnreservedNameRule()); }
+	 ruleEssentialOCLUnreservedName
+{ after(grammarAccess.getEssentialOCLUnreservedNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLUnreservedName
+ruleEssentialOCLUnreservedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }
+(rule__EssentialOCLUnreservedName__Alternatives)
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnreservedName
+entryRuleUnreservedName 
+:
+{ before(grammarAccess.getUnreservedNameRule()); }
+	 ruleUnreservedName
+{ after(grammarAccess.getUnreservedNameRule()); } 
+	 EOF 
+;
+
+// Rule UnreservedName
+ruleUnreservedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }
+	ruleEssentialOCLUnreservedName
+{ after(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleURIPathNameCS
+entryRuleURIPathNameCS 
+:
+{ before(grammarAccess.getURIPathNameCSRule()); }
+	 ruleURIPathNameCS
+{ after(grammarAccess.getURIPathNameCSRule()); } 
+	 EOF 
+;
+
+// Rule URIPathNameCS
+ruleURIPathNameCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getURIPathNameCSAccess().getGroup()); }
+(rule__URIPathNameCS__Group__0)
+{ after(grammarAccess.getURIPathNameCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleURIFirstPathElementCS
+entryRuleURIFirstPathElementCS 
+:
+{ before(grammarAccess.getURIFirstPathElementCSRule()); }
+	 ruleURIFirstPathElementCS
+{ after(grammarAccess.getURIFirstPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule URIFirstPathElementCS
+ruleURIFirstPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }
+(rule__URIFirstPathElementCS__Alternatives)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimitiveTypeIdentifier
+entryRulePrimitiveTypeIdentifier 
+:
+{ before(grammarAccess.getPrimitiveTypeIdentifierRule()); }
+	 rulePrimitiveTypeIdentifier
+{ after(grammarAccess.getPrimitiveTypeIdentifierRule()); } 
+	 EOF 
+;
+
+// Rule PrimitiveTypeIdentifier
+rulePrimitiveTypeIdentifier
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }
+(rule__PrimitiveTypeIdentifier__Alternatives)
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimitiveTypeCS
+entryRulePrimitiveTypeCS 
+:
+{ before(grammarAccess.getPrimitiveTypeCSRule()); }
+	 rulePrimitiveTypeCS
+{ after(grammarAccess.getPrimitiveTypeCSRule()); } 
+	 EOF 
+;
+
+// Rule PrimitiveTypeCS
+rulePrimitiveTypeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }
+(rule__PrimitiveTypeCS__NameAssignment)
+{ after(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionTypeIdentifier
+entryRuleCollectionTypeIdentifier 
+:
+{ before(grammarAccess.getCollectionTypeIdentifierRule()); }
+	 ruleCollectionTypeIdentifier
+{ after(grammarAccess.getCollectionTypeIdentifierRule()); } 
+	 EOF 
+;
+
+// Rule CollectionTypeIdentifier
+ruleCollectionTypeIdentifier
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }
+(rule__CollectionTypeIdentifier__Alternatives)
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionTypeCS
+entryRuleCollectionTypeCS 
+:
+{ before(grammarAccess.getCollectionTypeCSRule()); }
+	 ruleCollectionTypeCS
+{ after(grammarAccess.getCollectionTypeCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionTypeCS
+ruleCollectionTypeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getGroup()); }
+(rule__CollectionTypeCS__Group__0)
+{ after(grammarAccess.getCollectionTypeCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTupleTypeCS
+entryRuleTupleTypeCS 
+:
+{ before(grammarAccess.getTupleTypeCSRule()); }
+	 ruleTupleTypeCS
+{ after(grammarAccess.getTupleTypeCSRule()); } 
+	 EOF 
+;
+
+// Rule TupleTypeCS
+ruleTupleTypeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup()); }
+(rule__TupleTypeCS__Group__0)
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTuplePartCS
+entryRuleTuplePartCS 
+:
+{ before(grammarAccess.getTuplePartCSRule()); }
+	 ruleTuplePartCS
+{ after(grammarAccess.getTuplePartCSRule()); } 
+	 EOF 
+;
+
+// Rule TuplePartCS
+ruleTuplePartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getGroup()); }
+(rule__TuplePartCS__Group__0)
+{ after(grammarAccess.getTuplePartCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionLiteralExpCS
+entryRuleCollectionLiteralExpCS 
+:
+{ before(grammarAccess.getCollectionLiteralExpCSRule()); }
+	 ruleCollectionLiteralExpCS
+{ after(grammarAccess.getCollectionLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionLiteralExpCS
+ruleCollectionLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }
+(rule__CollectionLiteralExpCS__Group__0)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionLiteralPartCS
+entryRuleCollectionLiteralPartCS 
+:
+{ before(grammarAccess.getCollectionLiteralPartCSRule()); }
+	 ruleCollectionLiteralPartCS
+{ after(grammarAccess.getCollectionLiteralPartCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionLiteralPartCS
+ruleCollectionLiteralPartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }
+(rule__CollectionLiteralPartCS__Alternatives)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionPatternCS
+entryRuleCollectionPatternCS 
+:
+{ before(grammarAccess.getCollectionPatternCSRule()); }
+	 ruleCollectionPatternCS
+{ after(grammarAccess.getCollectionPatternCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionPatternCS
+ruleCollectionPatternCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup()); }
+(rule__CollectionPatternCS__Group__0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleConstructorPartCS
+entryRuleConstructorPartCS 
+:
+{ before(grammarAccess.getConstructorPartCSRule()); }
+	 ruleConstructorPartCS
+{ after(grammarAccess.getConstructorPartCSRule()); } 
+	 EOF 
+;
+
+// Rule ConstructorPartCS
+ruleConstructorPartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getGroup()); }
+(rule__ConstructorPartCS__Group__0)
+{ after(grammarAccess.getConstructorPartCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePatternExpCS
+entryRulePatternExpCS 
+:
+{ before(grammarAccess.getPatternExpCSRule()); }
+	 rulePatternExpCS
+{ after(grammarAccess.getPatternExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PatternExpCS
+rulePatternExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getGroup()); }
+(rule__PatternExpCS__Group__0)
+{ after(grammarAccess.getPatternExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLambdaLiteralExpCS
+entryRuleLambdaLiteralExpCS 
+:
+{ before(grammarAccess.getLambdaLiteralExpCSRule()); }
+	 ruleLambdaLiteralExpCS
+{ after(grammarAccess.getLambdaLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule LambdaLiteralExpCS
+ruleLambdaLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }
+(rule__LambdaLiteralExpCS__Group__0)
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimitiveLiteralExpCS
+entryRulePrimitiveLiteralExpCS 
+:
+{ before(grammarAccess.getPrimitiveLiteralExpCSRule()); }
+	 rulePrimitiveLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrimitiveLiteralExpCS
+rulePrimitiveLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }
+(rule__PrimitiveLiteralExpCS__Alternatives)
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTupleLiteralExpCS
+entryRuleTupleLiteralExpCS 
+:
+{ before(grammarAccess.getTupleLiteralExpCSRule()); }
+	 ruleTupleLiteralExpCS
+{ after(grammarAccess.getTupleLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TupleLiteralExpCS
+ruleTupleLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }
+(rule__TupleLiteralExpCS__Group__0)
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTupleLiteralPartCS
+entryRuleTupleLiteralPartCS 
+:
+{ before(grammarAccess.getTupleLiteralPartCSRule()); }
+	 ruleTupleLiteralPartCS
+{ after(grammarAccess.getTupleLiteralPartCSRule()); } 
+	 EOF 
+;
+
+// Rule TupleLiteralPartCS
+ruleTupleLiteralPartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }
+(rule__TupleLiteralPartCS__Group__0)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNumberLiteralExpCS
+entryRuleNumberLiteralExpCS 
+:
+{ before(grammarAccess.getNumberLiteralExpCSRule()); }
+	 ruleNumberLiteralExpCS
+{ after(grammarAccess.getNumberLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NumberLiteralExpCS
+ruleNumberLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }
+(rule__NumberLiteralExpCS__SymbolAssignment)
+{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStringLiteralExpCS
+entryRuleStringLiteralExpCS 
+:
+{ before(grammarAccess.getStringLiteralExpCSRule()); }
+	 ruleStringLiteralExpCS
+{ after(grammarAccess.getStringLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule StringLiteralExpCS
+ruleStringLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+(
+{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+(rule__StringLiteralExpCS__SegmentsAssignment)
+{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+)
+(
+{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+(rule__StringLiteralExpCS__SegmentsAssignment)*
+{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBooleanLiteralExpCS
+entryRuleBooleanLiteralExpCS 
+:
+{ before(grammarAccess.getBooleanLiteralExpCSRule()); }
+	 ruleBooleanLiteralExpCS
+{ after(grammarAccess.getBooleanLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule BooleanLiteralExpCS
+ruleBooleanLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }
+(rule__BooleanLiteralExpCS__Alternatives)
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnlimitedNaturalLiteralExpCS
+entryRuleUnlimitedNaturalLiteralExpCS 
+:
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }
+	 ruleUnlimitedNaturalLiteralExpCS
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule UnlimitedNaturalLiteralExpCS
+ruleUnlimitedNaturalLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }
+(rule__UnlimitedNaturalLiteralExpCS__Group__0)
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleInvalidLiteralExpCS
+entryRuleInvalidLiteralExpCS 
+:
+{ before(grammarAccess.getInvalidLiteralExpCSRule()); }
+	 ruleInvalidLiteralExpCS
+{ after(grammarAccess.getInvalidLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule InvalidLiteralExpCS
+ruleInvalidLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }
+(rule__InvalidLiteralExpCS__Group__0)
+{ after(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNullLiteralExpCS
+entryRuleNullLiteralExpCS 
+:
+{ before(grammarAccess.getNullLiteralExpCSRule()); }
+	 ruleNullLiteralExpCS
+{ after(grammarAccess.getNullLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NullLiteralExpCS
+ruleNullLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }
+(rule__NullLiteralExpCS__Group__0)
+{ after(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeLiteralCS
+entryRuleTypeLiteralCS 
+:
+{ before(grammarAccess.getTypeLiteralCSRule()); }
+	 ruleTypeLiteralCS
+{ after(grammarAccess.getTypeLiteralCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeLiteralCS
+ruleTypeLiteralCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }
+(rule__TypeLiteralCS__Alternatives)
+{ after(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeLiteralWithMultiplicityCS
+entryRuleTypeLiteralWithMultiplicityCS 
+:
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }
+	 ruleTypeLiteralWithMultiplicityCS
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeLiteralWithMultiplicityCS
+ruleTypeLiteralWithMultiplicityCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }
+(rule__TypeLiteralWithMultiplicityCS__Group__0)
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeLiteralExpCS
+entryRuleTypeLiteralExpCS 
+:
+{ before(grammarAccess.getTypeLiteralExpCSRule()); }
+	 ruleTypeLiteralExpCS
+{ after(grammarAccess.getTypeLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeLiteralExpCS
+ruleTypeLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }
+(rule__TypeLiteralExpCS__OwnedTypeAssignment)
+{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeNameExpCS
+entryRuleTypeNameExpCS 
+:
+{ before(grammarAccess.getTypeNameExpCSRule()); }
+	 ruleTypeNameExpCS
+{ after(grammarAccess.getTypeNameExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeNameExpCS
+ruleTypeNameExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getGroup()); }
+(rule__TypeNameExpCS__Group__0)
+{ after(grammarAccess.getTypeNameExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeExpCS
+entryRuleTypeExpCS 
+:
+{ before(grammarAccess.getTypeExpCSRule()); }
+	 ruleTypeExpCS
+{ after(grammarAccess.getTypeExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeExpCS
+ruleTypeExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getGroup()); }
+(rule__TypeExpCS__Group__0)
+{ after(grammarAccess.getTypeExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleExpCS
+entryRuleExpCS 
+:
+{ before(grammarAccess.getExpCSRule()); }
+	 ruleExpCS
+{ after(grammarAccess.getExpCSRule()); } 
+	 EOF 
+;
+
+// Rule ExpCS
+ruleExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getExpCSAccess().getAlternatives()); }
+(rule__ExpCS__Alternatives)
+{ after(grammarAccess.getExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrefixedLetExpCS
+entryRulePrefixedLetExpCS 
+:
+{ before(grammarAccess.getPrefixedLetExpCSRule()); }
+	 rulePrefixedLetExpCS
+{ after(grammarAccess.getPrefixedLetExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrefixedLetExpCS
+rulePrefixedLetExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }
+(rule__PrefixedLetExpCS__Alternatives)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrefixedPrimaryExpCS
+entryRulePrefixedPrimaryExpCS 
+:
+{ before(grammarAccess.getPrefixedPrimaryExpCSRule()); }
+	 rulePrefixedPrimaryExpCS
+{ after(grammarAccess.getPrefixedPrimaryExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrefixedPrimaryExpCS
+rulePrefixedPrimaryExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }
+(rule__PrefixedPrimaryExpCS__Alternatives)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimaryExpCS
+entryRulePrimaryExpCS 
+:
+{ before(grammarAccess.getPrimaryExpCSRule()); }
+	 rulePrimaryExpCS
+{ after(grammarAccess.getPrimaryExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrimaryExpCS
+rulePrimaryExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }
+(rule__PrimaryExpCS__Alternatives)
+{ after(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNameExpCS
+entryRuleNameExpCS 
+:
+{ before(grammarAccess.getNameExpCSRule()); }
+	 ruleNameExpCS
+{ after(grammarAccess.getNameExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NameExpCS
+ruleNameExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNameExpCSAccess().getGroup()); }
+(rule__NameExpCS__Group__0)
+{ after(grammarAccess.getNameExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCurlyBracketedClauseCS
+entryRuleCurlyBracketedClauseCS 
+:
+{ before(grammarAccess.getCurlyBracketedClauseCSRule()); }
+	 ruleCurlyBracketedClauseCS
+{ after(grammarAccess.getCurlyBracketedClauseCSRule()); } 
+	 EOF 
+;
+
+// Rule CurlyBracketedClauseCS
+ruleCurlyBracketedClauseCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }
+(rule__CurlyBracketedClauseCS__Group__0)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRoundBracketedClauseCS
+entryRuleRoundBracketedClauseCS 
+:
+{ before(grammarAccess.getRoundBracketedClauseCSRule()); }
+	 ruleRoundBracketedClauseCS
+{ after(grammarAccess.getRoundBracketedClauseCSRule()); } 
+	 EOF 
+;
+
+// Rule RoundBracketedClauseCS
+ruleRoundBracketedClauseCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }
+(rule__RoundBracketedClauseCS__Group__0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSquareBracketedClauseCS
+entryRuleSquareBracketedClauseCS 
+:
+{ before(grammarAccess.getSquareBracketedClauseCSRule()); }
+	 ruleSquareBracketedClauseCS
+{ after(grammarAccess.getSquareBracketedClauseCSRule()); } 
+	 EOF 
+;
+
+// Rule SquareBracketedClauseCS
+ruleSquareBracketedClauseCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }
+(rule__SquareBracketedClauseCS__Group__0)
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingArgCS
+entryRuleNavigatingArgCS 
+:
+{ before(grammarAccess.getNavigatingArgCSRule()); }
+	 ruleNavigatingArgCS
+{ after(grammarAccess.getNavigatingArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingArgCS
+ruleNavigatingArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }
+(rule__NavigatingArgCS__Alternatives)
+{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingBarArgCS
+entryRuleNavigatingBarArgCS 
+:
+{ before(grammarAccess.getNavigatingBarArgCSRule()); }
+	 ruleNavigatingBarArgCS
+{ after(grammarAccess.getNavigatingBarArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingBarArgCS
+ruleNavigatingBarArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }
+(rule__NavigatingBarArgCS__Group__0)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingCommaArgCS
+entryRuleNavigatingCommaArgCS 
+:
+{ before(grammarAccess.getNavigatingCommaArgCSRule()); }
+	 ruleNavigatingCommaArgCS
+{ after(grammarAccess.getNavigatingCommaArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingCommaArgCS
+ruleNavigatingCommaArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }
+(rule__NavigatingCommaArgCS__Group__0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingSemiArgCS
+entryRuleNavigatingSemiArgCS 
+:
+{ before(grammarAccess.getNavigatingSemiArgCSRule()); }
+	 ruleNavigatingSemiArgCS
+{ after(grammarAccess.getNavigatingSemiArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingSemiArgCS
+ruleNavigatingSemiArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }
+(rule__NavigatingSemiArgCS__Group__0)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingArgExpCS
+entryRuleNavigatingArgExpCS 
+:
+{ before(grammarAccess.getNavigatingArgExpCSRule()); }
+	 ruleNavigatingArgExpCS
+{ after(grammarAccess.getNavigatingArgExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingArgExpCS
+ruleNavigatingArgExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); }
+	ruleExpCS
+{ after(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIfExpCS
+entryRuleIfExpCS 
+:
+{ before(grammarAccess.getIfExpCSRule()); }
+	 ruleIfExpCS
+{ after(grammarAccess.getIfExpCSRule()); } 
+	 EOF 
+;
+
+// Rule IfExpCS
+ruleIfExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIfExpCSAccess().getGroup()); }
+(rule__IfExpCS__Group__0)
+{ after(grammarAccess.getIfExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleElseIfThenExpCS
+entryRuleElseIfThenExpCS 
+:
+{ before(grammarAccess.getElseIfThenExpCSRule()); }
+	 ruleElseIfThenExpCS
+{ after(grammarAccess.getElseIfThenExpCSRule()); } 
+	 EOF 
+;
+
+// Rule ElseIfThenExpCS
+ruleElseIfThenExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }
+(rule__ElseIfThenExpCS__Group__0)
+{ after(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLetExpCS
+entryRuleLetExpCS 
+:
+{ before(grammarAccess.getLetExpCSRule()); }
+	 ruleLetExpCS
+{ after(grammarAccess.getLetExpCSRule()); } 
+	 EOF 
+;
+
+// Rule LetExpCS
+ruleLetExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLetExpCSAccess().getGroup()); }
+(rule__LetExpCS__Group__0)
+{ after(grammarAccess.getLetExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLetVariableCS
+entryRuleLetVariableCS 
+:
+{ before(grammarAccess.getLetVariableCSRule()); }
+	 ruleLetVariableCS
+{ after(grammarAccess.getLetVariableCSRule()); } 
+	 EOF 
+;
+
+// Rule LetVariableCS
+ruleLetVariableCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getGroup()); }
+(rule__LetVariableCS__Group__0)
+{ after(grammarAccess.getLetVariableCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNestedExpCS
+entryRuleNestedExpCS 
+:
+{ before(grammarAccess.getNestedExpCSRule()); }
+	 ruleNestedExpCS
+{ after(grammarAccess.getNestedExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NestedExpCS
+ruleNestedExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getGroup()); }
+(rule__NestedExpCS__Group__0)
+{ after(grammarAccess.getNestedExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSelfExpCS
+entryRuleSelfExpCS 
+:
+{ before(grammarAccess.getSelfExpCSRule()); }
+	 ruleSelfExpCS
+{ after(grammarAccess.getSelfExpCSRule()); } 
+	 EOF 
+;
+
+// Rule SelfExpCS
+ruleSelfExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSelfExpCSAccess().getGroup()); }
+(rule__SelfExpCS__Group__0)
+{ after(grammarAccess.getSelfExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMultiplicityBoundsCS
+entryRuleMultiplicityBoundsCS 
+:
+{ before(grammarAccess.getMultiplicityBoundsCSRule()); }
+	 ruleMultiplicityBoundsCS
+{ after(grammarAccess.getMultiplicityBoundsCSRule()); } 
+	 EOF 
+;
+
+// Rule MultiplicityBoundsCS
+ruleMultiplicityBoundsCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }
+(rule__MultiplicityBoundsCS__Group__0)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMultiplicityCS
+entryRuleMultiplicityCS 
+:
+{ before(grammarAccess.getMultiplicityCSRule()); }
+	 ruleMultiplicityCS
+{ after(grammarAccess.getMultiplicityCSRule()); } 
+	 EOF 
+;
+
+// Rule MultiplicityCS
+ruleMultiplicityCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getGroup()); }
+(rule__MultiplicityCS__Group__0)
+{ after(grammarAccess.getMultiplicityCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMultiplicityStringCS
+entryRuleMultiplicityStringCS 
+:
+{ before(grammarAccess.getMultiplicityStringCSRule()); }
+	 ruleMultiplicityStringCS
+{ after(grammarAccess.getMultiplicityStringCSRule()); } 
+	 EOF 
+;
+
+// Rule MultiplicityStringCS
+ruleMultiplicityStringCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }
+(rule__MultiplicityStringCS__StringBoundsAssignment)
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePathNameCS
+entryRulePathNameCS 
+:
+{ before(grammarAccess.getPathNameCSRule()); }
+	 rulePathNameCS
+{ after(grammarAccess.getPathNameCSRule()); } 
+	 EOF 
+;
+
+// Rule PathNameCS
+rulePathNameCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPathNameCSAccess().getGroup()); }
+(rule__PathNameCS__Group__0)
+{ after(grammarAccess.getPathNameCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFirstPathElementCS
+entryRuleFirstPathElementCS 
+:
+{ before(grammarAccess.getFirstPathElementCSRule()); }
+	 ruleFirstPathElementCS
+{ after(grammarAccess.getFirstPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule FirstPathElementCS
+ruleFirstPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }
+(rule__FirstPathElementCS__ReferredElementAssignment)
+{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNextPathElementCS
+entryRuleNextPathElementCS 
+:
+{ before(grammarAccess.getNextPathElementCSRule()); }
+	 ruleNextPathElementCS
+{ after(grammarAccess.getNextPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule NextPathElementCS
+ruleNextPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }
+(rule__NextPathElementCS__ReferredElementAssignment)
+{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTemplateParameterSubstitutionCS
+entryRuleTemplateParameterSubstitutionCS 
+:
+{ before(grammarAccess.getTemplateParameterSubstitutionCSRule()); }
+	 ruleTemplateParameterSubstitutionCS
+{ after(grammarAccess.getTemplateParameterSubstitutionCSRule()); } 
+	 EOF 
+;
+
+// Rule TemplateParameterSubstitutionCS
+ruleTemplateParameterSubstitutionCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }
+(rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment)
+{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeParameterCS
+entryRuleTypeParameterCS 
+:
+{ before(grammarAccess.getTypeParameterCSRule()); }
+	 ruleTypeParameterCS
+{ after(grammarAccess.getTypeParameterCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeParameterCS
+ruleTypeParameterCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup()); }
+(rule__TypeParameterCS__Group__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeRefCS
+entryRuleTypeRefCS 
+:
+{ before(grammarAccess.getTypeRefCSRule()); }
+	 ruleTypeRefCS
+{ after(grammarAccess.getTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeRefCS
+ruleTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeRefCSAccess().getAlternatives()); }
+(rule__TypeRefCS__Alternatives)
+{ after(grammarAccess.getTypeRefCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypedTypeRefCS
+entryRuleTypedTypeRefCS 
+:
+{ before(grammarAccess.getTypedTypeRefCSRule()); }
+	 ruleTypedTypeRefCS
+{ after(grammarAccess.getTypedTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypedTypeRefCS
+ruleTypedTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }
+(rule__TypedTypeRefCS__Group__0)
+{ after(grammarAccess.getTypedTypeRefCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleWildcardTypeRefCS
+entryRuleWildcardTypeRefCS 
+:
+{ before(grammarAccess.getWildcardTypeRefCSRule()); }
+	 ruleWildcardTypeRefCS
+{ after(grammarAccess.getWildcardTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule WildcardTypeRefCS
+ruleWildcardTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }
+(rule__WildcardTypeRefCS__Group__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleID
+entryRuleID 
+:
+{ before(grammarAccess.getIDRule()); }
+	 ruleID
+{ after(grammarAccess.getIDRule()); } 
+	 EOF 
+;
+
+// Rule ID
+ruleID
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIDAccess().getAlternatives()); }
+(rule__ID__Alternatives)
+{ after(grammarAccess.getIDAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIdentifier
+entryRuleIdentifier 
+:
+{ before(grammarAccess.getIdentifierRule()); }
+	 ruleIdentifier
+{ after(grammarAccess.getIdentifierRule()); } 
+	 EOF 
+;
+
+// Rule Identifier
+ruleIdentifier
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }
+	ruleID
+{ after(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLOWER
+entryRuleLOWER 
+:
+{ before(grammarAccess.getLOWERRule()); }
+	 ruleLOWER
+{ after(grammarAccess.getLOWERRule()); } 
+	 EOF 
+;
+
+// Rule LOWER
+ruleLOWER
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }
+	RULE_INT
+{ after(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNUMBER_LITERAL
+entryRuleNUMBER_LITERAL 
+:
+{ before(grammarAccess.getNUMBER_LITERALRule()); }
+	 ruleNUMBER_LITERAL
+{ after(grammarAccess.getNUMBER_LITERALRule()); } 
+	 EOF 
+;
+
+// Rule NUMBER_LITERAL
+ruleNUMBER_LITERAL
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }
+	RULE_INT
+{ after(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStringLiteral
+entryRuleStringLiteral 
+:
+{ before(grammarAccess.getStringLiteralRule()); }
+	 ruleStringLiteral
+{ after(grammarAccess.getStringLiteralRule()); } 
+	 EOF 
+;
+
+// Rule StringLiteral
+ruleStringLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+	RULE_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUPPER
+entryRuleUPPER 
+:
+{ before(grammarAccess.getUPPERRule()); }
+	 ruleUPPER
+{ after(grammarAccess.getUPPERRule()); } 
+	 EOF 
+;
+
+// Rule UPPER
+ruleUPPER
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUPPERAccess().getAlternatives()); }
+(rule__UPPER__Alternatives)
+{ after(grammarAccess.getUPPERAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleURI
+entryRuleURI 
+:
+{ before(grammarAccess.getURIRule()); }
+	 ruleURI
+{ after(grammarAccess.getURIRule()); } 
+	 EOF 
+;
+
+// Rule URI
+ruleURI
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+	RULE_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__EnumerationLiteralName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall_0()); }
+	ruleEssentialOCLUnrestrictedName
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getAbstractKeyword_1()); }
+
+	'abstract' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getAbstractKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getAttributeKeyword_2()); }
+
+	'attribute' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getAttributeKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getBodyKeyword_3()); }
+
+	'body' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getBodyKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getCallableKeyword_4()); }
+
+	'callable' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getCallableKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getClassKeyword_5()); }
+
+	'class' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getClassKeyword_5()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getComposesKeyword_6()); }
+
+	'composes' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getComposesKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getDatatypeKeyword_7()); }
+
+	'datatype' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getDatatypeKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getDefinitionKeyword_8()); }
+
+	'definition' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getDefinitionKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getDerivationKeyword_9()); }
+
+	'derivation' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getDerivationKeyword_9()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getDerivedKeyword_10()); }
+
+	'derived' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getDerivedKeyword_10()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getEnumKeyword_11()); }
+
+	'enum' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getEnumKeyword_11()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getExtendsKeyword_12()); }
+
+	'extends' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getExtendsKeyword_12()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getIdKeyword_13()); }
+
+	'id' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getIdKeyword_13()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getImportKeyword_14()); }
+
+	'import' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getImportKeyword_14()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getInitialKeyword_15()); }
+
+	'initial' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getInitialKeyword_15()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getInterfaceKeyword_16()); }
+
+	'interface' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getInterfaceKeyword_16()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getKeyKeyword_17()); }
+
+	'key' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getKeyKeyword_17()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getLibraryKeyword_18()); }
+
+	'library' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getLibraryKeyword_18()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getModuleKeyword_19()); }
+
+	'module' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getModuleKeyword_19()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getOperationKeyword_20()); }
+
+	'operation' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getOperationKeyword_20()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getOrderedKeyword_21()); }
+
+	'ordered' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getOrderedKeyword_21()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getPackageKeyword_22()); }
+
+	'package' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getPackageKeyword_22()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getPostconditionKeyword_23()); }
+
+	'postcondition' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getPostconditionKeyword_23()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getPreconditionKeyword_24()); }
+
+	'precondition' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getPreconditionKeyword_24()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getPrimitiveKeyword_25()); }
+
+	'primitive' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getPrimitiveKeyword_25()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getPropertyKeyword_26()); }
+
+	'property' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getPropertyKeyword_26()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getReadonlyKeyword_27()); }
+
+	'readonly' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getReadonlyKeyword_27()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getReferenceKeyword_28()); }
+
+	'reference' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getReferenceKeyword_28()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getResolveKeyword_29()); }
+
+	'resolve' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getResolveKeyword_29()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getStaticKeyword_30()); }
+
+	'static' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getStaticKeyword_30()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getSuperKeyword_31()); }
+
+	'super' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getSuperKeyword_31()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getThrowsKeyword_32()); }
+
+	'throws' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getThrowsKeyword_32()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getTransientKeyword_33()); }
+
+	'transient' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getTransientKeyword_33()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getUniqueKeyword_34()); }
+
+	'unique' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getUniqueKeyword_34()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getUnsettableKeyword_35()); }
+
+	'unsettable' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getUnsettableKeyword_35()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralNameAccess().getVolatileKeyword_36()); }
+
+	'volatile' 
+
+{ after(grammarAccess.getEnumerationLiteralNameAccess().getVolatileKeyword_36()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__Alternatives_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getGroup_3_0()); }
+(rule__InvariantConstraintCS__Group_3_0__0)
+{ after(grammarAccess.getInvariantConstraintCSAccess().getGroup_3_0()); }
+)
+
+    |(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getSemicolonKeyword_3_1()); }
+
+	';' 
+
+{ after(grammarAccess.getInvariantConstraintCSAccess().getSemicolonKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__NameAlternatives_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getNameUnrestrictedNameParserRuleCall_2_0_0()); }
+	ruleUnrestrictedName
+{ after(grammarAccess.getAnnotationCSAccess().getNameUnrestrictedNameParserRuleCall_2_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAnnotationCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); }
+	RULE_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getAnnotationCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Alternatives_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getGroup_4_0()); }
+(rule__AnnotationCS__Group_4_0__0)
+{ after(grammarAccess.getAnnotationCSAccess().getGroup_4_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAnnotationCSAccess().getSemicolonKeyword_4_1()); }
+
+	';' 
+
+{ after(grammarAccess.getAnnotationCSAccess().getSemicolonKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Alternatives_4_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAssignment_4_0_1_0()); }
+(rule__AnnotationCS__OwnedAnnotationsAssignment_4_0_1_0)
+{ after(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAssignment_4_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedContentsAssignment_4_0_1_1()); }
+(rule__AnnotationCS__OwnedContentsAssignment_4_0_1_1)
+{ after(grammarAccess.getAnnotationCSAccess().getOwnedContentsAssignment_4_0_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedReferencesAssignment_4_0_1_2()); }
+(rule__AnnotationCS__OwnedReferencesAssignment_4_0_1_2)
+{ after(grammarAccess.getAnnotationCSAccess().getOwnedReferencesAssignment_4_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationElementCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationElementCSAccess().getAnnotationCSParserRuleCall_0()); }
+	ruleAnnotationCS
+{ after(grammarAccess.getAnnotationElementCSAccess().getAnnotationCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAnnotationElementCSAccess().getDocumentationCSParserRuleCall_1()); }
+	ruleDocumentationCS
+{ after(grammarAccess.getAnnotationElementCSAccess().getDocumentationCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getAnnotationElementCSAccess().getSysMLCSParserRuleCall_2()); }
+	ruleSysMLCS
+{ after(grammarAccess.getAnnotationElementCSAccess().getSysMLCSParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getGroup_0_0()); }
+(rule__AttributeCS__Group_0_0__0)
+{ after(grammarAccess.getAttributeCSAccess().getGroup_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getGroup_0_1()); }
+(rule__AttributeCS__Group_0_1__0)
+{ after(grammarAccess.getAttributeCSAccess().getGroup_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Alternatives_5_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_0()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_0)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_1()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_1)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_2()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_2)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_2()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_3()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_3)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_3()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_4()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_4)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_4()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_5()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_5)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_5()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_6()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_6)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_6()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_7()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_7)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_7()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_8()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_8)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_8()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_9()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_9)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_9()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_10()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_10)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_10()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_11()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_11)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_11()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_12()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_12)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_12()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_13()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_13)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_13()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_14()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_14)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_14()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_15()); }
+(rule__AttributeCS__QualifiersAssignment_5_1_0_15)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_5_1_0_15()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Alternatives_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getGroup_6_0()); }
+(rule__AttributeCS__Group_6_0__0)
+{ after(grammarAccess.getAttributeCSAccess().getGroup_6_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_1()); }
+
+	';' 
+
+{ after(grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Alternatives_6_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getOwnedAnnotationsAssignment_6_0_1_0()); }
+(rule__AttributeCS__OwnedAnnotationsAssignment_6_0_1_0)
+{ after(grammarAccess.getAttributeCSAccess().getOwnedAnnotationsAssignment_6_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getGroup_6_0_1_1()); }
+(rule__AttributeCS__Group_6_0_1_1__0)
+{ after(grammarAccess.getAttributeCSAccess().getGroup_6_0_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeCSAccess().getGroup_6_0_1_2()); }
+(rule__AttributeCS__Group_6_0_1_2__0)
+{ after(grammarAccess.getAttributeCSAccess().getGroup_6_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ClassCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassCSAccess().getStructuredClassCSParserRuleCall_0()); }
+	ruleStructuredClassCS
+{ after(grammarAccess.getClassCSAccess().getStructuredClassCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getClassCSAccess().getDataTypeCSParserRuleCall_1()); }
+	ruleDataTypeCS
+{ after(grammarAccess.getClassCSAccess().getDataTypeCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getClassCSAccess().getEnumerationCSParserRuleCall_2()); }
+	ruleEnumerationCS
+{ after(grammarAccess.getClassCSAccess().getEnumerationCSParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Alternatives_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getIsSerializableAssignment_5_1_0()); }
+(rule__DataTypeCS__IsSerializableAssignment_5_1_0)
+{ after(grammarAccess.getDataTypeCSAccess().getIsSerializableAssignment_5_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeCSAccess().getSerializableKeyword_5_1_1()); }
+
+	'!serializable' 
+
+{ after(grammarAccess.getDataTypeCSAccess().getSerializableKeyword_5_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Alternatives_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getGroup_6_0()); }
+(rule__DataTypeCS__Group_6_0__0)
+{ after(grammarAccess.getDataTypeCSAccess().getGroup_6_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeCSAccess().getSemicolonKeyword_6_1()); }
+
+	';' 
+
+{ after(grammarAccess.getDataTypeCSAccess().getSemicolonKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Alternatives_6_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getOwnedAnnotationsAssignment_6_0_1_0()); }
+(rule__DataTypeCS__OwnedAnnotationsAssignment_6_0_1_0)
+{ after(grammarAccess.getDataTypeCSAccess().getOwnedAnnotationsAssignment_6_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeCSAccess().getOwnedConstraintsAssignment_6_0_1_1()); }
+(rule__DataTypeCS__OwnedConstraintsAssignment_6_0_1_1)
+{ after(grammarAccess.getDataTypeCSAccess().getOwnedConstraintsAssignment_6_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DetailCS__NameAlternatives_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDetailCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); }
+	ruleUnrestrictedName
+{ after(grammarAccess.getDetailCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDetailCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_0_0_1()); }
+	RULE_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getDetailCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_0_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DetailCS__ValuesAlternatives_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDetailCSAccess().getValuesSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_0()); }
+	RULE_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getDetailCSAccess().getValuesSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDetailCSAccess().getValuesML_SINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); }
+	RULE_ML_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getDetailCSAccess().getValuesML_SINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Alternatives_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getIsSerializableAssignment_4_1_0()); }
+(rule__EnumerationCS__IsSerializableAssignment_4_1_0)
+{ after(grammarAccess.getEnumerationCSAccess().getIsSerializableAssignment_4_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationCSAccess().getSerializableKeyword_4_1_1()); }
+
+	'!serializable' 
+
+{ after(grammarAccess.getEnumerationCSAccess().getSerializableKeyword_4_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Alternatives_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getGroup_5_0()); }
+(rule__EnumerationCS__Group_5_0__0)
+{ after(grammarAccess.getEnumerationCSAccess().getGroup_5_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationCSAccess().getSemicolonKeyword_5_1()); }
+
+	';' 
+
+{ after(grammarAccess.getEnumerationCSAccess().getSemicolonKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Alternatives_5_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getOwnedAnnotationsAssignment_5_0_1_0()); }
+(rule__EnumerationCS__OwnedAnnotationsAssignment_5_0_1_0)
+{ after(grammarAccess.getEnumerationCSAccess().getOwnedAnnotationsAssignment_5_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationCSAccess().getOwnedLiteralsAssignment_5_0_1_1()); }
+(rule__EnumerationCS__OwnedLiteralsAssignment_5_0_1_1)
+{ after(grammarAccess.getEnumerationCSAccess().getOwnedLiteralsAssignment_5_0_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationCSAccess().getOwnedConstraintsAssignment_5_0_1_2()); }
+(rule__EnumerationCS__OwnedConstraintsAssignment_5_0_1_2)
+{ after(grammarAccess.getEnumerationCSAccess().getOwnedConstraintsAssignment_5_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getGroup_0_0()); }
+(rule__EnumerationLiteralCS__Group_0_0__0)
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getGroup_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getNameAssignment_0_1()); }
+(rule__EnumerationLiteralCS__NameAssignment_0_1)
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getNameAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getGroup_2_0()); }
+(rule__EnumerationLiteralCS__Group_2_0__0)
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getSemicolonKeyword_2_1()); }
+
+	';' 
+
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getSemicolonKeyword_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ModelElementCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getModelElementCSAccess().getClassCSParserRuleCall_0()); }
+	ruleClassCS
+{ after(grammarAccess.getModelElementCSAccess().getClassCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getModelElementCSAccess().getEnumerationLiteralCSParserRuleCall_1()); }
+	ruleEnumerationLiteralCS
+{ after(grammarAccess.getModelElementCSAccess().getEnumerationLiteralCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getModelElementCSAccess().getOperationCSParserRuleCall_2()); }
+	ruleOperationCS
+{ after(grammarAccess.getModelElementCSAccess().getOperationCSParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getModelElementCSAccess().getPackageCSParserRuleCall_3()); }
+	rulePackageCS
+{ after(grammarAccess.getModelElementCSAccess().getPackageCSParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getModelElementCSAccess().getStructuralFeatureCSParserRuleCall_4()); }
+	ruleStructuralFeatureCS
+{ after(grammarAccess.getModelElementCSAccess().getStructuralFeatureCSParserRuleCall_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getGroup_0_0()); }
+(rule__OperationCS__Group_0_0__0)
+{ after(grammarAccess.getOperationCSAccess().getGroup_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationCSAccess().getGroup_0_1()); }
+(rule__OperationCS__Group_0_1__0)
+{ after(grammarAccess.getOperationCSAccess().getGroup_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Alternatives_9_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_0()); }
+(rule__OperationCS__QualifiersAssignment_9_1_0_0)
+{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_1()); }
+(rule__OperationCS__QualifiersAssignment_9_1_0_1)
+{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_2()); }
+(rule__OperationCS__QualifiersAssignment_9_1_0_2)
+{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_2()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_3()); }
+(rule__OperationCS__QualifiersAssignment_9_1_0_3)
+{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_3()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_4()); }
+(rule__OperationCS__QualifiersAssignment_9_1_0_4)
+{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_4()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_5()); }
+(rule__OperationCS__QualifiersAssignment_9_1_0_5)
+{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_9_1_0_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Alternatives_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getGroup_10_0()); }
+(rule__OperationCS__Group_10_0__0)
+{ after(grammarAccess.getOperationCSAccess().getGroup_10_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_1()); }
+
+	';' 
+
+{ after(grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Alternatives_10_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedAnnotationsAssignment_10_0_1_0()); }
+(rule__OperationCS__OwnedAnnotationsAssignment_10_0_1_0)
+{ after(grammarAccess.getOperationCSAccess().getOwnedAnnotationsAssignment_10_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationCSAccess().getOwnedPreconditionsAssignment_10_0_1_1()); }
+(rule__OperationCS__OwnedPreconditionsAssignment_10_0_1_1)
+{ after(grammarAccess.getOperationCSAccess().getOwnedPreconditionsAssignment_10_0_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationCSAccess().getGroup_10_0_1_2()); }
+(rule__OperationCS__Group_10_0_1_2__0)
+{ after(grammarAccess.getOperationCSAccess().getGroup_10_0_1_2()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationCSAccess().getOwnedPostconditionsAssignment_10_0_1_3()); }
+(rule__OperationCS__OwnedPostconditionsAssignment_10_0_1_3)
+{ after(grammarAccess.getOperationCSAccess().getOwnedPostconditionsAssignment_10_0_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Alternatives_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getGroup_4_0()); }
+(rule__PackageCS__Group_4_0__0)
+{ after(grammarAccess.getPackageCSAccess().getGroup_4_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPackageCSAccess().getSemicolonKeyword_4_1()); }
+
+	';' 
+
+{ after(grammarAccess.getPackageCSAccess().getSemicolonKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Alternatives_4_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAssignment_4_0_1_0()); }
+(rule__PackageCS__OwnedAnnotationsAssignment_4_0_1_0)
+{ after(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAssignment_4_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPackageCSAccess().getOwnedPackagesAssignment_4_0_1_1()); }
+(rule__PackageCS__OwnedPackagesAssignment_4_0_1_1)
+{ after(grammarAccess.getPackageCSAccess().getOwnedPackagesAssignment_4_0_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPackageCSAccess().getOwnedClassesAssignment_4_0_1_2()); }
+(rule__PackageCS__OwnedClassesAssignment_4_0_1_2)
+{ after(grammarAccess.getPackageCSAccess().getOwnedClassesAssignment_4_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Alternatives_2_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_0()); }
+(rule__ParameterCS__QualifiersAssignment_2_1_0_0)
+{ after(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_1()); }
+(rule__ParameterCS__QualifiersAssignment_2_1_0_1)
+{ after(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_2()); }
+(rule__ParameterCS__QualifiersAssignment_2_1_0_2)
+{ after(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_2()); }
+)
+
+    |(
+{ before(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_3()); }
+(rule__ParameterCS__QualifiersAssignment_2_1_0_3)
+{ after(grammarAccess.getParameterCSAccess().getQualifiersAssignment_2_1_0_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getGroup_0_0()); }
+(rule__ReferenceCS__Group_0_0__0)
+{ after(grammarAccess.getReferenceCSAccess().getGroup_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getGroup_0_1()); }
+(rule__ReferenceCS__Group_0_1__0)
+{ after(grammarAccess.getReferenceCSAccess().getGroup_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Alternatives_6_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_0()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_0)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_1()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_1)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_2()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_2)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_2()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_3()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_3)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_3()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_4()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_4)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_4()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_5()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_5)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_5()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_6()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_6)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_6()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_7()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_7)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_7()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_8()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_8)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_8()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_9()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_9)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_9()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_10()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_10)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_10()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_11()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_11)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_11()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_12()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_12)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_12()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_13()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_13)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_13()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_14()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_14)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_14()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_15()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_15)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_15()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_16()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_16)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_16()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_17()); }
+(rule__ReferenceCS__QualifiersAssignment_6_1_0_17)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_6_1_0_17()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Alternatives_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getGroup_7_0()); }
+(rule__ReferenceCS__Group_7_0__0)
+{ after(grammarAccess.getReferenceCSAccess().getGroup_7_0()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_1()); }
+
+	';' 
+
+{ after(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Alternatives_7_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getOwnedAnnotationsAssignment_7_0_1_0()); }
+(rule__ReferenceCS__OwnedAnnotationsAssignment_7_0_1_0)
+{ after(grammarAccess.getReferenceCSAccess().getOwnedAnnotationsAssignment_7_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_1()); }
+(rule__ReferenceCS__Group_7_0_1_1__0)
+{ after(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_2()); }
+(rule__ReferenceCS__Group_7_0_1_2__0)
+{ after(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_2()); }
+)
+
+    |(
+{ before(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_3()); }
+(rule__ReferenceCS__Group_7_0_1_3__0)
+{ after(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpecificationCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpecificationCSAccess().getOwnedExpressionAssignment_0()); }
+(rule__SpecificationCS__OwnedExpressionAssignment_0)
+{ after(grammarAccess.getSpecificationCSAccess().getOwnedExpressionAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getSpecificationCSAccess().getExprStringAssignment_1()); }
+(rule__SpecificationCS__ExprStringAssignment_1)
+{ after(grammarAccess.getSpecificationCSAccess().getExprStringAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Alternatives_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getGroup_7_0()); }
+(rule__StructuredClassCS__Group_7_0__0)
+{ after(grammarAccess.getStructuredClassCSAccess().getGroup_7_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStructuredClassCSAccess().getSemicolonKeyword_7_1()); }
+
+	';' 
+
+{ after(grammarAccess.getStructuredClassCSAccess().getSemicolonKeyword_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Alternatives_7_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getOwnedAnnotationsAssignment_7_0_1_0()); }
+(rule__StructuredClassCS__OwnedAnnotationsAssignment_7_0_1_0)
+{ after(grammarAccess.getStructuredClassCSAccess().getOwnedAnnotationsAssignment_7_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStructuredClassCSAccess().getOwnedOperationsAssignment_7_0_1_1()); }
+(rule__StructuredClassCS__OwnedOperationsAssignment_7_0_1_1)
+{ after(grammarAccess.getStructuredClassCSAccess().getOwnedOperationsAssignment_7_0_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getStructuredClassCSAccess().getOwnedPropertiesAssignment_7_0_1_2()); }
+(rule__StructuredClassCS__OwnedPropertiesAssignment_7_0_1_2)
+{ after(grammarAccess.getStructuredClassCSAccess().getOwnedPropertiesAssignment_7_0_1_2()); }
+)
+
+    |(
+{ before(grammarAccess.getStructuredClassCSAccess().getOwnedConstraintsAssignment_7_0_1_3()); }
+(rule__StructuredClassCS__OwnedConstraintsAssignment_7_0_1_3)
+{ after(grammarAccess.getStructuredClassCSAccess().getOwnedConstraintsAssignment_7_0_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuralFeatureCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuralFeatureCSAccess().getAttributeCSParserRuleCall_0()); }
+	ruleAttributeCS
+{ after(grammarAccess.getStructuralFeatureCSAccess().getAttributeCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getStructuralFeatureCSAccess().getReferenceCSParserRuleCall_1()); }
+	ruleReferenceCS
+{ after(grammarAccess.getStructuralFeatureCSAccess().getReferenceCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SysMLCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSysMLCSAccess().getGroup_2_0()); }
+(rule__SysMLCS__Group_2_0__0)
+{ after(grammarAccess.getSysMLCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getSysMLCSAccess().getGroup_2_1()); }
+(rule__SysMLCS__Group_2_1__0)
+{ after(grammarAccess.getSysMLCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_0()); }
+(rule__TemplateBindingCS__Group_0__0)
+{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_1()); }
+(rule__TemplateBindingCS__Group_1__0)
+{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_0()); }
+(rule__TemplateSignatureCS__Group_0__0)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_1()); }
+(rule__TemplateSignatureCS__Group_1__0)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedRefCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedRefCSAccess().getTypeLiteralCSParserRuleCall_0()); }
+	ruleTypeLiteralCS
+{ after(grammarAccess.getTypedRefCSAccess().getTypeLiteralCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); }
+	ruleTypedTypeRefCS
+{ after(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UnrestrictedName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnrestrictedNameAccess().getEnumerationLiteralNameParserRuleCall_0()); }
+	ruleEnumerationLiteralName
+{ after(grammarAccess.getUnrestrictedNameAccess().getEnumerationLiteralNameParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUnrestrictedNameAccess().getAnnotationKeyword_1()); }
+
+	'annotation' 
+
+{ after(grammarAccess.getUnrestrictedNameAccess().getAnnotationKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getUnrestrictedNameAccess().getDocumentationKeyword_2()); }
+
+	'documentation' 
+
+{ after(grammarAccess.getUnrestrictedNameAccess().getDocumentationKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getUnrestrictedNameAccess().getInvariantKeyword_3()); }
+
+	'invariant' 
+
+{ after(grammarAccess.getUnrestrictedNameAccess().getInvariantKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getUnrestrictedNameAccess().getLiteralKeyword_4()); }
+
+	'literal' 
+
+{ after(grammarAccess.getUnrestrictedNameAccess().getLiteralKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getUnrestrictedNameAccess().getSerializableKeyword_5()); }
+
+	'serializable' 
+
+{ after(grammarAccess.getUnrestrictedNameAccess().getSerializableKeyword_5()); }
+)
+
+    |(
+{ before(grammarAccess.getUnrestrictedNameAccess().getSysmlKeyword_6()); }
+
+	'sysml' 
+
+{ after(grammarAccess.getUnrestrictedNameAccess().getSysmlKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EssentialOCLUnaryOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }
+
+	'-' 
+
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }
+
+	'not' 
+
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EssentialOCLInfixOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }
+
+	'*' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }
+
+	'/' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }
+
+	'+' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }
+
+	'-' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }
+
+	'>' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }
+
+	'<' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }
+
+	'>=' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }
+
+	'<=' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }
+
+	'=' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }
+
+	'<>' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }
+
+	'and' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }
+
+	'or' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }
+
+	'xor' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }
+
+	'implies' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EssentialOCLNavigationOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }
+
+	'.' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }
+
+	'->' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }
+
+	'?.' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }
+
+	'?->' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BinaryOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }
+	ruleInfixOperatorName
+{ after(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }
+	ruleNavigationOperatorName
+{ after(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EssentialOCLUnreservedName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }
+	ruleUnrestrictedName
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }
+	ruleCollectionTypeIdentifier
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }
+	rulePrimitiveTypeIdentifier
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }
+
+	'Tuple' 
+
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }
+(rule__URIFirstPathElementCS__ReferredElementAssignment_0)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }
+(rule__URIFirstPathElementCS__Group_1__0)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimitiveTypeIdentifier__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }
+
+	'Boolean' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }
+
+	'Integer' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }
+
+	'Real' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }
+
+	'String' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }
+
+	'UnlimitedNatural' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }
+
+	'OclAny' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }
+
+	'OclInvalid' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); }
+
+	'OclVoid' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeIdentifier__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }
+
+	'Set' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }
+
+	'Bag' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }
+
+	'Sequence' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }
+
+	'Collection' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }
+
+	'OrderedSet' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }
+(rule__CollectionLiteralPartCS__Group_0__0)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }
+(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }
+	ruleExpCS
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }
+	rulePatternExpCS
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimitiveLiteralExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }
+	ruleNumberLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }
+	ruleStringLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }
+	ruleBooleanLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }
+	ruleUnlimitedNaturalLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }
+	ruleInvalidLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }
+	ruleNullLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanLiteralExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }
+(rule__BooleanLiteralExpCS__SymbolAssignment_0)
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }
+(rule__BooleanLiteralExpCS__SymbolAssignment_1)
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }
+	rulePrimitiveTypeCS
+{ after(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }
+	ruleCollectionTypeCS
+{ after(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }
+	ruleTupleTypeCS
+{ after(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }
+	ruleTypeNameExpCS
+{ after(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }
+	ruleTypeLiteralCS
+{ after(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }
+	ruleCollectionPatternCS
+{ after(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getGroup_0()); }
+(rule__ExpCS__Group_0__0)
+{ after(grammarAccess.getExpCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }
+	rulePrefixedLetExpCS
+{ after(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }
+(rule__PrefixedLetExpCS__Group_0__0)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }
+	ruleLetExpCS
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }
+(rule__PrefixedPrimaryExpCS__Group_0__0)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }
+	rulePrimaryExpCS
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }
+	ruleNestedExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }
+	ruleIfExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }
+	ruleSelfExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }
+	rulePrimitiveLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }
+	ruleTupleLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }
+	ruleCollectionLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }
+	ruleLambdaLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }
+	ruleTypeLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }
+	ruleNameExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }
+(rule__CurlyBracketedClauseCS__Group_2_0__0)?
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }
+(rule__CurlyBracketedClauseCS__ValueAssignment_2_1)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }
+(rule__NavigatingArgCS__Group_0__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }
+(rule__NavigatingArgCS__Group_1__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Alternatives_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }
+(rule__NavigatingArgCS__Group_0_1_0__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }
+(rule__NavigatingArgCS__Group_0_1_1__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }
+(rule__NavigatingCommaArgCS__Group_2_0__0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }
+(rule__NavigatingCommaArgCS__Group_2_1__0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedConditionAlternatives_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }
+	ruleExpCS
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }
+	rulePatternExpCS
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }
+	ruleMultiplicityBoundsCS
+{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }
+	ruleMultiplicityStringCS
+{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityStringCS__StringBoundsAlternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }
+
+	'*' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }
+
+	'+' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }
+
+	'?' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }
+(rule__TypeParameterCS__Group_1_0__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }
+(rule__TypeParameterCS__Group_1_1__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeRefCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }
+	ruleTypedRefCS
+{ after(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }
+	ruleWildcardTypeRefCS
+{ after(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }
+(rule__WildcardTypeRefCS__Group_2_0__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }
+(rule__WildcardTypeRefCS__Group_2_1__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ID__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }
+	RULE_SIMPLE_ID
+{ after(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }
+	RULE_ESCAPED_ID
+{ after(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UPPER__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }
+	RULE_INT
+{ after(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }
+
+	'*' 
+
+{ after(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__TopLevelCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TopLevelCS__Group__0__Impl
+	rule__TopLevelCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TopLevelCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTopLevelCSAccess().getTopLevelCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getTopLevelCSAccess().getTopLevelCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TopLevelCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TopLevelCS__Group__1__Impl
+	rule__TopLevelCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TopLevelCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTopLevelCSAccess().getGroup_1()); }
+(rule__TopLevelCS__Group_1__0)?
+{ after(grammarAccess.getTopLevelCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TopLevelCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TopLevelCS__Group__2__Impl
+	rule__TopLevelCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TopLevelCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTopLevelCSAccess().getOwnedLibrariesAssignment_2()); }
+(rule__TopLevelCS__OwnedLibrariesAssignment_2)*
+{ after(grammarAccess.getTopLevelCSAccess().getOwnedLibrariesAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TopLevelCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TopLevelCS__Group__3__Impl
+	rule__TopLevelCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TopLevelCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTopLevelCSAccess().getOwnedImportsAssignment_3()); }
+(rule__TopLevelCS__OwnedImportsAssignment_3)*
+{ after(grammarAccess.getTopLevelCSAccess().getOwnedImportsAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TopLevelCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TopLevelCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TopLevelCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTopLevelCSAccess().getOwnedPackagesAssignment_4()); }
+(rule__TopLevelCS__OwnedPackagesAssignment_4)*
+{ after(grammarAccess.getTopLevelCSAccess().getOwnedPackagesAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__TopLevelCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TopLevelCS__Group_1__0__Impl
+	rule__TopLevelCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TopLevelCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTopLevelCSAccess().getModuleKeyword_1_0()); }
+
+	'module' 
+
+{ after(grammarAccess.getTopLevelCSAccess().getModuleKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TopLevelCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TopLevelCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TopLevelCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTopLevelCSAccess().getUnrestrictedNameParserRuleCall_1_1()); }
+	ruleUnrestrictedName
+{ after(grammarAccess.getTopLevelCSAccess().getUnrestrictedNameParserRuleCall_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__SIGNED__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SIGNED__Group__0__Impl
+	rule__SIGNED__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SIGNED__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSIGNEDAccess().getHyphenMinusKeyword_0()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getSIGNEDAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SIGNED__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SIGNED__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SIGNED__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSIGNEDAccess().getINTTerminalRuleCall_1()); }
+	RULE_INT
+{ after(grammarAccess.getSIGNEDAccess().getINTTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__InvariantConstraintCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvariantConstraintCS__Group__0__Impl
+	rule__InvariantConstraintCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getIsCallableAssignment_0()); }
+(rule__InvariantConstraintCS__IsCallableAssignment_0)?
+{ after(grammarAccess.getInvariantConstraintCSAccess().getIsCallableAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvariantConstraintCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvariantConstraintCS__Group__1__Impl
+	rule__InvariantConstraintCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getStereotypeAssignment_1()); }
+(rule__InvariantConstraintCS__StereotypeAssignment_1)
+{ after(grammarAccess.getInvariantConstraintCSAccess().getStereotypeAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvariantConstraintCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvariantConstraintCS__Group__2__Impl
+	rule__InvariantConstraintCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getGroup_2()); }
+(rule__InvariantConstraintCS__Group_2__0)?
+{ after(grammarAccess.getInvariantConstraintCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvariantConstraintCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvariantConstraintCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getAlternatives_3()); }
+(rule__InvariantConstraintCS__Alternatives_3)
+{ after(grammarAccess.getInvariantConstraintCSAccess().getAlternatives_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__InvariantConstraintCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvariantConstraintCS__Group_2__0__Impl
+	rule__InvariantConstraintCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getNameAssignment_2_0()); }
+(rule__InvariantConstraintCS__NameAssignment_2_0)
+{ after(grammarAccess.getInvariantConstraintCSAccess().getNameAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvariantConstraintCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvariantConstraintCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getGroup_2_1()); }
+(rule__InvariantConstraintCS__Group_2_1__0)?
+{ after(grammarAccess.getInvariantConstraintCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__InvariantConstraintCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvariantConstraintCS__Group_2_1__0__Impl
+	rule__InvariantConstraintCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getLeftParenthesisKeyword_2_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getInvariantConstraintCSAccess().getLeftParenthesisKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvariantConstraintCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvariantConstraintCS__Group_2_1__1__Impl
+	rule__InvariantConstraintCS__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getOwnedMessageSpecificationAssignment_2_1_1()); }
+(rule__InvariantConstraintCS__OwnedMessageSpecificationAssignment_2_1_1)
+{ after(grammarAccess.getInvariantConstraintCSAccess().getOwnedMessageSpecificationAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvariantConstraintCS__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvariantConstraintCS__Group_2_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getRightParenthesisKeyword_2_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getInvariantConstraintCSAccess().getRightParenthesisKeyword_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__InvariantConstraintCS__Group_3_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvariantConstraintCS__Group_3_0__0__Impl
+	rule__InvariantConstraintCS__Group_3_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__Group_3_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getColonKeyword_3_0_0()); }
+
+	':' 
+
+{ after(grammarAccess.getInvariantConstraintCSAccess().getColonKeyword_3_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvariantConstraintCS__Group_3_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvariantConstraintCS__Group_3_0__1__Impl
+	rule__InvariantConstraintCS__Group_3_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__Group_3_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getOwnedSpecificationAssignment_3_0_1()); }
+(rule__InvariantConstraintCS__OwnedSpecificationAssignment_3_0_1)?
+{ after(grammarAccess.getInvariantConstraintCSAccess().getOwnedSpecificationAssignment_3_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvariantConstraintCS__Group_3_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvariantConstraintCS__Group_3_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__Group_3_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getSemicolonKeyword_3_0_2()); }
+
+	';' 
+
+{ after(grammarAccess.getInvariantConstraintCSAccess().getSemicolonKeyword_3_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PostconditionConstraintCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostconditionConstraintCS__Group__0__Impl
+	rule__PostconditionConstraintCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostconditionConstraintCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getStereotypeAssignment_0()); }
+(rule__PostconditionConstraintCS__StereotypeAssignment_0)
+{ after(grammarAccess.getPostconditionConstraintCSAccess().getStereotypeAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PostconditionConstraintCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostconditionConstraintCS__Group__1__Impl
+	rule__PostconditionConstraintCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostconditionConstraintCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getGroup_1()); }
+(rule__PostconditionConstraintCS__Group_1__0)?
+{ after(grammarAccess.getPostconditionConstraintCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PostconditionConstraintCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostconditionConstraintCS__Group__2__Impl
+	rule__PostconditionConstraintCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostconditionConstraintCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getColonKeyword_2()); }
+
+	':' 
+
+{ after(grammarAccess.getPostconditionConstraintCSAccess().getColonKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PostconditionConstraintCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostconditionConstraintCS__Group__3__Impl
+	rule__PostconditionConstraintCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostconditionConstraintCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getOwnedSpecificationAssignment_3()); }
+(rule__PostconditionConstraintCS__OwnedSpecificationAssignment_3)?
+{ after(grammarAccess.getPostconditionConstraintCSAccess().getOwnedSpecificationAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PostconditionConstraintCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostconditionConstraintCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostconditionConstraintCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getSemicolonKeyword_4()); }
+
+	';' 
+
+{ after(grammarAccess.getPostconditionConstraintCSAccess().getSemicolonKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PostconditionConstraintCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostconditionConstraintCS__Group_1__0__Impl
+	rule__PostconditionConstraintCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostconditionConstraintCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getNameAssignment_1_0()); }
+(rule__PostconditionConstraintCS__NameAssignment_1_0)
+{ after(grammarAccess.getPostconditionConstraintCSAccess().getNameAssignment_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PostconditionConstraintCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostconditionConstraintCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostconditionConstraintCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getGroup_1_1()); }
+(rule__PostconditionConstraintCS__Group_1_1__0)?
+{ after(grammarAccess.getPostconditionConstraintCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PostconditionConstraintCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostconditionConstraintCS__Group_1_1__0__Impl
+	rule__PostconditionConstraintCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostconditionConstraintCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getLeftParenthesisKeyword_1_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getPostconditionConstraintCSAccess().getLeftParenthesisKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PostconditionConstraintCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostconditionConstraintCS__Group_1_1__1__Impl
+	rule__PostconditionConstraintCS__Group_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostconditionConstraintCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }
+(rule__PostconditionConstraintCS__OwnedMessageSpecificationAssignment_1_1_1)
+{ after(grammarAccess.getPostconditionConstraintCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PostconditionConstraintCS__Group_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostconditionConstraintCS__Group_1_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostconditionConstraintCS__Group_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getRightParenthesisKeyword_1_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getPostconditionConstraintCSAccess().getRightParenthesisKeyword_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PreconditionConstraintCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreconditionConstraintCS__Group__0__Impl
+	rule__PreconditionConstraintCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreconditionConstraintCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getStereotypeAssignment_0()); }
+(rule__PreconditionConstraintCS__StereotypeAssignment_0)
+{ after(grammarAccess.getPreconditionConstraintCSAccess().getStereotypeAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PreconditionConstraintCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreconditionConstraintCS__Group__1__Impl
+	rule__PreconditionConstraintCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreconditionConstraintCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getGroup_1()); }
+(rule__PreconditionConstraintCS__Group_1__0)?
+{ after(grammarAccess.getPreconditionConstraintCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PreconditionConstraintCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreconditionConstraintCS__Group__2__Impl
+	rule__PreconditionConstraintCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreconditionConstraintCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getColonKeyword_2()); }
+
+	':' 
+
+{ after(grammarAccess.getPreconditionConstraintCSAccess().getColonKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PreconditionConstraintCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreconditionConstraintCS__Group__3__Impl
+	rule__PreconditionConstraintCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreconditionConstraintCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getOwnedSpecificationAssignment_3()); }
+(rule__PreconditionConstraintCS__OwnedSpecificationAssignment_3)?
+{ after(grammarAccess.getPreconditionConstraintCSAccess().getOwnedSpecificationAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PreconditionConstraintCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreconditionConstraintCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreconditionConstraintCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getSemicolonKeyword_4()); }
+
+	';' 
+
+{ after(grammarAccess.getPreconditionConstraintCSAccess().getSemicolonKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PreconditionConstraintCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreconditionConstraintCS__Group_1__0__Impl
+	rule__PreconditionConstraintCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreconditionConstraintCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getNameAssignment_1_0()); }
+(rule__PreconditionConstraintCS__NameAssignment_1_0)
+{ after(grammarAccess.getPreconditionConstraintCSAccess().getNameAssignment_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PreconditionConstraintCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreconditionConstraintCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreconditionConstraintCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getGroup_1_1()); }
+(rule__PreconditionConstraintCS__Group_1_1__0)?
+{ after(grammarAccess.getPreconditionConstraintCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PreconditionConstraintCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreconditionConstraintCS__Group_1_1__0__Impl
+	rule__PreconditionConstraintCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreconditionConstraintCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getLeftParenthesisKeyword_1_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getPreconditionConstraintCSAccess().getLeftParenthesisKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PreconditionConstraintCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreconditionConstraintCS__Group_1_1__1__Impl
+	rule__PreconditionConstraintCS__Group_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreconditionConstraintCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }
+(rule__PreconditionConstraintCS__OwnedMessageSpecificationAssignment_1_1_1)
+{ after(grammarAccess.getPreconditionConstraintCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PreconditionConstraintCS__Group_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreconditionConstraintCS__Group_1_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreconditionConstraintCS__Group_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getRightParenthesisKeyword_1_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getPreconditionConstraintCSAccess().getRightParenthesisKeyword_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__AnnotationCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group__0__Impl
+	rule__AnnotationCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getAnnotationCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getAnnotationCSAccess().getAnnotationCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group__1__Impl
+	rule__AnnotationCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getAnnotationKeyword_1()); }
+
+	'annotation' 
+
+{ after(grammarAccess.getAnnotationCSAccess().getAnnotationKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group__2__Impl
+	rule__AnnotationCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getNameAssignment_2()); }
+(rule__AnnotationCS__NameAssignment_2)?
+{ after(grammarAccess.getAnnotationCSAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group__3__Impl
+	rule__AnnotationCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getGroup_3()); }
+(rule__AnnotationCS__Group_3__0)?
+{ after(grammarAccess.getAnnotationCSAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getAlternatives_4()); }
+(rule__AnnotationCS__Alternatives_4)
+{ after(grammarAccess.getAnnotationCSAccess().getAlternatives_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__AnnotationCS__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_3__0__Impl
+	rule__AnnotationCS__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getLeftParenthesisKeyword_3_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getAnnotationCSAccess().getLeftParenthesisKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_3__1__Impl
+	rule__AnnotationCS__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_3_1()); }
+(rule__AnnotationCS__OwnedDetailsAssignment_3_1)
+{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_3__2__Impl
+	rule__AnnotationCS__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getGroup_3_2()); }
+(rule__AnnotationCS__Group_3_2__0)*
+{ after(grammarAccess.getAnnotationCSAccess().getGroup_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_3__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getRightParenthesisKeyword_3_3()); }
+
+	')' 
+
+{ after(grammarAccess.getAnnotationCSAccess().getRightParenthesisKeyword_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__AnnotationCS__Group_3_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_3_2__0__Impl
+	rule__AnnotationCS__Group_3_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_3_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getCommaKeyword_3_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getAnnotationCSAccess().getCommaKeyword_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group_3_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_3_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_3_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_3_2_1()); }
+(rule__AnnotationCS__OwnedDetailsAssignment_3_2_1)
+{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_3_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__AnnotationCS__Group_4_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_4_0__0__Impl
+	rule__AnnotationCS__Group_4_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_4_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getLeftCurlyBracketKeyword_4_0_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getAnnotationCSAccess().getLeftCurlyBracketKeyword_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group_4_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_4_0__1__Impl
+	rule__AnnotationCS__Group_4_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_4_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+(
+{ before(grammarAccess.getAnnotationCSAccess().getAlternatives_4_0_1()); }
+(rule__AnnotationCS__Alternatives_4_0_1)
+{ after(grammarAccess.getAnnotationCSAccess().getAlternatives_4_0_1()); }
+)
+(
+{ before(grammarAccess.getAnnotationCSAccess().getAlternatives_4_0_1()); }
+(rule__AnnotationCS__Alternatives_4_0_1)*
+{ after(grammarAccess.getAnnotationCSAccess().getAlternatives_4_0_1()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group_4_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_4_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_4_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getRightCurlyBracketKeyword_4_0_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getAnnotationCSAccess().getRightCurlyBracketKeyword_4_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__AttributeCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group__0__Impl
+	rule__AttributeCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getAlternatives_0()); }
+(rule__AttributeCS__Alternatives_0)?
+{ after(grammarAccess.getAttributeCSAccess().getAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group__1__Impl
+	rule__AttributeCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getAttributeKeyword_1()); }
+
+	'attribute' 
+
+{ after(grammarAccess.getAttributeCSAccess().getAttributeKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group__2__Impl
+	rule__AttributeCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getNameAssignment_2()); }
+(rule__AttributeCS__NameAssignment_2)
+{ after(grammarAccess.getAttributeCSAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group__3__Impl
+	rule__AttributeCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getGroup_3()); }
+(rule__AttributeCS__Group_3__0)?
+{ after(grammarAccess.getAttributeCSAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group__4__Impl
+	rule__AttributeCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getGroup_4()); }
+(rule__AttributeCS__Group_4__0)?
+{ after(grammarAccess.getAttributeCSAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group__5__Impl
+	rule__AttributeCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getGroup_5()); }
+(rule__AttributeCS__Group_5__0)?
+{ after(grammarAccess.getAttributeCSAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getAlternatives_6()); }
+(rule__AttributeCS__Alternatives_6)
+{ after(grammarAccess.getAttributeCSAccess().getAlternatives_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__AttributeCS__Group_0_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_0_0__0__Impl
+	rule__AttributeCS__Group_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_0_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_0_0()); }
+(rule__AttributeCS__QualifiersAssignment_0_0_0)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_0_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_0_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_0_1()); }
+(rule__AttributeCS__QualifiersAssignment_0_0_1)?
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__AttributeCS__Group_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_0_1__0__Impl
+	rule__AttributeCS__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_1_0()); }
+(rule__AttributeCS__QualifiersAssignment_0_1_0)
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_1_1()); }
+(rule__AttributeCS__QualifiersAssignment_0_1_1)?
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersAssignment_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__AttributeCS__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_3__0__Impl
+	rule__AttributeCS__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getColonKeyword_3_0()); }
+
+	':' 
+
+{ after(grammarAccess.getAttributeCSAccess().getColonKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getOwnedTypeAssignment_3_1()); }
+(rule__AttributeCS__OwnedTypeAssignment_3_1)
+{ after(grammarAccess.getAttributeCSAccess().getOwnedTypeAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__AttributeCS__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_4__0__Impl
+	rule__AttributeCS__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getEqualsSignKeyword_4_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getAttributeCSAccess().getEqualsSignKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getDefaultAssignment_4_1()); }
+(rule__AttributeCS__DefaultAssignment_4_1)
+{ after(grammarAccess.getAttributeCSAccess().getDefaultAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__AttributeCS__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_5__0__Impl
+	rule__AttributeCS__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_5__1__Impl
+	rule__AttributeCS__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+(
+{ before(grammarAccess.getAttributeCSAccess().getGroup_5_1()); }
+(rule__AttributeCS__Group_5_1__0)
+{ after(grammarAccess.getAttributeCSAccess().getGroup_5_1()); }
+)
+(
+{ before(grammarAccess.getAttributeCSAccess().getGroup_5_1()); }
+(rule__AttributeCS__Group_5_1__0)*
+{ after(grammarAccess.getAttributeCSAccess().getGroup_5_1()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_5__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__AttributeCS__Group_5_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_5_1__0__Impl
+	rule__AttributeCS__Group_5_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_5_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getAlternatives_5_1_0()); }
+(rule__AttributeCS__Alternatives_5_1_0)
+{ after(grammarAccess.getAttributeCSAccess().getAlternatives_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_5_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_5_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_5_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1()); }
+(
+	',' 
+)?
+{ after(grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__AttributeCS__Group_6_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_6_0__0__Impl
+	rule__AttributeCS__Group_6_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_6_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_6_0_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_6_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_6_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_6_0__1__Impl
+	rule__AttributeCS__Group_6_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_6_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getAlternatives_6_0_1()); }
+(rule__AttributeCS__Alternatives_6_0_1)*
+{ after(grammarAccess.getAttributeCSAccess().getAlternatives_6_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_6_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_6_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_6_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_6_0_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_6_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__AttributeCS__Group_6_0_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_6_0_1_1__0__Impl
+	rule__AttributeCS__Group_6_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_6_0_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()); }
+
+	'derivation' 
+
+{ after(grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_6_0_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_6_0_1_1__1__Impl
+	rule__AttributeCS__Group_6_0_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_6_0_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()); }
+(	ruleUnrestrictedName)?
+{ after(grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_6_0_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_6_0_1_1__2__Impl
+	rule__AttributeCS__Group_6_0_1_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_6_0_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()); }
+
+	':' 
+
+{ after(grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_6_0_1_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_6_0_1_1__3__Impl
+	rule__AttributeCS__Group_6_0_1_1__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_6_0_1_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsAssignment_6_0_1_1_3()); }
+(rule__AttributeCS__OwnedDefaultExpressionsAssignment_6_0_1_1_3)?
+{ after(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsAssignment_6_0_1_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_6_0_1_1__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_6_0_1_1__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_6_0_1_1__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4()); }
+
+	';' 
+
+{ after(grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__AttributeCS__Group_6_0_1_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_6_0_1_2__0__Impl
+	rule__AttributeCS__Group_6_0_1_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_6_0_1_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()); }
+
+	'initial' 
+
+{ after(grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_6_0_1_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_6_0_1_2__1__Impl
+	rule__AttributeCS__Group_6_0_1_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_6_0_1_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()); }
+(	ruleUnrestrictedName)?
+{ after(grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_6_0_1_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_6_0_1_2__2__Impl
+	rule__AttributeCS__Group_6_0_1_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_6_0_1_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()); }
+
+	':' 
+
+{ after(grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_6_0_1_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_6_0_1_2__3__Impl
+	rule__AttributeCS__Group_6_0_1_2__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_6_0_1_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsAssignment_6_0_1_2_3()); }
+(rule__AttributeCS__OwnedDefaultExpressionsAssignment_6_0_1_2_3)?
+{ after(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsAssignment_6_0_1_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AttributeCS__Group_6_0_1_2__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AttributeCS__Group_6_0_1_2__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__Group_6_0_1_2__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4()); }
+
+	';' 
+
+{ after(grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataTypeCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group__0__Impl
+	rule__DataTypeCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getIsPrimitiveAssignment_0()); }
+(rule__DataTypeCS__IsPrimitiveAssignment_0)?
+{ after(grammarAccess.getDataTypeCSAccess().getIsPrimitiveAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataTypeCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group__1__Impl
+	rule__DataTypeCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getDatatypeKeyword_1()); }
+
+	'datatype' 
+
+{ after(grammarAccess.getDataTypeCSAccess().getDatatypeKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataTypeCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group__2__Impl
+	rule__DataTypeCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getNameAssignment_2()); }
+(rule__DataTypeCS__NameAssignment_2)
+{ after(grammarAccess.getDataTypeCSAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataTypeCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group__3__Impl
+	rule__DataTypeCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getOwnedSignatureAssignment_3()); }
+(rule__DataTypeCS__OwnedSignatureAssignment_3)?
+{ after(grammarAccess.getDataTypeCSAccess().getOwnedSignatureAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataTypeCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group__4__Impl
+	rule__DataTypeCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getGroup_4()); }
+(rule__DataTypeCS__Group_4__0)?
+{ after(grammarAccess.getDataTypeCSAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataTypeCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group__5__Impl
+	rule__DataTypeCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getGroup_5()); }
+(rule__DataTypeCS__Group_5__0)?
+{ after(grammarAccess.getDataTypeCSAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataTypeCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getAlternatives_6()); }
+(rule__DataTypeCS__Alternatives_6)
+{ after(grammarAccess.getDataTypeCSAccess().getAlternatives_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataTypeCS__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group_4__0__Impl
+	rule__DataTypeCS__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getColonKeyword_4_0()); }
+
+	':' 
+
+{ after(grammarAccess.getDataTypeCSAccess().getColonKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataTypeCS__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getInstanceClassNameAssignment_4_1()); }
+(rule__DataTypeCS__InstanceClassNameAssignment_4_1)
+{ after(grammarAccess.getDataTypeCSAccess().getInstanceClassNameAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DataTypeCS__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group_5__0__Impl
+	rule__DataTypeCS__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getLeftCurlyBracketKeyword_5_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getDataTypeCSAccess().getLeftCurlyBracketKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataTypeCS__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group_5__1__Impl
+	rule__DataTypeCS__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getAlternatives_5_1()); }
+(rule__DataTypeCS__Alternatives_5_1)?
+{ after(grammarAccess.getDataTypeCSAccess().getAlternatives_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataTypeCS__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group_5__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getRightCurlyBracketKeyword_5_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getDataTypeCSAccess().getRightCurlyBracketKeyword_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DataTypeCS__Group_6_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group_6_0__0__Impl
+	rule__DataTypeCS__Group_6_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group_6_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getLeftCurlyBracketKeyword_6_0_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getDataTypeCSAccess().getLeftCurlyBracketKeyword_6_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataTypeCS__Group_6_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group_6_0__1__Impl
+	rule__DataTypeCS__Group_6_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group_6_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getAlternatives_6_0_1()); }
+(rule__DataTypeCS__Alternatives_6_0_1)*
+{ after(grammarAccess.getDataTypeCSAccess().getAlternatives_6_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataTypeCS__Group_6_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataTypeCS__Group_6_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__Group_6_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getRightCurlyBracketKeyword_6_0_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getDataTypeCSAccess().getRightCurlyBracketKeyword_6_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DetailCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DetailCS__Group__0__Impl
+	rule__DetailCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DetailCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDetailCSAccess().getNameAssignment_0()); }
+(rule__DetailCS__NameAssignment_0)
+{ after(grammarAccess.getDetailCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DetailCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DetailCS__Group__1__Impl
+	rule__DetailCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DetailCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDetailCSAccess().getEqualsSignKeyword_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDetailCSAccess().getEqualsSignKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DetailCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DetailCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DetailCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDetailCSAccess().getValuesAssignment_2()); }
+(rule__DetailCS__ValuesAssignment_2)*
+{ after(grammarAccess.getDetailCSAccess().getValuesAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DocumentationCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group__0__Impl
+	rule__DocumentationCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getDocumentationCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDocumentationCSAccess().getDocumentationCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group__1__Impl
+	rule__DocumentationCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getDocumentationKeyword_1()); }
+
+	'documentation' 
+
+{ after(grammarAccess.getDocumentationCSAccess().getDocumentationKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group__2__Impl
+	rule__DocumentationCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getValueAssignment_2()); }
+(rule__DocumentationCS__ValueAssignment_2)?
+{ after(grammarAccess.getDocumentationCSAccess().getValueAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group__3__Impl
+	rule__DocumentationCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getGroup_3()); }
+(rule__DocumentationCS__Group_3__0)?
+{ after(grammarAccess.getDocumentationCSAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getSemicolonKeyword_4()); }
+
+	';' 
+
+{ after(grammarAccess.getDocumentationCSAccess().getSemicolonKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DocumentationCS__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group_3__0__Impl
+	rule__DocumentationCS__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getLeftParenthesisKeyword_3_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getDocumentationCSAccess().getLeftParenthesisKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group_3__1__Impl
+	rule__DocumentationCS__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_1()); }
+(rule__DocumentationCS__OwnedDetailsAssignment_3_1)
+{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group_3__2__Impl
+	rule__DocumentationCS__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getGroup_3_2()); }
+(rule__DocumentationCS__Group_3_2__0)*
+{ after(grammarAccess.getDocumentationCSAccess().getGroup_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group_3__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getRightParenthesisKeyword_3_3()); }
+
+	')' 
+
+{ after(grammarAccess.getDocumentationCSAccess().getRightParenthesisKeyword_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DocumentationCS__Group_3_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group_3_2__0__Impl
+	rule__DocumentationCS__Group_3_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group_3_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getCommaKeyword_3_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getDocumentationCSAccess().getCommaKeyword_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group_3_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group_3_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group_3_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_2_1()); }
+(rule__DocumentationCS__OwnedDetailsAssignment_3_2_1)
+{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EnumerationCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationCS__Group__0__Impl
+	rule__EnumerationCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getEnumKeyword_0()); }
+
+	'enum' 
+
+{ after(grammarAccess.getEnumerationCSAccess().getEnumKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationCS__Group__1__Impl
+	rule__EnumerationCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getNameAssignment_1()); }
+(rule__EnumerationCS__NameAssignment_1)
+{ after(grammarAccess.getEnumerationCSAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationCS__Group__2__Impl
+	rule__EnumerationCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getOwnedSignatureAssignment_2()); }
+(rule__EnumerationCS__OwnedSignatureAssignment_2)?
+{ after(grammarAccess.getEnumerationCSAccess().getOwnedSignatureAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationCS__Group__3__Impl
+	rule__EnumerationCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getGroup_3()); }
+(rule__EnumerationCS__Group_3__0)?
+{ after(grammarAccess.getEnumerationCSAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationCS__Group__4__Impl
+	rule__EnumerationCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getGroup_4()); }
+(rule__EnumerationCS__Group_4__0)?
+{ after(grammarAccess.getEnumerationCSAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationCS__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getAlternatives_5()); }
+(rule__EnumerationCS__Alternatives_5)
+{ after(grammarAccess.getEnumerationCSAccess().getAlternatives_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EnumerationCS__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationCS__Group_3__0__Impl
+	rule__EnumerationCS__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getColonKeyword_3_0()); }
+
+	':' 
+
+{ after(grammarAccess.getEnumerationCSAccess().getColonKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationCS__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationCS__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getInstanceClassNameAssignment_3_1()); }
+(rule__EnumerationCS__InstanceClassNameAssignment_3_1)
+{ after(grammarAccess.getEnumerationCSAccess().getInstanceClassNameAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EnumerationCS__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationCS__Group_4__0__Impl
+	rule__EnumerationCS__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getLeftCurlyBracketKeyword_4_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getEnumerationCSAccess().getLeftCurlyBracketKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationCS__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationCS__Group_4__1__Impl
+	rule__EnumerationCS__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getAlternatives_4_1()); }
+(rule__EnumerationCS__Alternatives_4_1)?
+{ after(grammarAccess.getEnumerationCSAccess().getAlternatives_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationCS__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationCS__Group_4__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getRightCurlyBracketKeyword_4_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getEnumerationCSAccess().getRightCurlyBracketKeyword_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__EnumerationCS__Group_5_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationCS__Group_5_0__0__Impl
+	rule__EnumerationCS__Group_5_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Group_5_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getLeftCurlyBracketKeyword_5_0_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getEnumerationCSAccess().getLeftCurlyBracketKeyword_5_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationCS__Group_5_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationCS__Group_5_0__1__Impl
+	rule__EnumerationCS__Group_5_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Group_5_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getAlternatives_5_0_1()); }
+(rule__EnumerationCS__Alternatives_5_0_1)*
+{ after(grammarAccess.getEnumerationCSAccess().getAlternatives_5_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationCS__Group_5_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationCS__Group_5_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__Group_5_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getRightCurlyBracketKeyword_5_0_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getEnumerationCSAccess().getRightCurlyBracketKeyword_5_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__EnumerationLiteralCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationLiteralCS__Group__0__Impl
+	rule__EnumerationLiteralCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getAlternatives_0()); }
+(rule__EnumerationLiteralCS__Alternatives_0)
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationLiteralCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationLiteralCS__Group__1__Impl
+	rule__EnumerationLiteralCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getGroup_1()); }
+(rule__EnumerationLiteralCS__Group_1__0)?
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationLiteralCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationLiteralCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getAlternatives_2()); }
+(rule__EnumerationLiteralCS__Alternatives_2)
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__EnumerationLiteralCS__Group_0_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationLiteralCS__Group_0_0__0__Impl
+	rule__EnumerationLiteralCS__Group_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__Group_0_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getLiteralKeyword_0_0_0()); }
+
+	'literal' 
+
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getLiteralKeyword_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationLiteralCS__Group_0_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationLiteralCS__Group_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__Group_0_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getNameAssignment_0_0_1()); }
+(rule__EnumerationLiteralCS__NameAssignment_0_0_1)
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getNameAssignment_0_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EnumerationLiteralCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationLiteralCS__Group_1__0__Impl
+	rule__EnumerationLiteralCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getEqualsSignKeyword_1_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getEqualsSignKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationLiteralCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationLiteralCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getValueAssignment_1_1()); }
+(rule__EnumerationLiteralCS__ValueAssignment_1_1)
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getValueAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EnumerationLiteralCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationLiteralCS__Group_2_0__0__Impl
+	rule__EnumerationLiteralCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getLeftCurlyBracketKeyword_2_0_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getLeftCurlyBracketKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationLiteralCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationLiteralCS__Group_2_0__1__Impl
+	rule__EnumerationLiteralCS__Group_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getOwnedAnnotationsAssignment_2_0_1()); }
+(rule__EnumerationLiteralCS__OwnedAnnotationsAssignment_2_0_1)*
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getOwnedAnnotationsAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EnumerationLiteralCS__Group_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EnumerationLiteralCS__Group_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__Group_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getRightCurlyBracketKeyword_2_0_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getEnumerationLiteralCSAccess().getRightCurlyBracketKeyword_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ImportCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ImportCS__Group__0__Impl
+	rule__ImportCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getImportKeyword_0()); }
+
+	'import' 
+
+{ after(grammarAccess.getImportCSAccess().getImportKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ImportCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ImportCS__Group__1__Impl
+	rule__ImportCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getGroup_1()); }
+(rule__ImportCS__Group_1__0)?
+{ after(grammarAccess.getImportCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ImportCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ImportCS__Group__2__Impl
+	rule__ImportCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getOwnedPathNameAssignment_2()); }
+(rule__ImportCS__OwnedPathNameAssignment_2)
+{ after(grammarAccess.getImportCSAccess().getOwnedPathNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ImportCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ImportCS__Group__3__Impl
+	rule__ImportCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getIsAllAssignment_3()); }
+(rule__ImportCS__IsAllAssignment_3)?
+{ after(grammarAccess.getImportCSAccess().getIsAllAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ImportCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ImportCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getSemicolonKeyword_4()); }
+
+	';' 
+
+{ after(grammarAccess.getImportCSAccess().getSemicolonKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ImportCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ImportCS__Group_1__0__Impl
+	rule__ImportCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getNameAssignment_1_0()); }
+(rule__ImportCS__NameAssignment_1_0)
+{ after(grammarAccess.getImportCSAccess().getNameAssignment_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ImportCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ImportCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getColonKeyword_1_1()); }
+
+	':' 
+
+{ after(grammarAccess.getImportCSAccess().getColonKeyword_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibraryCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibraryCS__Group__0__Impl
+	rule__LibraryCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibraryCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryCSAccess().getLibraryKeyword_0()); }
+
+	'library' 
+
+{ after(grammarAccess.getLibraryCSAccess().getLibraryKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibraryCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibraryCS__Group__1__Impl
+	rule__LibraryCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibraryCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryCSAccess().getGroup_1()); }
+(rule__LibraryCS__Group_1__0)?
+{ after(grammarAccess.getLibraryCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibraryCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibraryCS__Group__2__Impl
+	rule__LibraryCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibraryCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryCSAccess().getReferredPackageAssignment_2()); }
+(rule__LibraryCS__ReferredPackageAssignment_2)
+{ after(grammarAccess.getLibraryCSAccess().getReferredPackageAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibraryCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibraryCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibraryCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryCSAccess().getSemicolonKeyword_3()); }
+
+	';' 
+
+{ after(grammarAccess.getLibraryCSAccess().getSemicolonKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__LibraryCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibraryCS__Group_1__0__Impl
+	rule__LibraryCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibraryCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryCSAccess().getNameAssignment_1_0()); }
+(rule__LibraryCS__NameAssignment_1_0)
+{ after(grammarAccess.getLibraryCSAccess().getNameAssignment_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibraryCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibraryCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibraryCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryCSAccess().getColonKeyword_1_1()); }
+
+	':' 
+
+{ after(grammarAccess.getLibraryCSAccess().getColonKeyword_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ModelElementRefCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ModelElementRefCS__Group__0__Impl
+	rule__ModelElementRefCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ModelElementRefCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getModelElementRefCSAccess().getReferenceKeyword_0()); }
+
+	'reference' 
+
+{ after(grammarAccess.getModelElementRefCSAccess().getReferenceKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ModelElementRefCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ModelElementRefCS__Group__1__Impl
+	rule__ModelElementRefCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ModelElementRefCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getModelElementRefCSAccess().getOwnedPathNameAssignment_1()); }
+(rule__ModelElementRefCS__OwnedPathNameAssignment_1)
+{ after(grammarAccess.getModelElementRefCSAccess().getOwnedPathNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ModelElementRefCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ModelElementRefCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ModelElementRefCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getModelElementRefCSAccess().getSemicolonKeyword_2()); }
+
+	';' 
+
+{ after(grammarAccess.getModelElementRefCSAccess().getSemicolonKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__OperationCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group__0__Impl
+	rule__OperationCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getAlternatives_0()); }
+(rule__OperationCS__Alternatives_0)?
+{ after(grammarAccess.getOperationCSAccess().getAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group__1__Impl
+	rule__OperationCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOperationKeyword_1()); }
+
+	'operation' 
+
+{ after(grammarAccess.getOperationCSAccess().getOperationKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group__2__Impl
+	rule__OperationCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedSignatureAssignment_2()); }
+(rule__OperationCS__OwnedSignatureAssignment_2)?
+{ after(grammarAccess.getOperationCSAccess().getOwnedSignatureAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group__3__Impl
+	rule__OperationCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getNameAssignment_3()); }
+(rule__OperationCS__NameAssignment_3)
+{ after(grammarAccess.getOperationCSAccess().getNameAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group__4__Impl
+	rule__OperationCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getLeftParenthesisKeyword_4()); }
+
+	'(' 
+
+{ after(grammarAccess.getOperationCSAccess().getLeftParenthesisKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group__5__Impl
+	rule__OperationCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getGroup_5()); }
+(rule__OperationCS__Group_5__0)?
+{ after(grammarAccess.getOperationCSAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group__6__Impl
+	rule__OperationCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getRightParenthesisKeyword_6()); }
+
+	')' 
+
+{ after(grammarAccess.getOperationCSAccess().getRightParenthesisKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group__7__Impl
+	rule__OperationCS__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getGroup_7()); }
+(rule__OperationCS__Group_7__0)?
+{ after(grammarAccess.getOperationCSAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group__8__Impl
+	rule__OperationCS__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getGroup_8()); }
+(rule__OperationCS__Group_8__0)?
+{ after(grammarAccess.getOperationCSAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group__9__Impl
+	rule__OperationCS__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getGroup_9()); }
+(rule__OperationCS__Group_9__0)?
+{ after(grammarAccess.getOperationCSAccess().getGroup_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group__10__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getAlternatives_10()); }
+(rule__OperationCS__Alternatives_10)
+{ after(grammarAccess.getOperationCSAccess().getAlternatives_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__OperationCS__Group_0_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_0_0__0__Impl
+	rule__OperationCS__Group_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_0_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_0_0()); }
+(rule__OperationCS__QualifiersAssignment_0_0_0)
+{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_0_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_0_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_0_1()); }
+(rule__OperationCS__QualifiersAssignment_0_0_1)?
+{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__OperationCS__Group_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_0_1__0__Impl
+	rule__OperationCS__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_1_0()); }
+(rule__OperationCS__QualifiersAssignment_0_1_0)
+{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_1_1()); }
+(rule__OperationCS__QualifiersAssignment_0_1_1)?
+{ after(grammarAccess.getOperationCSAccess().getQualifiersAssignment_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__OperationCS__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_5__0__Impl
+	rule__OperationCS__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedParametersAssignment_5_0()); }
+(rule__OperationCS__OwnedParametersAssignment_5_0)
+{ after(grammarAccess.getOperationCSAccess().getOwnedParametersAssignment_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getGroup_5_1()); }
+(rule__OperationCS__Group_5_1__0)*
+{ after(grammarAccess.getOperationCSAccess().getGroup_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__OperationCS__Group_5_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_5_1__0__Impl
+	rule__OperationCS__Group_5_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_5_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getCommaKeyword_5_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getOperationCSAccess().getCommaKeyword_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_5_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_5_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_5_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedParametersAssignment_5_1_1()); }
+(rule__OperationCS__OwnedParametersAssignment_5_1_1)
+{ after(grammarAccess.getOperationCSAccess().getOwnedParametersAssignment_5_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__OperationCS__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_7__0__Impl
+	rule__OperationCS__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getColonKeyword_7_0()); }
+
+	':' 
+
+{ after(grammarAccess.getOperationCSAccess().getColonKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedTypeAssignment_7_1()); }
+(rule__OperationCS__OwnedTypeAssignment_7_1)
+{ after(grammarAccess.getOperationCSAccess().getOwnedTypeAssignment_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__OperationCS__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_8__0__Impl
+	rule__OperationCS__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getThrowsKeyword_8_0()); }
+
+	'throws' 
+
+{ after(grammarAccess.getOperationCSAccess().getThrowsKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_8__1__Impl
+	rule__OperationCS__Group_8__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedExceptionsAssignment_8_1()); }
+(rule__OperationCS__OwnedExceptionsAssignment_8_1)
+{ after(grammarAccess.getOperationCSAccess().getOwnedExceptionsAssignment_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_8__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_8__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_8__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getGroup_8_2()); }
+(rule__OperationCS__Group_8_2__0)*
+{ after(grammarAccess.getOperationCSAccess().getGroup_8_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__OperationCS__Group_8_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_8_2__0__Impl
+	rule__OperationCS__Group_8_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_8_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getCommaKeyword_8_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getOperationCSAccess().getCommaKeyword_8_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_8_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_8_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_8_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedExceptionsAssignment_8_2_1()); }
+(rule__OperationCS__OwnedExceptionsAssignment_8_2_1)
+{ after(grammarAccess.getOperationCSAccess().getOwnedExceptionsAssignment_8_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__OperationCS__Group_9__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_9__0__Impl
+	rule__OperationCS__Group_9__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_9__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_9_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_9__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_9__1__Impl
+	rule__OperationCS__Group_9__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_9__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+(
+{ before(grammarAccess.getOperationCSAccess().getGroup_9_1()); }
+(rule__OperationCS__Group_9_1__0)
+{ after(grammarAccess.getOperationCSAccess().getGroup_9_1()); }
+)
+(
+{ before(grammarAccess.getOperationCSAccess().getGroup_9_1()); }
+(rule__OperationCS__Group_9_1__0)*
+{ after(grammarAccess.getOperationCSAccess().getGroup_9_1()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_9__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_9__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_9__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_9_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_9_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__OperationCS__Group_9_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_9_1__0__Impl
+	rule__OperationCS__Group_9_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_9_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getAlternatives_9_1_0()); }
+(rule__OperationCS__Alternatives_9_1_0)
+{ after(grammarAccess.getOperationCSAccess().getAlternatives_9_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_9_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_9_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_9_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getCommaKeyword_9_1_1()); }
+(
+	',' 
+)?
+{ after(grammarAccess.getOperationCSAccess().getCommaKeyword_9_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__OperationCS__Group_10_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_10_0__0__Impl
+	rule__OperationCS__Group_10_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_10_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_10_0_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_10_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_10_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_10_0__1__Impl
+	rule__OperationCS__Group_10_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_10_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getAlternatives_10_0_1()); }
+(rule__OperationCS__Alternatives_10_0_1)*
+{ after(grammarAccess.getOperationCSAccess().getAlternatives_10_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_10_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_10_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_10_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_10_0_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_10_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__OperationCS__Group_10_0_1_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_10_0_1_2__0__Impl
+	rule__OperationCS__Group_10_0_1_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_10_0_1_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getBodyKeyword_10_0_1_2_0()); }
+
+	'body' 
+
+{ after(grammarAccess.getOperationCSAccess().getBodyKeyword_10_0_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_10_0_1_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_10_0_1_2__1__Impl
+	rule__OperationCS__Group_10_0_1_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_10_0_1_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getUnrestrictedNameParserRuleCall_10_0_1_2_1()); }
+(	ruleUnrestrictedName)?
+{ after(grammarAccess.getOperationCSAccess().getUnrestrictedNameParserRuleCall_10_0_1_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_10_0_1_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_10_0_1_2__2__Impl
+	rule__OperationCS__Group_10_0_1_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_10_0_1_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getColonKeyword_10_0_1_2_2()); }
+
+	':' 
+
+{ after(grammarAccess.getOperationCSAccess().getColonKeyword_10_0_1_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_10_0_1_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_10_0_1_2__3__Impl
+	rule__OperationCS__Group_10_0_1_2__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_10_0_1_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedBodyExpressionsAssignment_10_0_1_2_3()); }
+(rule__OperationCS__OwnedBodyExpressionsAssignment_10_0_1_2_3)?
+{ after(grammarAccess.getOperationCSAccess().getOwnedBodyExpressionsAssignment_10_0_1_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OperationCS__Group_10_0_1_2__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OperationCS__Group_10_0_1_2__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Group_10_0_1_2__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_0_1_2_4()); }
+
+	';' 
+
+{ after(grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_0_1_2_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PackageCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group__0__Impl
+	rule__PackageCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getPackageKeyword_0()); }
+
+	'package' 
+
+{ after(grammarAccess.getPackageCSAccess().getPackageKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group__1__Impl
+	rule__PackageCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getNameAssignment_1()); }
+(rule__PackageCS__NameAssignment_1)
+{ after(grammarAccess.getPackageCSAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group__2__Impl
+	rule__PackageCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getGroup_2()); }
+(rule__PackageCS__Group_2__0)?
+{ after(grammarAccess.getPackageCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group__3__Impl
+	rule__PackageCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getGroup_3()); }
+(rule__PackageCS__Group_3__0)?
+{ after(grammarAccess.getPackageCSAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getAlternatives_4()); }
+(rule__PackageCS__Alternatives_4)
+{ after(grammarAccess.getPackageCSAccess().getAlternatives_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PackageCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group_2__0__Impl
+	rule__PackageCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getPackageCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getNsPrefixAssignment_2_1()); }
+(rule__PackageCS__NsPrefixAssignment_2_1)
+{ after(grammarAccess.getPackageCSAccess().getNsPrefixAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PackageCS__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group_3__0__Impl
+	rule__PackageCS__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getEqualsSignKeyword_3_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getPackageCSAccess().getEqualsSignKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getNsURIAssignment_3_1()); }
+(rule__PackageCS__NsURIAssignment_3_1)
+{ after(grammarAccess.getPackageCSAccess().getNsURIAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PackageCS__Group_4_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group_4_0__0__Impl
+	rule__PackageCS__Group_4_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group_4_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getLeftCurlyBracketKeyword_4_0_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getPackageCSAccess().getLeftCurlyBracketKeyword_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group_4_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group_4_0__1__Impl
+	rule__PackageCS__Group_4_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group_4_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getAlternatives_4_0_1()); }
+(rule__PackageCS__Alternatives_4_0_1)*
+{ after(grammarAccess.getPackageCSAccess().getAlternatives_4_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group_4_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group_4_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group_4_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getRightCurlyBracketKeyword_4_0_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getPackageCSAccess().getRightCurlyBracketKeyword_4_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ParameterCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group__0__Impl
+	rule__ParameterCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getNameAssignment_0()); }
+(rule__ParameterCS__NameAssignment_0)
+{ after(grammarAccess.getParameterCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ParameterCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group__1__Impl
+	rule__ParameterCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getGroup_1()); }
+(rule__ParameterCS__Group_1__0)?
+{ after(grammarAccess.getParameterCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ParameterCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group__2__Impl
+	rule__ParameterCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getGroup_2()); }
+(rule__ParameterCS__Group_2__0)?
+{ after(grammarAccess.getParameterCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ParameterCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getGroup_3()); }
+(rule__ParameterCS__Group_3__0)?
+{ after(grammarAccess.getParameterCSAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__ParameterCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group_1__0__Impl
+	rule__ParameterCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getColonKeyword_1_0()); }
+
+	':' 
+
+{ after(grammarAccess.getParameterCSAccess().getColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ParameterCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getOwnedTypeAssignment_1_1()); }
+(rule__ParameterCS__OwnedTypeAssignment_1_1)
+{ after(grammarAccess.getParameterCSAccess().getOwnedTypeAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ParameterCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group_2__0__Impl
+	rule__ParameterCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_2_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ParameterCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group_2__1__Impl
+	rule__ParameterCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+(
+{ before(grammarAccess.getParameterCSAccess().getGroup_2_1()); }
+(rule__ParameterCS__Group_2_1__0)
+{ after(grammarAccess.getParameterCSAccess().getGroup_2_1()); }
+)
+(
+{ before(grammarAccess.getParameterCSAccess().getGroup_2_1()); }
+(rule__ParameterCS__Group_2_1__0)*
+{ after(grammarAccess.getParameterCSAccess().getGroup_2_1()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ParameterCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_2_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ParameterCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group_2_1__0__Impl
+	rule__ParameterCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getAlternatives_2_1_0()); }
+(rule__ParameterCS__Alternatives_2_1_0)
+{ after(grammarAccess.getParameterCSAccess().getAlternatives_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ParameterCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getCommaKeyword_2_1_1()); }
+(
+	',' 
+)?
+{ after(grammarAccess.getParameterCSAccess().getCommaKeyword_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ParameterCS__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group_3__0__Impl
+	rule__ParameterCS__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_3_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ParameterCS__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group_3__1__Impl
+	rule__ParameterCS__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getOwnedAnnotationsAssignment_3_1()); }
+(rule__ParameterCS__OwnedAnnotationsAssignment_3_1)*
+{ after(grammarAccess.getParameterCSAccess().getOwnedAnnotationsAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ParameterCS__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group_3__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_3_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ReferenceCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group__0__Impl
+	rule__ReferenceCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getAlternatives_0()); }
+(rule__ReferenceCS__Alternatives_0)?
+{ after(grammarAccess.getReferenceCSAccess().getAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group__1__Impl
+	rule__ReferenceCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getPropertyKeyword_1()); }
+
+	'property' 
+
+{ after(grammarAccess.getReferenceCSAccess().getPropertyKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group__2__Impl
+	rule__ReferenceCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getNameAssignment_2()); }
+(rule__ReferenceCS__NameAssignment_2)
+{ after(grammarAccess.getReferenceCSAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group__3__Impl
+	rule__ReferenceCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getGroup_3()); }
+(rule__ReferenceCS__Group_3__0)?
+{ after(grammarAccess.getReferenceCSAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group__4__Impl
+	rule__ReferenceCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getGroup_4()); }
+(rule__ReferenceCS__Group_4__0)?
+{ after(grammarAccess.getReferenceCSAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group__5__Impl
+	rule__ReferenceCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getGroup_5()); }
+(rule__ReferenceCS__Group_5__0)?
+{ after(grammarAccess.getReferenceCSAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group__6__Impl
+	rule__ReferenceCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getGroup_6()); }
+(rule__ReferenceCS__Group_6__0)?
+{ after(grammarAccess.getReferenceCSAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getAlternatives_7()); }
+(rule__ReferenceCS__Alternatives_7)
+{ after(grammarAccess.getReferenceCSAccess().getAlternatives_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ReferenceCS__Group_0_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_0_0__0__Impl
+	rule__ReferenceCS__Group_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_0_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_0_0()); }
+(rule__ReferenceCS__QualifiersAssignment_0_0_0)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_0_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_0_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_0_1()); }
+(rule__ReferenceCS__QualifiersAssignment_0_0_1)?
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ReferenceCS__Group_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_0_1__0__Impl
+	rule__ReferenceCS__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_1_0()); }
+(rule__ReferenceCS__QualifiersAssignment_0_1_0)
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_1_1()); }
+(rule__ReferenceCS__QualifiersAssignment_0_1_1)?
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersAssignment_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ReferenceCS__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_3__0__Impl
+	rule__ReferenceCS__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getNumberSignKeyword_3_0()); }
+
+	'#' 
+
+{ after(grammarAccess.getReferenceCSAccess().getNumberSignKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getReferredOppositeAssignment_3_1()); }
+(rule__ReferenceCS__ReferredOppositeAssignment_3_1)
+{ after(grammarAccess.getReferenceCSAccess().getReferredOppositeAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ReferenceCS__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_4__0__Impl
+	rule__ReferenceCS__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getColonKeyword_4_0()); }
+
+	':' 
+
+{ after(grammarAccess.getReferenceCSAccess().getColonKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getOwnedTypeAssignment_4_1()); }
+(rule__ReferenceCS__OwnedTypeAssignment_4_1)
+{ after(grammarAccess.getReferenceCSAccess().getOwnedTypeAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ReferenceCS__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_5__0__Impl
+	rule__ReferenceCS__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getEqualsSignKeyword_5_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getReferenceCSAccess().getEqualsSignKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getDefaultAssignment_5_1()); }
+(rule__ReferenceCS__DefaultAssignment_5_1)
+{ after(grammarAccess.getReferenceCSAccess().getDefaultAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ReferenceCS__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_6__0__Impl
+	rule__ReferenceCS__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_6__1__Impl
+	rule__ReferenceCS__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+(
+{ before(grammarAccess.getReferenceCSAccess().getGroup_6_1()); }
+(rule__ReferenceCS__Group_6_1__0)
+{ after(grammarAccess.getReferenceCSAccess().getGroup_6_1()); }
+)
+(
+{ before(grammarAccess.getReferenceCSAccess().getGroup_6_1()); }
+(rule__ReferenceCS__Group_6_1__0)*
+{ after(grammarAccess.getReferenceCSAccess().getGroup_6_1()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_6__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ReferenceCS__Group_6_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_6_1__0__Impl
+	rule__ReferenceCS__Group_6_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_6_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getAlternatives_6_1_0()); }
+(rule__ReferenceCS__Alternatives_6_1_0)
+{ after(grammarAccess.getReferenceCSAccess().getAlternatives_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_6_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_6_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_6_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1()); }
+(
+	',' 
+)?
+{ after(grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ReferenceCS__Group_7_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0__0__Impl
+	rule__ReferenceCS__Group_7_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_7_0_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_7_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_7_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0__1__Impl
+	rule__ReferenceCS__Group_7_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getAlternatives_7_0_1()); }
+(rule__ReferenceCS__Alternatives_7_0_1)*
+{ after(grammarAccess.getReferenceCSAccess().getAlternatives_7_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_7_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_7_0_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_7_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ReferenceCS__Group_7_0_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_1__0__Impl
+	rule__ReferenceCS__Group_7_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getKeyKeyword_7_0_1_1_0()); }
+
+	'key' 
+
+{ after(grammarAccess.getReferenceCSAccess().getKeyKeyword_7_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_7_0_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_1__1__Impl
+	rule__ReferenceCS__Group_7_0_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getReferredKeysAssignment_7_0_1_1_1()); }
+(rule__ReferenceCS__ReferredKeysAssignment_7_0_1_1_1)
+{ after(grammarAccess.getReferenceCSAccess().getReferredKeysAssignment_7_0_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_7_0_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_1__2__Impl
+	rule__ReferenceCS__Group_7_0_1_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_1_2()); }
+(rule__ReferenceCS__Group_7_0_1_1_2__0)*
+{ after(grammarAccess.getReferenceCSAccess().getGroup_7_0_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_7_0_1_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_1__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_1_3()); }
+
+	';' 
+
+{ after(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__ReferenceCS__Group_7_0_1_1_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_1_2__0__Impl
+	rule__ReferenceCS__Group_7_0_1_1_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_1_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getCommaKeyword_7_0_1_1_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getReferenceCSAccess().getCommaKeyword_7_0_1_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_7_0_1_1_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_1_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_1_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getReferredKeysAssignment_7_0_1_1_2_1()); }
+(rule__ReferenceCS__ReferredKeysAssignment_7_0_1_1_2_1)
+{ after(grammarAccess.getReferenceCSAccess().getReferredKeysAssignment_7_0_1_1_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ReferenceCS__Group_7_0_1_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_2__0__Impl
+	rule__ReferenceCS__Group_7_0_1_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()); }
+
+	'derivation' 
+
+{ after(grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_7_0_1_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_2__1__Impl
+	rule__ReferenceCS__Group_7_0_1_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()); }
+(	ruleUnrestrictedName)?
+{ after(grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_7_0_1_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_2__2__Impl
+	rule__ReferenceCS__Group_7_0_1_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()); }
+
+	':' 
+
+{ after(grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_7_0_1_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_2__3__Impl
+	rule__ReferenceCS__Group_7_0_1_2__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsAssignment_7_0_1_2_3()); }
+(rule__ReferenceCS__OwnedDefaultExpressionsAssignment_7_0_1_2_3)?
+{ after(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsAssignment_7_0_1_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_7_0_1_2__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_2__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_2__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4()); }
+
+	';' 
+
+{ after(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ReferenceCS__Group_7_0_1_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_3__0__Impl
+	rule__ReferenceCS__Group_7_0_1_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()); }
+
+	'initial' 
+
+{ after(grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_7_0_1_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_3__1__Impl
+	rule__ReferenceCS__Group_7_0_1_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()); }
+(	ruleUnrestrictedName)?
+{ after(grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_7_0_1_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_3__2__Impl
+	rule__ReferenceCS__Group_7_0_1_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()); }
+
+	':' 
+
+{ after(grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_7_0_1_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_3__3__Impl
+	rule__ReferenceCS__Group_7_0_1_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsAssignment_7_0_1_3_3()); }
+(rule__ReferenceCS__OwnedDefaultExpressionsAssignment_7_0_1_3_3)?
+{ after(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsAssignment_7_0_1_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ReferenceCS__Group_7_0_1_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ReferenceCS__Group_7_0_1_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__Group_7_0_1_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4()); }
+
+	';' 
+
+{ after(grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__StructuredClassCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group__0__Impl
+	rule__StructuredClassCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getIsAbstractAssignment_0()); }
+(rule__StructuredClassCS__IsAbstractAssignment_0)?
+{ after(grammarAccess.getStructuredClassCSAccess().getIsAbstractAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group__1__Impl
+	rule__StructuredClassCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getClassKeyword_1()); }
+
+	'class' 
+
+{ after(grammarAccess.getStructuredClassCSAccess().getClassKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group__2__Impl
+	rule__StructuredClassCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getNameAssignment_2()); }
+(rule__StructuredClassCS__NameAssignment_2)
+{ after(grammarAccess.getStructuredClassCSAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group__3__Impl
+	rule__StructuredClassCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getOwnedSignatureAssignment_3()); }
+(rule__StructuredClassCS__OwnedSignatureAssignment_3)?
+{ after(grammarAccess.getStructuredClassCSAccess().getOwnedSignatureAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group__4__Impl
+	rule__StructuredClassCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getGroup_4()); }
+(rule__StructuredClassCS__Group_4__0)?
+{ after(grammarAccess.getStructuredClassCSAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group__5__Impl
+	rule__StructuredClassCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getGroup_5()); }
+(rule__StructuredClassCS__Group_5__0)?
+{ after(grammarAccess.getStructuredClassCSAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group__6__Impl
+	rule__StructuredClassCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getGroup_6()); }
+(rule__StructuredClassCS__Group_6__0)?
+{ after(grammarAccess.getStructuredClassCSAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getAlternatives_7()); }
+(rule__StructuredClassCS__Alternatives_7)
+{ after(grammarAccess.getStructuredClassCSAccess().getAlternatives_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__StructuredClassCS__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group_4__0__Impl
+	rule__StructuredClassCS__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getExtendsKeyword_4_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getStructuredClassCSAccess().getExtendsKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group_4__1__Impl
+	rule__StructuredClassCS__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesAssignment_4_1()); }
+(rule__StructuredClassCS__OwnedSuperTypesAssignment_4_1)
+{ after(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group_4__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getGroup_4_2()); }
+(rule__StructuredClassCS__Group_4_2__0)*
+{ after(grammarAccess.getStructuredClassCSAccess().getGroup_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__StructuredClassCS__Group_4_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group_4_2__0__Impl
+	rule__StructuredClassCS__Group_4_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group_4_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getCommaKeyword_4_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getStructuredClassCSAccess().getCommaKeyword_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group_4_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group_4_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group_4_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesAssignment_4_2_1()); }
+(rule__StructuredClassCS__OwnedSuperTypesAssignment_4_2_1)
+{ after(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesAssignment_4_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__StructuredClassCS__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group_5__0__Impl
+	rule__StructuredClassCS__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getColonKeyword_5_0()); }
+
+	':' 
+
+{ after(grammarAccess.getStructuredClassCSAccess().getColonKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getInstanceClassNameAssignment_5_1()); }
+(rule__StructuredClassCS__InstanceClassNameAssignment_5_1)
+{ after(grammarAccess.getStructuredClassCSAccess().getInstanceClassNameAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__StructuredClassCS__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group_6__0__Impl
+	rule__StructuredClassCS__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getLeftCurlyBracketKeyword_6_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getStructuredClassCSAccess().getLeftCurlyBracketKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group_6__1__Impl
+	rule__StructuredClassCS__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getIsInterfaceAssignment_6_1()); }
+(rule__StructuredClassCS__IsInterfaceAssignment_6_1)?
+{ after(grammarAccess.getStructuredClassCSAccess().getIsInterfaceAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group_6__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getRightCurlyBracketKeyword_6_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getStructuredClassCSAccess().getRightCurlyBracketKeyword_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__StructuredClassCS__Group_7_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group_7_0__0__Impl
+	rule__StructuredClassCS__Group_7_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group_7_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getLeftCurlyBracketKeyword_7_0_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getStructuredClassCSAccess().getLeftCurlyBracketKeyword_7_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group_7_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group_7_0__1__Impl
+	rule__StructuredClassCS__Group_7_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group_7_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getAlternatives_7_0_1()); }
+(rule__StructuredClassCS__Alternatives_7_0_1)*
+{ after(grammarAccess.getStructuredClassCSAccess().getAlternatives_7_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StructuredClassCS__Group_7_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StructuredClassCS__Group_7_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__Group_7_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getRightCurlyBracketKeyword_7_0_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getStructuredClassCSAccess().getRightCurlyBracketKeyword_7_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__SysMLCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SysMLCS__Group__0__Impl
+	rule__SysMLCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SysMLCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSysMLCSAccess().getSysMLCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getSysMLCSAccess().getSysMLCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SysMLCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SysMLCS__Group__1__Impl
+	rule__SysMLCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SysMLCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSysMLCSAccess().getSysmlKeyword_1()); }
+
+	'sysml' 
+
+{ after(grammarAccess.getSysMLCSAccess().getSysmlKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SysMLCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SysMLCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SysMLCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSysMLCSAccess().getAlternatives_2()); }
+(rule__SysMLCS__Alternatives_2)
+{ after(grammarAccess.getSysMLCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__SysMLCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SysMLCS__Group_2_0__0__Impl
+	rule__SysMLCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SysMLCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSysMLCSAccess().getOwnedDetailsAssignment_2_0_0()); }
+(rule__SysMLCS__OwnedDetailsAssignment_2_0_0)
+{ after(grammarAccess.getSysMLCSAccess().getOwnedDetailsAssignment_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SysMLCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SysMLCS__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SysMLCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSysMLCSAccess().getSemicolonKeyword_2_0_1()); }
+
+	';' 
+
+{ after(grammarAccess.getSysMLCSAccess().getSemicolonKeyword_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__SysMLCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SysMLCS__Group_2_1__0__Impl
+	rule__SysMLCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SysMLCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSysMLCSAccess().getLeftCurlyBracketKeyword_2_1_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getSysMLCSAccess().getLeftCurlyBracketKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SysMLCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SysMLCS__Group_2_1__1__Impl
+	rule__SysMLCS__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SysMLCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSysMLCSAccess().getGroup_2_1_1()); }
+(rule__SysMLCS__Group_2_1_1__0)*
+{ after(grammarAccess.getSysMLCSAccess().getGroup_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SysMLCS__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SysMLCS__Group_2_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SysMLCS__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSysMLCSAccess().getRightCurlyBracketKeyword_2_1_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getSysMLCSAccess().getRightCurlyBracketKeyword_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__SysMLCS__Group_2_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SysMLCS__Group_2_1_1__0__Impl
+	rule__SysMLCS__Group_2_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SysMLCS__Group_2_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSysMLCSAccess().getOwnedDetailsAssignment_2_1_1_0()); }
+(rule__SysMLCS__OwnedDetailsAssignment_2_1_1_0)
+{ after(grammarAccess.getSysMLCSAccess().getOwnedDetailsAssignment_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SysMLCS__Group_2_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SysMLCS__Group_2_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SysMLCS__Group_2_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSysMLCSAccess().getSemicolonKeyword_2_1_1_1()); }
+
+	';' 
+
+{ after(grammarAccess.getSysMLCSAccess().getSemicolonKeyword_2_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypedMultiplicityRefCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedMultiplicityRefCS__Group__0__Impl
+	rule__TypedMultiplicityRefCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedMultiplicityRefCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getTypedRefCSParserRuleCall_0()); }
+	ruleTypedRefCS
+{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getTypedRefCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedMultiplicityRefCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedMultiplicityRefCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedMultiplicityRefCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityAssignment_1()); }
+(rule__TypedMultiplicityRefCS__OwnedMultiplicityAssignment_1)?
+{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TemplateBindingCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_0__0__Impl
+	rule__TemplateBindingCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_0__1__Impl
+	rule__TemplateBindingCS__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_0_1()); }
+(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_0_1)
+{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_0__2__Impl
+	rule__TemplateBindingCS__Group_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_0_2()); }
+(rule__TemplateBindingCS__Group_0_2__0)*
+{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group_0__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_0__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_0__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_0_3()); }
+
+	')' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_0_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TemplateBindingCS__Group_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_0_2__0__Impl
+	rule__TemplateBindingCS__Group_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_0_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_0_2_1()); }
+(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_0_2_1)
+{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TemplateBindingCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_1__0__Impl
+	rule__TemplateBindingCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getLessThanSignKeyword_1_0()); }
+
+	'<' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getLessThanSignKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_1__1__Impl
+	rule__TemplateBindingCS__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1_1()); }
+(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1_1)
+{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_1__2__Impl
+	rule__TemplateBindingCS__Group_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_1_2()); }
+(rule__TemplateBindingCS__Group_1_2__0)*
+{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_1__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getGreaterThanSignKeyword_1_3()); }
+
+	'>' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getGreaterThanSignKeyword_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TemplateBindingCS__Group_1_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_1_2__0__Impl
+	rule__TemplateBindingCS__Group_1_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_1_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_1_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group_1_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_1_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_1_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1_2_1()); }
+(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1_2_1)
+{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TemplateSignatureCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_0__0__Impl
+	rule__TemplateSignatureCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_0__1__Impl
+	rule__TemplateSignatureCS__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_1()); }
+(rule__TemplateSignatureCS__OwnedParametersAssignment_0_1)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_0__2__Impl
+	rule__TemplateSignatureCS__Group_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_0_2()); }
+(rule__TemplateSignatureCS__Group_0_2__0)*
+{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_0__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_0__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_0__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3()); }
+
+	')' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TemplateSignatureCS__Group_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_0_2__0__Impl
+	rule__TemplateSignatureCS__Group_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_2_1()); }
+(rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TemplateSignatureCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_1__0__Impl
+	rule__TemplateSignatureCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0()); }
+
+	'<' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_1__1__Impl
+	rule__TemplateSignatureCS__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_1()); }
+(rule__TemplateSignatureCS__OwnedParametersAssignment_1_1)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_1__2__Impl
+	rule__TemplateSignatureCS__Group_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_1_2()); }
+(rule__TemplateSignatureCS__Group_1_2__0)*
+{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_1__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3()); }
+
+	'>' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TemplateSignatureCS__Group_1_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_1_2__0__Impl
+	rule__TemplateSignatureCS__Group_1_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_1_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_1_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_1_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_1_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_2_1()); }
+(rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__URIPathNameCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIPathNameCS__Group__0__Impl
+	rule__URIPathNameCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIPathNameCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+(rule__URIPathNameCS__OwnedPathElementsAssignment_0)
+{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__URIPathNameCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIPathNameCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIPathNameCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIPathNameCSAccess().getGroup_1()); }
+(rule__URIPathNameCS__Group_1__0)*
+{ after(grammarAccess.getURIPathNameCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__URIPathNameCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIPathNameCS__Group_1__0__Impl
+	rule__URIPathNameCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIPathNameCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0()); }
+
+	'::' 
+
+{ after(grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__URIPathNameCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIPathNameCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIPathNameCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+(rule__URIPathNameCS__OwnedPathElementsAssignment_1_1)
+{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__URIFirstPathElementCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIFirstPathElementCS__Group_1__0__Impl
+	rule__URIFirstPathElementCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }
+(
+
+)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__URIFirstPathElementCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIFirstPathElementCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }
+(rule__URIFirstPathElementCS__ReferredElementAssignment_1_1)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionTypeCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group__0__Impl
+	rule__CollectionTypeCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }
+(rule__CollectionTypeCS__NameAssignment_0)
+{ after(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionTypeCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }
+(rule__CollectionTypeCS__Group_1__0)?
+{ after(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionTypeCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group_1__0__Impl
+	rule__CollectionTypeCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionTypeCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group_1__1__Impl
+	rule__CollectionTypeCS__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }
+(rule__CollectionTypeCS__OwnedTypeAssignment_1_1)
+{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionTypeCS__Group_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TupleTypeCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group__0__Impl
+	rule__TupleTypeCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }
+(rule__TupleTypeCS__NameAssignment_0)
+{ after(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }
+(rule__TupleTypeCS__Group_1__0)?
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TupleTypeCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1__0__Impl
+	rule__TupleTypeCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1__1__Impl
+	rule__TupleTypeCS__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }
+(rule__TupleTypeCS__Group_1_1__0)?
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TupleTypeCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1__0__Impl
+	rule__TupleTypeCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }
+(rule__TupleTypeCS__OwnedPartsAssignment_1_1_0)
+{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }
+(rule__TupleTypeCS__Group_1_1_1__0)*
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TupleTypeCS__Group_1_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1_1__0__Impl
+	rule__TupleTypeCS__Group_1_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }
+(rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1)
+{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TuplePartCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TuplePartCS__Group__0__Impl
+	rule__TuplePartCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }
+(rule__TuplePartCS__NameAssignment_0)
+{ after(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TuplePartCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TuplePartCS__Group__1__Impl
+	rule__TuplePartCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }
+
+	':' 
+
+{ after(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TuplePartCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TuplePartCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }
+(rule__TuplePartCS__OwnedTypeAssignment_2)
+{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__CollectionLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__0__Impl
+	rule__CollectionLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }
+(rule__CollectionLiteralExpCS__OwnedTypeAssignment_0)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__1__Impl
+	rule__CollectionLiteralExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__2__Impl
+	rule__CollectionLiteralExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }
+(rule__CollectionLiteralExpCS__Group_2__0)?
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__CollectionLiteralExpCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2__0__Impl
+	rule__CollectionLiteralExpCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }
+(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }
+(rule__CollectionLiteralExpCS__Group_2_1__0)*
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionLiteralExpCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2_1__0__Impl
+	rule__CollectionLiteralExpCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }
+(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionLiteralPartCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0__0__Impl
+	rule__CollectionLiteralPartCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }
+(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralPartCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }
+(rule__CollectionLiteralPartCS__Group_0_1__0)?
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionLiteralPartCS__Group_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0_1__0__Impl
+	rule__CollectionLiteralPartCS__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }
+
+	'..' 
+
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralPartCS__Group_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }
+(rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionPatternCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__0__Impl
+	rule__CollectionPatternCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }
+(rule__CollectionPatternCS__OwnedTypeAssignment_0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__1__Impl
+	rule__CollectionPatternCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__2__Impl
+	rule__CollectionPatternCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }
+(rule__CollectionPatternCS__Group_2__0)?
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__CollectionPatternCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2__0__Impl
+	rule__CollectionPatternCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }
+(rule__CollectionPatternCS__OwnedPartsAssignment_2_0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2__1__Impl
+	rule__CollectionPatternCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }
+(rule__CollectionPatternCS__Group_2_1__0)*
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }
+(rule__CollectionPatternCS__Group_2_2__0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__CollectionPatternCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_1__0__Impl
+	rule__CollectionPatternCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }
+(rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1)
+{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionPatternCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_2__0__Impl
+	rule__CollectionPatternCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }
+
+	'++' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }
+(rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1)
+{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ConstructorPartCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstructorPartCS__Group__0__Impl
+	rule__ConstructorPartCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }
+(rule__ConstructorPartCS__ReferredPropertyAssignment_0)
+{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstructorPartCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstructorPartCS__Group__1__Impl
+	rule__ConstructorPartCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstructorPartCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstructorPartCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }
+(rule__ConstructorPartCS__OwnedInitExpressionAssignment_2)
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PatternExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PatternExpCS__Group__0__Impl
+	rule__PatternExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }
+(rule__PatternExpCS__PatternVariableNameAssignment_0)?
+{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PatternExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PatternExpCS__Group__1__Impl
+	rule__PatternExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }
+
+	':' 
+
+{ after(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PatternExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PatternExpCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }
+(rule__PatternExpCS__OwnedPatternTypeAssignment_2)
+{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LambdaLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__0__Impl
+	rule__LambdaLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }
+
+	'Lambda' 
+
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__1__Impl
+	rule__LambdaLiteralExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaLiteralExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__2__Impl
+	rule__LambdaLiteralExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }
+(rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2)
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaLiteralExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TupleLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__0__Impl
+	rule__TupleLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }
+
+	'Tuple' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__1__Impl
+	rule__TupleLiteralExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__2__Impl
+	rule__TupleLiteralExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }
+(rule__TupleLiteralExpCS__OwnedPartsAssignment_2)
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__3__Impl
+	rule__TupleLiteralExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }
+(rule__TupleLiteralExpCS__Group_3__0)*
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__TupleLiteralExpCS__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group_3__0__Impl
+	rule__TupleLiteralExpCS__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }
+(rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1)
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TupleLiteralPartCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__0__Impl
+	rule__TupleLiteralPartCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }
+(rule__TupleLiteralPartCS__NameAssignment_0)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__1__Impl
+	rule__TupleLiteralPartCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }
+(rule__TupleLiteralPartCS__Group_1__0)?
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__2__Impl
+	rule__TupleLiteralPartCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }
+
+	'=' 
+
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }
+(rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TupleLiteralPartCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group_1__0__Impl
+	rule__TupleLiteralPartCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }
+
+	':' 
+
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }
+(rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__UnlimitedNaturalLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl
+	rule__UnlimitedNaturalLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__UnlimitedNaturalLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }
+
+	'*' 
+
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__InvalidLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvalidLiteralExpCS__Group__0__Impl
+	rule__InvalidLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvalidLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvalidLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvalidLiteralExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvalidLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }
+
+	'invalid' 
+
+{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NullLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NullLiteralExpCS__Group__0__Impl
+	rule__NullLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NullLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NullLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NullLiteralExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NullLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }
+
+	'null' 
+
+{ after(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeLiteralWithMultiplicityCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeLiteralWithMultiplicityCS__Group__0__Impl
+	rule__TypeLiteralWithMultiplicityCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralWithMultiplicityCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }
+	ruleTypeLiteralCS
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeLiteralWithMultiplicityCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeLiteralWithMultiplicityCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralWithMultiplicityCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }
+(rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1)?
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeNameExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group__0__Impl
+	rule__TypeNameExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+(rule__TypeNameExpCS__OwnedPathNameAssignment_0)
+{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }
+(rule__TypeNameExpCS__Group_1__0)?
+{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeNameExpCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1__0__Impl
+	rule__TypeNameExpCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }
+(rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0)
+{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }
+(rule__TypeNameExpCS__Group_1_1__0)?
+{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeNameExpCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1_1__0__Impl
+	rule__TypeNameExpCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1_1__1__Impl
+	rule__TypeNameExpCS__Group_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }
+(rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1)
+{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TypeExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeExpCS__Group__0__Impl
+	rule__TypeExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }
+(rule__TypeExpCS__Alternatives_0)
+{ after(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }
+(rule__TypeExpCS__OwnedMultiplicityAssignment_1)?
+{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ExpCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0__0__Impl
+	rule__ExpCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }
+	rulePrefixedPrimaryExpCS
+{ after(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExpCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getGroup_0_1()); }
+(rule__ExpCS__Group_0_1__0)?
+{ after(grammarAccess.getExpCSAccess().getGroup_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ExpCS__Group_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0_1__0__Impl
+	rule__ExpCS__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }
+(
+
+)
+{ after(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExpCS__Group_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0_1__1__Impl
+	rule__ExpCS__Group_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }
+(rule__ExpCS__NameAssignment_0_1_1)
+{ after(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExpCS__Group_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }
+(rule__ExpCS__OwnedRightAssignment_0_1_2)
+{ after(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PrefixedLetExpCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedLetExpCS__Group_0__0__Impl
+	rule__PrefixedLetExpCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }
+(
+
+)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedLetExpCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedLetExpCS__Group_0__1__Impl
+	rule__PrefixedLetExpCS__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }
+(rule__PrefixedLetExpCS__NameAssignment_0_1)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedLetExpCS__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedLetExpCS__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }
+(rule__PrefixedLetExpCS__OwnedRightAssignment_0_2)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PrefixedPrimaryExpCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedPrimaryExpCS__Group_0__0__Impl
+	rule__PrefixedPrimaryExpCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }
+(
+
+)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedPrimaryExpCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedPrimaryExpCS__Group_0__1__Impl
+	rule__PrefixedPrimaryExpCS__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }
+(rule__PrefixedPrimaryExpCS__NameAssignment_0_1)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedPrimaryExpCS__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedPrimaryExpCS__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }
+(rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NameExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__0__Impl
+	rule__NameExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+(rule__NameExpCS__OwnedPathNameAssignment_0)
+{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__1__Impl
+	rule__NameExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }
+(rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1)*
+{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__2__Impl
+	rule__NameExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }
+(rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2)?
+{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__3__Impl
+	rule__NameExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }
+(rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3)?
+{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getGroup_4()); }
+(rule__NameExpCS__Group_4__0)?
+{ after(grammarAccess.getNameExpCSAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NameExpCS__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group_4__0__Impl
+	rule__NameExpCS__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }
+(rule__NameExpCS__IsPreAssignment_4_0)
+{ after(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }
+
+	'pre' 
+
+{ after(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CurlyBracketedClauseCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__0__Impl
+	rule__CurlyBracketedClauseCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__1__Impl
+	rule__CurlyBracketedClauseCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__2__Impl
+	rule__CurlyBracketedClauseCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }
+(rule__CurlyBracketedClauseCS__Alternatives_2)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__CurlyBracketedClauseCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0__0__Impl
+	rule__CurlyBracketedClauseCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }
+(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }
+(rule__CurlyBracketedClauseCS__Group_2_0_1__0)*
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl
+	rule__CurlyBracketedClauseCS__Group_2_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }
+(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__0__Impl
+	rule__RoundBracketedClauseCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__1__Impl
+	rule__RoundBracketedClauseCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__2__Impl
+	rule__RoundBracketedClauseCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }
+(rule__RoundBracketedClauseCS__Group_2__0)?
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }
+
+	')' 
+
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__0__Impl
+	rule__RoundBracketedClauseCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__1__Impl
+	rule__RoundBracketedClauseCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__2__Impl
+	rule__RoundBracketedClauseCS__Group_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }
+(rule__RoundBracketedClauseCS__Group_2_2__0)?
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }
+(rule__RoundBracketedClauseCS__Group_2_3__0)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_2__0__Impl
+	rule__RoundBracketedClauseCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group_2_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_3__0__Impl
+	rule__RoundBracketedClauseCS__Group_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__SquareBracketedClauseCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__0__Impl
+	rule__SquareBracketedClauseCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__1__Impl
+	rule__SquareBracketedClauseCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }
+(rule__SquareBracketedClauseCS__OwnedTermsAssignment_1)
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__2__Impl
+	rule__SquareBracketedClauseCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }
+(rule__SquareBracketedClauseCS__Group_2__0)*
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }
+
+	']' 
+
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__SquareBracketedClauseCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group_2__0__Impl
+	rule__SquareBracketedClauseCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }
+(rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1)
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0__0__Impl
+	rule__NavigatingArgCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }
+(rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }
+(rule__NavigatingArgCS__Alternatives_0_1)?
+{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0_1_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0__0__Impl
+	rule__NavigatingArgCS__Group_0_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0__1__Impl
+	rule__NavigatingArgCS__Group_0_1_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }
+(rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }
+(rule__NavigatingArgCS__Group_0_1_0_2__0)?
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0_1_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0_2__0__Impl
+	rule__NavigatingArgCS__Group_0_1_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }
+(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_1__0__Impl
+	rule__NavigatingArgCS__Group_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }
+
+	'in' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }
+(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_1__0__Impl
+	rule__NavigatingArgCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }
+(rule__NavigatingArgCS__OwnedTypeAssignment_1_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingBarArgCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group__0__Impl
+	rule__NavigatingBarArgCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }
+(rule__NavigatingBarArgCS__PrefixAssignment_0)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group__1__Impl
+	rule__NavigatingBarArgCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+(rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }
+(rule__NavigatingBarArgCS__Group_2__0)?
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingBarArgCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2__0__Impl
+	rule__NavigatingBarArgCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2__1__Impl
+	rule__NavigatingBarArgCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }
+(rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }
+(rule__NavigatingBarArgCS__Group_2_2__0)?
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingBarArgCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2_2__0__Impl
+	rule__NavigatingBarArgCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+(rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group__0__Impl
+	rule__NavigatingCommaArgCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }
+(rule__NavigatingCommaArgCS__PrefixAssignment_0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group__1__Impl
+	rule__NavigatingCommaArgCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+(rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }
+(rule__NavigatingCommaArgCS__Alternatives_2)?
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0__0__Impl
+	rule__NavigatingCommaArgCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0__1__Impl
+	rule__NavigatingCommaArgCS__Group_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }
+(rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }
+(rule__NavigatingCommaArgCS__Group_2_0_2__0)?
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group_2_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl
+	rule__NavigatingCommaArgCS__Group_2_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }
+(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_1__0__Impl
+	rule__NavigatingCommaArgCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }
+
+	'in' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }
+(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingSemiArgCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group__0__Impl
+	rule__NavigatingSemiArgCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }
+(rule__NavigatingSemiArgCS__PrefixAssignment_0)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group__1__Impl
+	rule__NavigatingSemiArgCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+(rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }
+(rule__NavigatingSemiArgCS__Group_2__0)?
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingSemiArgCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2__0__Impl
+	rule__NavigatingSemiArgCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2__1__Impl
+	rule__NavigatingSemiArgCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }
+(rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }
+(rule__NavigatingSemiArgCS__Group_2_2__0)?
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingSemiArgCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2_2__0__Impl
+	rule__NavigatingSemiArgCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+(rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__IfExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__0__Impl
+	rule__IfExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }
+
+	'if' 
+
+{ after(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__1__Impl
+	rule__IfExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }
+(rule__IfExpCS__OwnedConditionAssignment_1)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__2__Impl
+	rule__IfExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }
+
+	'then' 
+
+{ after(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__3__Impl
+	rule__IfExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+(rule__IfExpCS__OwnedThenExpressionAssignment_3)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__4__Impl
+	rule__IfExpCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }
+(rule__IfExpCS__OwnedIfThenExpressionsAssignment_4)*
+{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__5__Impl
+	rule__IfExpCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }
+
+	'else' 
+
+{ after(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__6__Impl
+	rule__IfExpCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }
+(rule__IfExpCS__OwnedElseExpressionAssignment_6)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }
+
+	'endif' 
+
+{ after(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ElseIfThenExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__0__Impl
+	rule__ElseIfThenExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }
+
+	'elseif' 
+
+{ after(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ElseIfThenExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__1__Impl
+	rule__ElseIfThenExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }
+(rule__ElseIfThenExpCS__OwnedConditionAssignment_1)
+{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ElseIfThenExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__2__Impl
+	rule__ElseIfThenExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }
+
+	'then' 
+
+{ after(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ElseIfThenExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+(rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3)
+{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__LetExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__0__Impl
+	rule__LetExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }
+
+	'let' 
+
+{ after(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__1__Impl
+	rule__LetExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }
+(rule__LetExpCS__OwnedVariablesAssignment_1)
+{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__2__Impl
+	rule__LetExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getGroup_2()); }
+(rule__LetExpCS__Group_2__0)*
+{ after(grammarAccess.getLetExpCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__3__Impl
+	rule__LetExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }
+
+	'in' 
+
+{ after(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }
+(rule__LetExpCS__OwnedInExpressionAssignment_4)
+{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LetExpCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group_2__0__Impl
+	rule__LetExpCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }
+(rule__LetExpCS__OwnedVariablesAssignment_2_1)
+{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LetVariableCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__0__Impl
+	rule__LetVariableCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }
+(rule__LetVariableCS__NameAssignment_0)
+{ after(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__1__Impl
+	rule__LetVariableCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }
+(rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1)?
+{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__2__Impl
+	rule__LetVariableCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getGroup_2()); }
+(rule__LetVariableCS__Group_2__0)?
+{ after(grammarAccess.getLetVariableCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__3__Impl
+	rule__LetVariableCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }
+
+	'=' 
+
+{ after(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }
+(rule__LetVariableCS__OwnedInitExpressionAssignment_4)
+{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LetVariableCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group_2__0__Impl
+	rule__LetVariableCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }
+(rule__LetVariableCS__OwnedTypeAssignment_2_1)
+{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NestedExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NestedExpCS__Group__0__Impl
+	rule__NestedExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NestedExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NestedExpCS__Group__1__Impl
+	rule__NestedExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }
+(rule__NestedExpCS__OwnedExpressionAssignment_1)
+{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NestedExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NestedExpCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }
+
+	')' 
+
+{ after(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__SelfExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SelfExpCS__Group__0__Impl
+	rule__SelfExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SelfExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SelfExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SelfExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SelfExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }
+
+	'self' 
+
+{ after(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MultiplicityBoundsCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group__0__Impl
+	rule__MultiplicityBoundsCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }
+(rule__MultiplicityBoundsCS__LowerBoundAssignment_0)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityBoundsCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }
+(rule__MultiplicityBoundsCS__Group_1__0)?
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MultiplicityBoundsCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group_1__0__Impl
+	rule__MultiplicityBoundsCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }
+
+	'..' 
+
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityBoundsCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }
+(rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MultiplicityCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityCS__Group__0__Impl
+	rule__MultiplicityCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityCS__Group__1__Impl
+	rule__MultiplicityCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }
+(rule__MultiplicityCS__Alternatives_1)
+{ after(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }
+
+	']' 
+
+{ after(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PathNameCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group__0__Impl
+	rule__PathNameCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+(rule__PathNameCS__OwnedPathElementsAssignment_0)
+{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PathNameCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getGroup_1()); }
+(rule__PathNameCS__Group_1__0)*
+{ after(grammarAccess.getPathNameCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PathNameCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group_1__0__Impl
+	rule__PathNameCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }
+
+	'::' 
+
+{ after(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PathNameCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+(rule__PathNameCS__OwnedPathElementsAssignment_1_1)
+{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeParameterCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group__0__Impl
+	rule__TypeParameterCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }
+(rule__TypeParameterCS__NameAssignment_0)
+{ after(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }
+(rule__TypeParameterCS__Alternatives_1)?
+{ after(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__0__Impl
+	rule__TypeParameterCS__Group_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__1__Impl
+	rule__TypeParameterCS__Group_1_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }
+(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }
+(rule__TypeParameterCS__Group_1_0_2__0)*
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0_2__0__Impl
+	rule__TypeParameterCS__Group_1_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }
+
+	'&&' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }
+(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_1__0__Impl
+	rule__TypeParameterCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }
+
+	'super' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }
+(rule__TypeParameterCS__OwnedSuperAssignment_1_1_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypedTypeRefCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedTypeRefCS__Group__0__Impl
+	rule__TypedTypeRefCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }
+(rule__TypedTypeRefCS__OwnedPathNameAssignment_0)
+{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedTypeRefCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedTypeRefCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }
+(rule__TypedTypeRefCS__OwnedBindingAssignment_1)?
+{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__0__Impl
+	rule__WildcardTypeRefCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__1__Impl
+	rule__WildcardTypeRefCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }
+
+	'?' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }
+(rule__WildcardTypeRefCS__Alternatives_2)?
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_0__0__Impl
+	rule__WildcardTypeRefCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }
+(rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_1__0__Impl
+	rule__WildcardTypeRefCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }
+
+	'super' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }
+(rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+rule__TopLevelCS__OwnedLibrariesAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTopLevelCSAccess().getOwnedLibrariesLibraryCSParserRuleCall_2_0()); }
+	ruleLibraryCS{ after(grammarAccess.getTopLevelCSAccess().getOwnedLibrariesLibraryCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TopLevelCS__OwnedImportsAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTopLevelCSAccess().getOwnedImportsImportCSParserRuleCall_3_0()); }
+	ruleImportCS{ after(grammarAccess.getTopLevelCSAccess().getOwnedImportsImportCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TopLevelCS__OwnedPackagesAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTopLevelCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0()); }
+	rulePackageCS{ after(grammarAccess.getTopLevelCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__IsCallableAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getIsCallableCallableKeyword_0_0()); }
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getIsCallableCallableKeyword_0_0()); }
+
+	'callable' 
+
+{ after(grammarAccess.getInvariantConstraintCSAccess().getIsCallableCallableKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getInvariantConstraintCSAccess().getIsCallableCallableKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__StereotypeAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getStereotypeInvariantKeyword_1_0()); }
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getStereotypeInvariantKeyword_1_0()); }
+
+	'invariant' 
+
+{ after(grammarAccess.getInvariantConstraintCSAccess().getStereotypeInvariantKeyword_1_0()); }
+)
+
+{ after(grammarAccess.getInvariantConstraintCSAccess().getStereotypeInvariantKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__NameAssignment_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_2_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getInvariantConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__OwnedMessageSpecificationAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_2_1_1_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getInvariantConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvariantConstraintCS__OwnedSpecificationAssignment_3_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvariantConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0_1_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getInvariantConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostconditionConstraintCS__StereotypeAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getStereotypePostconditionKeyword_0_0()); }
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getStereotypePostconditionKeyword_0_0()); }
+
+	'postcondition' 
+
+{ after(grammarAccess.getPostconditionConstraintCSAccess().getStereotypePostconditionKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getPostconditionConstraintCSAccess().getStereotypePostconditionKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostconditionConstraintCS__NameAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getPostconditionConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostconditionConstraintCS__OwnedMessageSpecificationAssignment_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getPostconditionConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostconditionConstraintCS__OwnedSpecificationAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostconditionConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getPostconditionConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreconditionConstraintCS__StereotypeAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getStereotypePreconditionKeyword_0_0()); }
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getStereotypePreconditionKeyword_0_0()); }
+
+	'precondition' 
+
+{ after(grammarAccess.getPreconditionConstraintCSAccess().getStereotypePreconditionKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getPreconditionConstraintCSAccess().getStereotypePreconditionKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreconditionConstraintCS__NameAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getPreconditionConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreconditionConstraintCS__OwnedMessageSpecificationAssignment_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getPreconditionConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreconditionConstraintCS__OwnedSpecificationAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreconditionConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getPreconditionConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__NameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getNameAlternatives_2_0()); }
+(rule__AnnotationCS__NameAlternatives_2_0)
+{ after(grammarAccess.getAnnotationCSAccess().getNameAlternatives_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__OwnedDetailsAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); }
+	ruleDetailCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__OwnedDetailsAssignment_3_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); }
+	ruleDetailCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__OwnedAnnotationsAssignment_4_0_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_0_1_0_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__OwnedContentsAssignment_4_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedContentsModelElementCSParserRuleCall_4_0_1_1_0()); }
+	ruleModelElementCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedContentsModelElementCSParserRuleCall_4_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__OwnedReferencesAssignment_4_0_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedReferencesModelElementRefCSParserRuleCall_4_0_1_2_0()); }
+	ruleModelElementRefCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedReferencesModelElementRefCSParserRuleCall_4_0_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_0_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }
+
+	'static' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_0_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }
+
+	'definition' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_0_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }
+
+	'definition' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }
+
+	'static' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__NameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getAttributeCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__OwnedTypeAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_3_1_0()); }
+	ruleTypedMultiplicityRefCS{ after(grammarAccess.getAttributeCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__DefaultAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getDefaultSINGLE_QUOTED_STRINGTerminalRuleCall_4_1_0()); }
+	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getAttributeCSAccess().getDefaultSINGLE_QUOTED_STRINGTerminalRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_0_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_0_0()); }
+
+	'derived' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_0_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_1_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_1_0()); }
+
+	'!derived' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_1_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_2_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_2_0()); }
+
+	'id' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_2_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_3_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_3_0()); }
+
+	'!id' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_3_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_4_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_4_0()); }
+
+	'ordered' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_4_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_5_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_5_0()); }
+
+	'!ordered' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_5_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_6_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_6_0()); }
+
+	'readonly' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_6_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_7_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_7_0()); }
+
+	'!readonly' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_7_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_8_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_8_0()); }
+
+	'transient' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_8_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_9_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_9_0()); }
+
+	'!transient' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_9_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_10_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_10_0()); }
+
+	'unique' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_10_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_11_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_11_0()); }
+
+	'!unique' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_11_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_12_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_12_0()); }
+
+	'unsettable' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_12_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_13_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_13_0()); }
+
+	'!unsettable' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_13_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_13_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_14
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_14_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_14_0()); }
+
+	'volatile' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_14_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_14_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__QualifiersAssignment_5_1_0_15
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_15_0()); }
+(
+{ before(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_15_0()); }
+
+	'!volatile' 
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_15_0()); }
+)
+
+{ after(grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_15_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__OwnedAnnotationsAssignment_6_0_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getAttributeCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__OwnedDefaultExpressionsAssignment_6_0_1_1_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_6_0_1_1_3_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_6_0_1_1_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeCS__OwnedDefaultExpressionsAssignment_6_0_1_2_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_6_0_1_2_3_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_6_0_1_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__IsPrimitiveAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getIsPrimitivePrimitiveKeyword_0_0()); }
+(
+{ before(grammarAccess.getDataTypeCSAccess().getIsPrimitivePrimitiveKeyword_0_0()); }
+
+	'primitive' 
+
+{ after(grammarAccess.getDataTypeCSAccess().getIsPrimitivePrimitiveKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getDataTypeCSAccess().getIsPrimitivePrimitiveKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__NameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getDataTypeCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__OwnedSignatureAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); }
+	ruleTemplateSignatureCS{ after(grammarAccess.getDataTypeCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__InstanceClassNameAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_4_1_0()); }
+	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getDataTypeCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__IsSerializableAssignment_5_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getIsSerializableSerializableKeyword_5_1_0_0()); }
+(
+{ before(grammarAccess.getDataTypeCSAccess().getIsSerializableSerializableKeyword_5_1_0_0()); }
+
+	'serializable' 
+
+{ after(grammarAccess.getDataTypeCSAccess().getIsSerializableSerializableKeyword_5_1_0_0()); }
+)
+
+{ after(grammarAccess.getDataTypeCSAccess().getIsSerializableSerializableKeyword_5_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__OwnedAnnotationsAssignment_6_0_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getDataTypeCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeCS__OwnedConstraintsAssignment_6_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_6_0_1_1_0()); }
+	ruleInvariantConstraintCS{ after(grammarAccess.getDataTypeCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_6_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DetailCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDetailCSAccess().getNameAlternatives_0_0()); }
+(rule__DetailCS__NameAlternatives_0_0)
+{ after(grammarAccess.getDetailCSAccess().getNameAlternatives_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DetailCS__ValuesAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDetailCSAccess().getValuesAlternatives_2_0()); }
+(rule__DetailCS__ValuesAlternatives_2_0)
+{ after(grammarAccess.getDetailCSAccess().getValuesAlternatives_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__ValueAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getValueSINGLE_QUOTED_STRINGTerminalRuleCall_2_0()); }
+	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getDocumentationCSAccess().getValueSINGLE_QUOTED_STRINGTerminalRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__OwnedDetailsAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); }
+	ruleDetailCS{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__OwnedDetailsAssignment_3_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); }
+	ruleDetailCS{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getNameUnrestrictedNameParserRuleCall_1_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getEnumerationCSAccess().getNameUnrestrictedNameParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__OwnedSignatureAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }
+	ruleTemplateSignatureCS{ after(grammarAccess.getEnumerationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__InstanceClassNameAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_3_1_0()); }
+	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getEnumerationCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__IsSerializableAssignment_4_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getIsSerializableSerializableKeyword_4_1_0_0()); }
+(
+{ before(grammarAccess.getEnumerationCSAccess().getIsSerializableSerializableKeyword_4_1_0_0()); }
+
+	'serializable' 
+
+{ after(grammarAccess.getEnumerationCSAccess().getIsSerializableSerializableKeyword_4_1_0_0()); }
+)
+
+{ after(grammarAccess.getEnumerationCSAccess().getIsSerializableSerializableKeyword_4_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__OwnedAnnotationsAssignment_5_0_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_5_0_1_0_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getEnumerationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_5_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__OwnedLiteralsAssignment_5_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getOwnedLiteralsEnumerationLiteralCSParserRuleCall_5_0_1_1_0()); }
+	ruleEnumerationLiteralCS{ after(grammarAccess.getEnumerationCSAccess().getOwnedLiteralsEnumerationLiteralCSParserRuleCall_5_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationCS__OwnedConstraintsAssignment_5_0_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_5_0_1_2_0()); }
+	ruleInvariantConstraintCS{ after(grammarAccess.getEnumerationCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_5_0_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__NameAssignment_0_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_1_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getEnumerationLiteralCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__NameAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getNameEnumerationLiteralNameParserRuleCall_0_1_0()); }
+	ruleEnumerationLiteralName{ after(grammarAccess.getEnumerationLiteralCSAccess().getNameEnumerationLiteralNameParserRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__ValueAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getValueSIGNEDParserRuleCall_1_1_0()); }
+	ruleSIGNED{ after(grammarAccess.getEnumerationLiteralCSAccess().getValueSIGNEDParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EnumerationLiteralCS__OwnedAnnotationsAssignment_2_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEnumerationLiteralCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_2_0_1_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getEnumerationLiteralCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__NameAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getImportCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__OwnedPathNameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getOwnedPathNameURIPathNameCSParserRuleCall_2_0()); }
+	ruleURIPathNameCS{ after(grammarAccess.getImportCSAccess().getOwnedPathNameURIPathNameCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ImportCS__IsAllAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }
+(
+{ before(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }
+
+	'::*' 
+
+{ after(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }
+)
+
+{ after(grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibraryCS__NameAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getLibraryCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibraryCS__ReferredPackageAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_2_0()); }
+(
+{ before(grammarAccess.getLibraryCSAccess().getReferredPackagePackageURIParserRuleCall_2_0_1()); }
+	ruleURI{ after(grammarAccess.getLibraryCSAccess().getReferredPackagePackageURIParserRuleCall_2_0_1()); }
+)
+{ after(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ModelElementRefCS__OwnedPathNameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getModelElementRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); }
+	rulePathNameCS{ after(grammarAccess.getModelElementRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__QualifiersAssignment_0_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }
+
+	'static' 
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }
+)
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__QualifiersAssignment_0_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }
+
+	'definition' 
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }
+)
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__QualifiersAssignment_0_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }
+
+	'definition' 
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }
+)
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__QualifiersAssignment_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }
+
+	'static' 
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }
+)
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__OwnedSignatureAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }
+	ruleTemplateSignatureCS{ after(grammarAccess.getOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__NameAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getNameUnrestrictedNameParserRuleCall_3_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getOperationCSAccess().getNameUnrestrictedNameParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__OwnedParametersAssignment_5_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_0_0()); }
+	ruleParameterCS{ after(grammarAccess.getOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__OwnedParametersAssignment_5_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_1_1_0()); }
+	ruleParameterCS{ after(grammarAccess.getOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__OwnedTypeAssignment_7_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_7_1_0()); }
+	ruleTypedMultiplicityRefCS{ after(grammarAccess.getOperationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_7_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__OwnedExceptionsAssignment_8_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedExceptionsTypedRefCSParserRuleCall_8_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getOperationCSAccess().getOwnedExceptionsTypedRefCSParserRuleCall_8_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__OwnedExceptionsAssignment_8_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedExceptionsTypedRefCSParserRuleCall_8_2_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getOperationCSAccess().getOwnedExceptionsTypedRefCSParserRuleCall_8_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__QualifiersAssignment_9_1_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_0_0()); }
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_0_0()); }
+
+	'derived' 
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_0_0()); }
+)
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__QualifiersAssignment_9_1_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_1_0()); }
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_1_0()); }
+
+	'!derived' 
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_1_0()); }
+)
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__QualifiersAssignment_9_1_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_2_0()); }
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_2_0()); }
+
+	'ordered' 
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_2_0()); }
+)
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__QualifiersAssignment_9_1_0_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_3_0()); }
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_3_0()); }
+
+	'!ordered' 
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_3_0()); }
+)
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__QualifiersAssignment_9_1_0_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_4_0()); }
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_4_0()); }
+
+	'unique' 
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_4_0()); }
+)
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__QualifiersAssignment_9_1_0_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_5_0()); }
+(
+{ before(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_5_0()); }
+
+	'!unique' 
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_5_0()); }
+)
+
+{ after(grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__OwnedAnnotationsAssignment_10_0_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_10_0_1_0_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getOperationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_10_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__OwnedPreconditionsAssignment_10_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedPreconditionsPreconditionConstraintCSParserRuleCall_10_0_1_1_0()); }
+	rulePreconditionConstraintCS{ after(grammarAccess.getOperationCSAccess().getOwnedPreconditionsPreconditionConstraintCSParserRuleCall_10_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__OwnedBodyExpressionsAssignment_10_0_1_2_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedBodyExpressionsSpecificationCSParserRuleCall_10_0_1_2_3_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getOperationCSAccess().getOwnedBodyExpressionsSpecificationCSParserRuleCall_10_0_1_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__OwnedPostconditionsAssignment_10_0_1_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getOwnedPostconditionsPostconditionConstraintCSParserRuleCall_10_0_1_3_0()); }
+	rulePostconditionConstraintCS{ after(grammarAccess.getOperationCSAccess().getOwnedPostconditionsPostconditionConstraintCSParserRuleCall_10_0_1_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getNameUnrestrictedNameParserRuleCall_1_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getPackageCSAccess().getNameUnrestrictedNameParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__NsPrefixAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getNsPrefixUnrestrictedNameParserRuleCall_2_1_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getPackageCSAccess().getNsPrefixUnrestrictedNameParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__NsURIAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getNsURIURIParserRuleCall_3_1_0()); }
+	ruleURI{ after(grammarAccess.getPackageCSAccess().getNsURIURIParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__OwnedAnnotationsAssignment_4_0_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_0_1_0_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__OwnedPackagesAssignment_4_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_1_1_0()); }
+	rulePackageCS{ after(grammarAccess.getPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__OwnedClassesAssignment_4_0_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_0_1_2_0()); }
+	ruleClassCS{ after(grammarAccess.getPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_0_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__OwnedTypeAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_1_1_0()); }
+	ruleTypedMultiplicityRefCS{ after(grammarAccess.getParameterCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__QualifiersAssignment_2_1_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_0_0()); }
+(
+{ before(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_0_0()); }
+
+	'ordered' 
+
+{ after(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_0_0()); }
+)
+
+{ after(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__QualifiersAssignment_2_1_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_1_0()); }
+(
+{ before(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_1_0()); }
+
+	'!ordered' 
+
+{ after(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_1_0()); }
+)
+
+{ after(grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__QualifiersAssignment_2_1_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_2_0()); }
+(
+{ before(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_2_0()); }
+
+	'unique' 
+
+{ after(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_2_0()); }
+)
+
+{ after(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__QualifiersAssignment_2_1_0_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_3_0()); }
+(
+{ before(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_3_0()); }
+
+	'!unique' 
+
+{ after(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_3_0()); }
+)
+
+{ after(grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__OwnedAnnotationsAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_3_1_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getParameterCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_0_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }
+
+	'static' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_0_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }
+
+	'definition' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_0_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }
+
+	'definition' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }
+
+	'static' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__NameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getReferenceCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__ReferredOppositeAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getReferredOppositePropertyCrossReference_3_1_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getReferredOppositePropertyUnrestrictedNameParserRuleCall_3_1_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getReferenceCSAccess().getReferredOppositePropertyUnrestrictedNameParserRuleCall_3_1_0_1()); }
+)
+{ after(grammarAccess.getReferenceCSAccess().getReferredOppositePropertyCrossReference_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__OwnedTypeAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_4_1_0()); }
+	ruleTypedMultiplicityRefCS{ after(grammarAccess.getReferenceCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__DefaultAssignment_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getDefaultSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0()); }
+	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getReferenceCSAccess().getDefaultSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_0_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_0_0()); }
+
+	'composes' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_0_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_1_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_1_0()); }
+
+	'!composes' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_1_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_2_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_2_0()); }
+
+	'derived' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_2_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_3_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_3_0()); }
+
+	'!derived' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_3_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_4_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_4_0()); }
+
+	'ordered' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_4_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_5_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_5_0()); }
+
+	'!ordered' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_5_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_6_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_6_0()); }
+
+	'readonly' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_6_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_7_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_7_0()); }
+
+	'!readonly' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_7_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_8_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_8_0()); }
+
+	'resolve' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_8_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_9_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_9_0()); }
+
+	'!resolve' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_9_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_10_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_10_0()); }
+
+	'transient' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_10_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_11_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_11_0()); }
+
+	'!transient' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_11_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_12_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_12_0()); }
+
+	'unique' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_12_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_13_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_13_0()); }
+
+	'!unique' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_13_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_13_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_14
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_14_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_14_0()); }
+
+	'unsettable' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_14_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_14_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_15
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_15_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_15_0()); }
+
+	'!unsettable' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_15_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_15_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_16
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_16_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_16_0()); }
+
+	'volatile' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_16_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_16_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__QualifiersAssignment_6_1_0_17
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_17_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_17_0()); }
+
+	'!volatile' 
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_17_0()); }
+)
+
+{ after(grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_17_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__OwnedAnnotationsAssignment_7_0_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getReferenceCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__ReferredKeysAssignment_7_0_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyCrossReference_7_0_1_1_1_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyUnrestrictedNameParserRuleCall_7_0_1_1_1_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyUnrestrictedNameParserRuleCall_7_0_1_1_1_0_1()); }
+)
+{ after(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyCrossReference_7_0_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__ReferredKeysAssignment_7_0_1_1_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyCrossReference_7_0_1_1_2_1_0()); }
+(
+{ before(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyUnrestrictedNameParserRuleCall_7_0_1_1_2_1_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyUnrestrictedNameParserRuleCall_7_0_1_1_2_1_0_1()); }
+)
+{ after(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyCrossReference_7_0_1_1_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__OwnedDefaultExpressionsAssignment_7_0_1_2_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_7_0_1_2_3_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_7_0_1_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReferenceCS__OwnedDefaultExpressionsAssignment_7_0_1_3_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_7_0_1_3_3_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_7_0_1_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpecificationCS__OwnedExpressionAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0()); }
+	ruleExpCS{ after(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpecificationCS__ExprStringAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); }
+	RULE_UNQUOTED_STRING{ after(grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__IsAbstractAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getIsAbstractAbstractKeyword_0_0()); }
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getIsAbstractAbstractKeyword_0_0()); }
+
+	'abstract' 
+
+{ after(grammarAccess.getStructuredClassCSAccess().getIsAbstractAbstractKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getStructuredClassCSAccess().getIsAbstractAbstractKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__NameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getStructuredClassCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__OwnedSignatureAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); }
+	ruleTemplateSignatureCS{ after(grammarAccess.getStructuredClassCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__OwnedSuperTypesAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__OwnedSuperTypesAssignment_4_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_2_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__InstanceClassNameAssignment_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0()); }
+	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getStructuredClassCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__IsInterfaceAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getIsInterfaceInterfaceKeyword_6_1_0()); }
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getIsInterfaceInterfaceKeyword_6_1_0()); }
+
+	'interface' 
+
+{ after(grammarAccess.getStructuredClassCSAccess().getIsInterfaceInterfaceKeyword_6_1_0()); }
+)
+
+{ after(grammarAccess.getStructuredClassCSAccess().getIsInterfaceInterfaceKeyword_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__OwnedAnnotationsAssignment_7_0_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getStructuredClassCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__OwnedOperationsAssignment_7_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getOwnedOperationsOperationCSParserRuleCall_7_0_1_1_0()); }
+	ruleOperationCS{ after(grammarAccess.getStructuredClassCSAccess().getOwnedOperationsOperationCSParserRuleCall_7_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__OwnedPropertiesAssignment_7_0_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getOwnedPropertiesStructuralFeatureCSParserRuleCall_7_0_1_2_0()); }
+	ruleStructuralFeatureCS{ after(grammarAccess.getStructuredClassCSAccess().getOwnedPropertiesStructuralFeatureCSParserRuleCall_7_0_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StructuredClassCS__OwnedConstraintsAssignment_7_0_1_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStructuredClassCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_7_0_1_3_0()); }
+	ruleInvariantConstraintCS{ after(grammarAccess.getStructuredClassCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_7_0_1_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SysMLCS__OwnedDetailsAssignment_2_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSysMLCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_0_0_0()); }
+	ruleDetailCS{ after(grammarAccess.getSysMLCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SysMLCS__OwnedDetailsAssignment_2_1_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSysMLCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_1_1_0_0()); }
+	ruleDetailCS{ after(grammarAccess.getSysMLCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_1_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedMultiplicityRefCS__OwnedMultiplicityAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+	ruleMultiplicityCS{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__OwnedSubstitutionsAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_0_1_0()); }
+	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__OwnedSubstitutionsAssignment_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_0_2_1_0()); }
+	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_1_0()); }
+	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_2_1_0()); }
+	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__OwnedParametersAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_1_0()); }
+	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__OwnedParametersAssignment_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_2_1_0()); }
+	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__OwnedParametersAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_1_0()); }
+	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__OwnedParametersAssignment_1_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_2_1_0()); }
+	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__URIPathNameCS__OwnedPathElementsAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsURIFirstPathElementCSParserRuleCall_0_0()); }
+	ruleURIFirstPathElementCS{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsURIFirstPathElementCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIPathNameCS__OwnedPathElementsAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }
+	ruleNextPathElementCS{ after(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__ReferredElementAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }
+)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__ReferredElementAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }
+	ruleURI{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }
+)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimitiveTypeCS__NameAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }
+	rulePrimitiveTypeIdentifier{ after(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }
+	ruleCollectionTypeIdentifier{ after(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__OwnedTypeAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+
+	'Tuple' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__OwnedPartsAssignment_1_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }
+	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }
+	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__OwnedTypeAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__OwnedTypeAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+	ruleCollectionTypeCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }
+	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }
+	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }
+	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }
+	rulePatternExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__OwnedTypeAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+	ruleCollectionTypeCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__OwnedPartsAssignment_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }
+	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }
+	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }
+	ruleIdentifier{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__ReferredPropertyAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }
+)
+{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__OwnedInitExpressionAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }
+(rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0)
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__PatternVariableNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__OwnedPatternTypeAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }
+	ruleExpCS{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__OwnedPartsAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }
+	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }
+	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }
+	ruleExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NumberLiteralExpCS__SymbolAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }
+	ruleNUMBER_LITERAL{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StringLiteralExpCS__SegmentsAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }
+	ruleStringLiteral{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanLiteralExpCS__SymbolAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+
+	'true' 
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanLiteralExpCS__SymbolAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+
+	'false' 
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+)
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+	ruleMultiplicityCS{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralExpCS__OwnedTypeAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }
+	ruleTypeLiteralWithMultiplicityCS{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__OwnedPathNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+	rulePathNameCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }
+	ruleCurlyBracketedClauseCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__OwnedMultiplicityAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+	ruleMultiplicityCS{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__NameAssignment_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }
+	ruleBinaryOperatorName{ after(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__OwnedRightAssignment_0_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }
+	ruleExpCS{ after(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__NameAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__OwnedRightAssignment_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }
+	rulePrefixedLetExpCS{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__NameAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }
+	rulePrefixedPrimaryExpCS{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedPathNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+	rulePathNameCS{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }
+	ruleSquareBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }
+	ruleRoundBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }
+	ruleCurlyBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__IsPreAssignment_4_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+(
+{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+
+	'@' 
+
+{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+)
+
+{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }
+	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }
+	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__ValueAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }
+	ruleStringLiteral{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }
+	ruleNavigatingArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }
+	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }
+	ruleNavigatingSemiArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }
+	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }
+	ruleNavigatingBarArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }
+	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__OwnedTermsAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }
+	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedTypeAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__PrefixAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+
+	'|' 
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__PrefixAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__PrefixAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+
+	';' 
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedConditionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }
+(rule__IfExpCS__OwnedConditionAlternatives_1_0)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedThenExpressionAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedIfThenExpressionsAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }
+	ruleElseIfThenExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedElseExpressionAssignment_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }
+	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__OwnedConditionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }
+	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__OwnedVariablesAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }
+	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__OwnedVariablesAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }
+	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__OwnedInExpressionAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }
+	ruleExpCS{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }
+	ruleRoundBracketedClauseCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__OwnedTypeAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__OwnedInitExpressionAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }
+	ruleExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__OwnedExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__LowerBoundAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }
+	ruleLOWER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }
+	ruleUPPER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityStringCS__StringBoundsAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }
+(rule__MultiplicityStringCS__StringBoundsAlternatives_0)
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__OwnedPathElementsAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }
+	ruleFirstPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__OwnedPathElementsAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }
+	ruleNextPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FirstPathElementCS__ReferredElementAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }
+)
+{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NextPathElementCS__ReferredElementAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }
+	ruleUnreservedName{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }
+)
+{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }
+	ruleTypeRefCS{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedSuperAssignment_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__OwnedPathNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+	rulePathNameCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__OwnedBindingAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }
+	ruleTemplateBindingCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+RULE_UNQUOTED_STRING : '\u00A3$%^\u00A3$%^';
+
+fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');
+
+fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');
+
+RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';
+
+RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';
+
+RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';
+
+RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;
+
+RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;
+
+RULE_INT : ('0'..'9')+;
+
+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/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/antlr/internal/InternalOCLinEcore.tokens b/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/antlr/internal/InternalOCLinEcore.tokens
index d41b23c..aac12b8 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/antlr/internal/InternalOCLinEcore.tokens
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src-gen/org/eclipse/ocl/xtext/oclinecore/ui/contentassist/antlr/internal/InternalOCLinEcore.tokens
@@ -1,249 +1,249 @@
-'!composes'=129

-'!derived'=120

-'!id'=121

-'!ordered'=122

-'!readonly'=123

-'!resolve'=130

-'!serializable'=54

-'!transient'=124

-'!unique'=125

-'!unsettable'=126

-'!volatile'=127

-'#'=101

-'&&'=119

-'('=95

-')'=96

-'*'=63

-'+'=65

-'++'=104

-','=98

-'-'=61

-'->'=77

-'.'=76

-'..'=103

-'/'=64

-':'=97

-'::'=102

-'::*'=128

-';'=53

-'<'=67

-'<='=69

-'<>'=71

-'='=70

-'>'=66

-'>='=68

-'?'=94

-'?->'=79

-'?.'=78

-'@'=133

-'Bag'=90

-'Boolean'=81

-'Collection'=92

-'Integer'=82

-'Lambda'=105

-'OclAny'=86

-'OclInvalid'=87

-'OclVoid'=88

-'OrderedSet'=93

-'Real'=83

-'Sequence'=91

-'Set'=89

-'String'=84

-'Tuple'=80

-'UnlimitedNatural'=85

-'['=109

-']'=110

-'abstract'=17

-'and'=72

-'annotation'=55

-'attribute'=18

-'body'=19

-'callable'=20

-'class'=21

-'composes'=22

-'datatype'=23

-'definition'=24

-'derivation'=25

-'derived'=26

-'documentation'=56

-'else'=114

-'elseif'=116

-'endif'=115

-'enum'=27

-'extends'=28

-'false'=132

-'id'=29

-'if'=112

-'implies'=75

-'import'=30

-'in'=111

-'initial'=31

-'interface'=32

-'invalid'=106

-'invariant'=57

-'key'=33

-'let'=117

-'library'=34

-'literal'=58

-'module'=35

-'not'=62

-'null'=107

-'operation'=36

-'or'=73

-'ordered'=37

-'package'=38

-'postcondition'=39

-'pre'=108

-'precondition'=40

-'primitive'=41

-'property'=42

-'readonly'=43

-'reference'=44

-'resolve'=45

-'self'=118

-'serializable'=59

-'static'=46

-'super'=47

-'sysml'=60

-'then'=113

-'throws'=48

-'transient'=49

-'true'=131

-'unique'=50

-'unsettable'=51

-'volatile'=52

-'xor'=74

-'{'=99

-'|'=134

-'}'=100

-RULE_ANY_OTHER=16

-RULE_DOUBLE_QUOTED_STRING=12

-RULE_ESCAPED_CHARACTER=10

-RULE_ESCAPED_ID=8

-RULE_INT=4

-RULE_LETTER_CHARACTER=11

-RULE_ML_COMMENT=13

-RULE_ML_SINGLE_QUOTED_STRING=6

-RULE_SIMPLE_ID=7

-RULE_SINGLE_QUOTED_STRING=5

-RULE_SL_COMMENT=14

-RULE_UNQUOTED_STRING=9

-RULE_WS=15

-T__100=100

-T__101=101

-T__102=102

-T__103=103

-T__104=104

-T__105=105

-T__106=106

-T__107=107

-T__108=108

-T__109=109

-T__110=110

-T__111=111

-T__112=112

-T__113=113

-T__114=114

-T__115=115

-T__116=116

-T__117=117

-T__118=118

-T__119=119

-T__120=120

-T__121=121

-T__122=122

-T__123=123

-T__124=124

-T__125=125

-T__126=126

-T__127=127

-T__128=128

-T__129=129

-T__130=130

-T__131=131

-T__132=132

-T__133=133

-T__134=134

-T__17=17

-T__18=18

-T__19=19

-T__20=20

-T__21=21

-T__22=22

-T__23=23

-T__24=24

-T__25=25

-T__26=26

-T__27=27

-T__28=28

-T__29=29

-T__30=30

-T__31=31

-T__32=32

-T__33=33

-T__34=34

-T__35=35

-T__36=36

-T__37=37

-T__38=38

-T__39=39

-T__40=40

-T__41=41

-T__42=42

-T__43=43

-T__44=44

-T__45=45

-T__46=46

-T__47=47

-T__48=48

-T__49=49

-T__50=50

-T__51=51

-T__52=52

-T__53=53

-T__54=54

-T__55=55

-T__56=56

-T__57=57

-T__58=58

-T__59=59

-T__60=60

-T__61=61

-T__62=62

-T__63=63

-T__64=64

-T__65=65

-T__66=66

-T__67=67

-T__68=68

-T__69=69

-T__70=70

-T__71=71

-T__72=72

-T__73=73

-T__74=74

-T__75=75

-T__76=76

-T__77=77

-T__78=78

-T__79=79

-T__80=80

-T__81=81

-T__82=82

-T__83=83

-T__84=84

-T__85=85

-T__86=86

-T__87=87

-T__88=88

-T__89=89

-T__90=90

-T__91=91

-T__92=92

-T__93=93

-T__94=94

-T__95=95

-T__96=96

-T__97=97

-T__98=98

-T__99=99

+'!composes'=129
+'!derived'=120
+'!id'=121
+'!ordered'=122
+'!readonly'=123
+'!resolve'=130
+'!serializable'=54
+'!transient'=124
+'!unique'=125
+'!unsettable'=126
+'!volatile'=127
+'#'=101
+'&&'=119
+'('=95
+')'=96
+'*'=63
+'+'=65
+'++'=104
+','=98
+'-'=61
+'->'=77
+'.'=76
+'..'=103
+'/'=64
+':'=97
+'::'=102
+'::*'=128
+';'=53
+'<'=67
+'<='=69
+'<>'=71
+'='=70
+'>'=66
+'>='=68
+'?'=94
+'?->'=79
+'?.'=78
+'@'=133
+'Bag'=90
+'Boolean'=81
+'Collection'=92
+'Integer'=82
+'Lambda'=105
+'OclAny'=86
+'OclInvalid'=87
+'OclVoid'=88
+'OrderedSet'=93
+'Real'=83
+'Sequence'=91
+'Set'=89
+'String'=84
+'Tuple'=80
+'UnlimitedNatural'=85
+'['=109
+']'=110
+'abstract'=17
+'and'=72
+'annotation'=55
+'attribute'=18
+'body'=19
+'callable'=20
+'class'=21
+'composes'=22
+'datatype'=23
+'definition'=24
+'derivation'=25
+'derived'=26
+'documentation'=56
+'else'=114
+'elseif'=116
+'endif'=115
+'enum'=27
+'extends'=28
+'false'=132
+'id'=29
+'if'=112
+'implies'=75
+'import'=30
+'in'=111
+'initial'=31
+'interface'=32
+'invalid'=106
+'invariant'=57
+'key'=33
+'let'=117
+'library'=34
+'literal'=58
+'module'=35
+'not'=62
+'null'=107
+'operation'=36
+'or'=73
+'ordered'=37
+'package'=38
+'postcondition'=39
+'pre'=108
+'precondition'=40
+'primitive'=41
+'property'=42
+'readonly'=43
+'reference'=44
+'resolve'=45
+'self'=118
+'serializable'=59
+'static'=46
+'super'=47
+'sysml'=60
+'then'=113
+'throws'=48
+'transient'=49
+'true'=131
+'unique'=50
+'unsettable'=51
+'volatile'=52
+'xor'=74
+'{'=99
+'|'=134
+'}'=100
+RULE_ANY_OTHER=16
+RULE_DOUBLE_QUOTED_STRING=12
+RULE_ESCAPED_CHARACTER=10
+RULE_ESCAPED_ID=8
+RULE_INT=4
+RULE_LETTER_CHARACTER=11
+RULE_ML_COMMENT=13
+RULE_ML_SINGLE_QUOTED_STRING=6
+RULE_SIMPLE_ID=7
+RULE_SINGLE_QUOTED_STRING=5
+RULE_SL_COMMENT=14
+RULE_UNQUOTED_STRING=9
+RULE_WS=15
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
+T__107=107
+T__108=108
+T__109=109
+T__110=110
+T__111=111
+T__112=112
+T__113=113
+T__114=114
+T__115=115
+T__116=116
+T__117=117
+T__118=118
+T__119=119
+T__120=120
+T__121=121
+T__122=122
+T__123=123
+T__124=124
+T__125=125
+T__126=126
+T__127=127
+T__128=128
+T__129=129
+T__130=130
+T__131=131
+T__132=132
+T__133=133
+T__134=134
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/AbstractOCLinEcoreRuntimeModule.java b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/AbstractOCLinEcoreRuntimeModule.java
index 7288e31..79c4ace 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/AbstractOCLinEcoreRuntimeModule.java
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/AbstractOCLinEcoreRuntimeModule.java
@@ -6,7 +6,6 @@
 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;
@@ -14,8 +13,8 @@
 /**
  * Manual modifications go to {org.eclipse.ocl.xtext.oclinecore.OCLinEcoreRuntimeModule}
  */
- @SuppressWarnings("all")
-public abstract class AbstractOCLinEcoreRuntimeModule extends DefaultRuntimeModule {
+@SuppressWarnings("all")
+public abstract class AbstractOCLinEcoreRuntimeModule extends org.eclipse.xtext.service.DefaultRuntimeModule {
 
 	protected Properties properties = null;
 
diff --git a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/OCLinEcoreStandaloneSetupGenerated.java b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/OCLinEcoreStandaloneSetupGenerated.java
index bb2f6b0..1c11375 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/OCLinEcoreStandaloneSetupGenerated.java
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/OCLinEcoreStandaloneSetupGenerated.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclinecore;
 
 import org.eclipse.emf.ecore.EPackage;
@@ -16,6 +16,7 @@
 @SuppressWarnings("all")
 public class OCLinEcoreStandaloneSetupGenerated implements ISetup {
 
+	@Override
 	public Injector createInjectorAndDoEMFRegistration() {
 		org.eclipse.ocl.xtext.essentialocl.EssentialOCLStandaloneSetup.doSetup();
 
diff --git a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/OCLinEcoreAntlrTokenFileProvider.java b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/OCLinEcoreAntlrTokenFileProvider.java
index bb3b280..1eb875b 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/OCLinEcoreAntlrTokenFileProvider.java
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/OCLinEcoreAntlrTokenFileProvider.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclinecore.parser.antlr;
 
 import java.io.InputStream;
diff --git a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/OCLinEcoreParser.java b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/OCLinEcoreParser.java
index a081185..df2ba58 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/OCLinEcoreParser.java
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/OCLinEcoreParser.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclinecore.parser.antlr;
 
 import com.google.inject.Inject;
diff --git a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/internal/InternalOCLinEcore.g b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/internal/InternalOCLinEcore.g
index 0f0a343..a669849 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/internal/InternalOCLinEcore.g
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/internal/InternalOCLinEcore.g
@@ -1,9755 +1,9755 @@
-/*

-* generated by Xtext

-*/

-grammar InternalOCLinEcore;

-

-options {

-	superClass=AbstractInternalAntlrParser;

-	backtrack=true;

-	

-}

-

-@lexer::header {

-package org.eclipse.ocl.xtext.oclinecore.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.ocl.xtext.oclinecore.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.ocl.xtext.oclinecore.services.OCLinEcoreGrammarAccess;

-

-}

-

-@parser::members {

-

-/*

-  This grammar contains a lot of empty actions to work around a bug in ANTLR.

-  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.

-*/

- 

- 	private OCLinEcoreGrammarAccess grammarAccess;

- 	

-    public InternalOCLinEcoreParser(TokenStream input, OCLinEcoreGrammarAccess grammarAccess) {

-        this(input);

-        this.grammarAccess = grammarAccess;

-        registerRules(grammarAccess.getGrammar());

-    }

-    

-    @Override

-    protected String getFirstRuleName() {

-    	return "TopLevelCS";	

-   	}

-   	

-   	@Override

-   	protected OCLinEcoreGrammarAccess getGrammarAccess() {

-   		return grammarAccess;

-   	}

-}

-

-@rulecatch { 

-    catch (RecognitionException re) { 

-        recover(input,re); 

-        appendSkippedTokens();

-    } 

-}

-

-

-

-

-// Entry rule entryRuleTopLevelCS

-entryRuleTopLevelCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTopLevelCSRule()); }

-	 iv_ruleTopLevelCS=ruleTopLevelCS 

-	 { $current=$iv_ruleTopLevelCS.current; } 

-	 EOF 

-;

-

-// Rule TopLevelCS

-ruleTopLevelCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getTopLevelCSAccess().getTopLevelCSAction_0(),

-            $current);

-    }

-)(	otherlv_1='module' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTopLevelCSAccess().getModuleKeyword_1_0());

-    }

-

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTopLevelCSAccess().getUnrestrictedNameParserRuleCall_1_1()); 

-    }

-ruleUnrestrictedName

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)?(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTopLevelCSAccess().getOwnedLibrariesLibraryCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedLibraries_3_0=ruleLibraryCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTopLevelCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedLibraries",

-        		lv_ownedLibraries_3_0, 

-        		"LibraryCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTopLevelCSAccess().getOwnedImportsImportCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedImports_4_0=ruleImportCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTopLevelCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedImports",

-        		lv_ownedImports_4_0, 

-        		"ImportCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTopLevelCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedPackages_5_0=rulePackageCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTopLevelCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPackages",

-        		lv_ownedPackages_5_0, 

-        		"PackageCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*)

-;

-

-

-

-

-

-

-

-// Entry rule entryRuleSIGNED

-entryRuleSIGNED returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getSIGNEDRule()); } 

-	 iv_ruleSIGNED=ruleSIGNED 

-	 { $current=$iv_ruleSIGNED.current.getText(); }  

-	 EOF 

-;

-

-// Rule SIGNED

-ruleSIGNED returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	kw='-' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getSIGNEDAccess().getHyphenMinusKeyword_0()); 

-    }

-)?    this_INT_1=RULE_INT    {

-		$current.merge(this_INT_1);

-    }

-

-    { 

-    newLeafNode(this_INT_1, grammarAccess.getSIGNEDAccess().getINTTerminalRuleCall_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleEnumerationLiteralName

-entryRuleEnumerationLiteralName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEnumerationLiteralNameRule()); } 

-	 iv_ruleEnumerationLiteralName=ruleEnumerationLiteralName 

-	 { $current=$iv_ruleEnumerationLiteralName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EnumerationLiteralName

-ruleEnumerationLiteralName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getEnumerationLiteralNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall_0()); 

-    }

-    this_EssentialOCLUnrestrictedName_0=ruleEssentialOCLUnrestrictedName    {

-		$current.merge(this_EssentialOCLUnrestrictedName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	kw='abstract' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getAbstractKeyword_1()); 

-    }

-

-    |

-	kw='attribute' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getAttributeKeyword_2()); 

-    }

-

-    |

-	kw='body' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getBodyKeyword_3()); 

-    }

-

-    |

-	kw='callable' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getCallableKeyword_4()); 

-    }

-

-    |

-	kw='class' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getClassKeyword_5()); 

-    }

-

-    |

-	kw='composes' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getComposesKeyword_6()); 

-    }

-

-    |

-	kw='datatype' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getDatatypeKeyword_7()); 

-    }

-

-    |

-	kw='definition' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getDefinitionKeyword_8()); 

-    }

-

-    |

-	kw='derivation' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getDerivationKeyword_9()); 

-    }

-

-    |

-	kw='derived' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getDerivedKeyword_10()); 

-    }

-

-    |

-	kw='enum' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getEnumKeyword_11()); 

-    }

-

-    |

-	kw='extends' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getExtendsKeyword_12()); 

-    }

-

-    |

-	kw='id' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getIdKeyword_13()); 

-    }

-

-    |

-	kw='import' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getImportKeyword_14()); 

-    }

-

-    |

-	kw='initial' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getInitialKeyword_15()); 

-    }

-

-    |

-	kw='interface' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getInterfaceKeyword_16()); 

-    }

-

-    |

-	kw='key' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getKeyKeyword_17()); 

-    }

-

-    |

-	kw='library' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getLibraryKeyword_18()); 

-    }

-

-    |

-	kw='module' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getModuleKeyword_19()); 

-    }

-

-    |

-	kw='operation' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getOperationKeyword_20()); 

-    }

-

-    |

-	kw='ordered' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getOrderedKeyword_21()); 

-    }

-

-    |

-	kw='package' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getPackageKeyword_22()); 

-    }

-

-    |

-	kw='postcondition' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getPostconditionKeyword_23()); 

-    }

-

-    |

-	kw='precondition' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getPreconditionKeyword_24()); 

-    }

-

-    |

-	kw='primitive' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getPrimitiveKeyword_25()); 

-    }

-

-    |

-	kw='property' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getPropertyKeyword_26()); 

-    }

-

-    |

-	kw='readonly' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getReadonlyKeyword_27()); 

-    }

-

-    |

-	kw='reference' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getReferenceKeyword_28()); 

-    }

-

-    |

-	kw='resolve' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getResolveKeyword_29()); 

-    }

-

-    |

-	kw='static' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getStaticKeyword_30()); 

-    }

-

-    |

-	kw='super' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getSuperKeyword_31()); 

-    }

-

-    |

-	kw='throws' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getThrowsKeyword_32()); 

-    }

-

-    |

-	kw='transient' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getTransientKeyword_33()); 

-    }

-

-    |

-	kw='unique' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getUniqueKeyword_34()); 

-    }

-

-    |

-	kw='unsettable' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getUnsettableKeyword_35()); 

-    }

-

-    |

-	kw='volatile' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getVolatileKeyword_36()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleInvariantConstraintCS

-entryRuleInvariantConstraintCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getInvariantConstraintCSRule()); }

-	 iv_ruleInvariantConstraintCS=ruleInvariantConstraintCS 

-	 { $current=$iv_ruleInvariantConstraintCS.current; } 

-	 EOF 

-;

-

-// Rule InvariantConstraintCS

-ruleInvariantConstraintCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_isCallable_0_0=	'callable' 

-    {

-        newLeafNode(lv_isCallable_0_0, grammarAccess.getInvariantConstraintCSAccess().getIsCallableCallableKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getInvariantConstraintCSRule());

-	        }

-       		setWithLastConsumed($current, "isCallable", true, "callable");

-	    }

-

-)

-)?(

-(

-		lv_stereotype_1_0=	'invariant' 

-    {

-        newLeafNode(lv_stereotype_1_0, grammarAccess.getInvariantConstraintCSAccess().getStereotypeInvariantKeyword_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getInvariantConstraintCSRule());

-	        }

-       		setWithLastConsumed($current, "stereotype", lv_stereotype_1_0, "invariant");

-	    }

-

-)

-)((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getInvariantConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_2_0_0()); 

-	    }

-		lv_name_2_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getInvariantConstraintCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_2_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3='(' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getInvariantConstraintCSAccess().getLeftParenthesisKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getInvariantConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedMessageSpecification_4_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getInvariantConstraintCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMessageSpecification",

-        		lv_ownedMessageSpecification_4_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_5=')' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getInvariantConstraintCSAccess().getRightParenthesisKeyword_2_1_2());

-    }

-)?)?((	otherlv_6=':' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getInvariantConstraintCSAccess().getColonKeyword_3_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getInvariantConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0_1_0()); 

-	    }

-		lv_ownedSpecification_7_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getInvariantConstraintCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSpecification",

-        		lv_ownedSpecification_7_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_8=';' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getInvariantConstraintCSAccess().getSemicolonKeyword_3_0_2());

-    }

-)

-    |	otherlv_9=';' 

-    {

-    	newLeafNode(otherlv_9, grammarAccess.getInvariantConstraintCSAccess().getSemicolonKeyword_3_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRulePostconditionConstraintCS

-entryRulePostconditionConstraintCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPostconditionConstraintCSRule()); }

-	 iv_rulePostconditionConstraintCS=rulePostconditionConstraintCS 

-	 { $current=$iv_rulePostconditionConstraintCS.current; } 

-	 EOF 

-;

-

-// Rule PostconditionConstraintCS

-rulePostconditionConstraintCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_stereotype_0_0=	'postcondition' 

-    {

-        newLeafNode(lv_stereotype_0_0, grammarAccess.getPostconditionConstraintCSAccess().getStereotypePostconditionKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getPostconditionConstraintCSRule());

-	        }

-       		setWithLastConsumed($current, "stereotype", lv_stereotype_0_0, "postcondition");

-	    }

-

-)

-)((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPostconditionConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); 

-	    }

-		lv_name_1_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPostconditionConstraintCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2='(' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getPostconditionConstraintCSAccess().getLeftParenthesisKeyword_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPostconditionConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); 

-	    }

-		lv_ownedMessageSpecification_3_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPostconditionConstraintCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMessageSpecification",

-        		lv_ownedMessageSpecification_3_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_4=')' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getPostconditionConstraintCSAccess().getRightParenthesisKeyword_1_1_2());

-    }

-)?)?	otherlv_5=':' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getPostconditionConstraintCSAccess().getColonKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPostconditionConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedSpecification_6_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPostconditionConstraintCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSpecification",

-        		lv_ownedSpecification_6_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_7=';' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getPostconditionConstraintCSAccess().getSemicolonKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePreconditionConstraintCS

-entryRulePreconditionConstraintCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPreconditionConstraintCSRule()); }

-	 iv_rulePreconditionConstraintCS=rulePreconditionConstraintCS 

-	 { $current=$iv_rulePreconditionConstraintCS.current; } 

-	 EOF 

-;

-

-// Rule PreconditionConstraintCS

-rulePreconditionConstraintCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_stereotype_0_0=	'precondition' 

-    {

-        newLeafNode(lv_stereotype_0_0, grammarAccess.getPreconditionConstraintCSAccess().getStereotypePreconditionKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getPreconditionConstraintCSRule());

-	        }

-       		setWithLastConsumed($current, "stereotype", lv_stereotype_0_0, "precondition");

-	    }

-

-)

-)((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPreconditionConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); 

-	    }

-		lv_name_1_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPreconditionConstraintCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2='(' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getPreconditionConstraintCSAccess().getLeftParenthesisKeyword_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPreconditionConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); 

-	    }

-		lv_ownedMessageSpecification_3_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPreconditionConstraintCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMessageSpecification",

-        		lv_ownedMessageSpecification_3_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_4=')' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getPreconditionConstraintCSAccess().getRightParenthesisKeyword_1_1_2());

-    }

-)?)?	otherlv_5=':' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getPreconditionConstraintCSAccess().getColonKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPreconditionConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedSpecification_6_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPreconditionConstraintCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSpecification",

-        		lv_ownedSpecification_6_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_7=';' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getPreconditionConstraintCSAccess().getSemicolonKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleAnnotationCS

-entryRuleAnnotationCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getAnnotationCSRule()); }

-	 iv_ruleAnnotationCS=ruleAnnotationCS 

-	 { $current=$iv_ruleAnnotationCS.current; } 

-	 EOF 

-;

-

-// Rule AnnotationCS

-ruleAnnotationCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getAnnotationCSAccess().getAnnotationCSAction_0(),

-            $current);

-    }

-)	otherlv_1='annotation' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getAnnotationCSAccess().getAnnotationKeyword_1());

-    }

-(

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getNameUnrestrictedNameParserRuleCall_2_0_0()); 

-	    }

-		lv_name_2_1=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_2_1, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-    |		lv_name_2_2=RULE_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_name_2_2, grammarAccess.getAnnotationCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAnnotationCSRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"name",

-        		lv_name_2_2, 

-        		"SINGLE_QUOTED_STRING");

-	    }

-

-)

-

-)

-)?(	otherlv_3='(' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getAnnotationCSAccess().getLeftParenthesisKeyword_3_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); 

-	    }

-		lv_ownedDetails_4_0=ruleDetailCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDetails",

-        		lv_ownedDetails_4_0, 

-        		"DetailCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_5=',' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getAnnotationCSAccess().getCommaKeyword_3_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); 

-	    }

-		lv_ownedDetails_6_0=ruleDetailCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDetails",

-        		lv_ownedDetails_6_0, 

-        		"DetailCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_7=')' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getAnnotationCSAccess().getRightParenthesisKeyword_3_3());

-    }

-)?((	otherlv_8='{' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getAnnotationCSAccess().getLeftCurlyBracketKeyword_4_0_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_0_1_0_0()); 

-	    }

-		lv_ownedAnnotations_9_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_9_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedContentsModelElementCSParserRuleCall_4_0_1_1_0()); 

-	    }

-		lv_ownedContents_10_0=ruleModelElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedContents",

-        		lv_ownedContents_10_0, 

-        		"ModelElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedReferencesModelElementRefCSParserRuleCall_4_0_1_2_0()); 

-	    }

-		lv_ownedReferences_11_0=ruleModelElementRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedReferences",

-        		lv_ownedReferences_11_0, 

-        		"ModelElementRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))+	otherlv_12='}' 

-    {

-    	newLeafNode(otherlv_12, grammarAccess.getAnnotationCSAccess().getRightCurlyBracketKeyword_4_0_2());

-    }

-)

-    |	otherlv_13=';' 

-    {

-    	newLeafNode(otherlv_13, grammarAccess.getAnnotationCSAccess().getSemicolonKeyword_4_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleAnnotationElementCS

-entryRuleAnnotationElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getAnnotationElementCSRule()); }

-	 iv_ruleAnnotationElementCS=ruleAnnotationElementCS 

-	 { $current=$iv_ruleAnnotationElementCS.current; } 

-	 EOF 

-;

-

-// Rule AnnotationElementCS

-ruleAnnotationElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getAnnotationElementCSAccess().getAnnotationCSParserRuleCall_0()); 

-    }

-    this_AnnotationCS_0=ruleAnnotationCS

-    { 

-        $current = $this_AnnotationCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getAnnotationElementCSAccess().getDocumentationCSParserRuleCall_1()); 

-    }

-    this_DocumentationCS_1=ruleDocumentationCS

-    { 

-        $current = $this_DocumentationCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getAnnotationElementCSAccess().getSysMLCSParserRuleCall_2()); 

-    }

-    this_SysMLCS_2=ruleSysMLCS

-    { 

-        $current = $this_SysMLCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleAttributeCS

-entryRuleAttributeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getAttributeCSRule()); }

-	 iv_ruleAttributeCS=ruleAttributeCS 

-	 { $current=$iv_ruleAttributeCS.current; } 

-	 EOF 

-;

-

-// Rule AttributeCS

-ruleAttributeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((((

-(

-		lv_qualifiers_0_0=	'static' 

-    {

-        newLeafNode(lv_qualifiers_0_0, grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_0_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_0_0, "static");

-	    }

-

-)

-)(

-(

-		lv_qualifiers_1_0=	'definition' 

-    {

-        newLeafNode(lv_qualifiers_1_0, grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_0_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_1_0, "definition");

-	    }

-

-)

-)?)

-    |((

-(

-		lv_qualifiers_2_0=	'definition' 

-    {

-        newLeafNode(lv_qualifiers_2_0, grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_1_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_2_0, "definition");

-	    }

-

-)

-)(

-(

-		lv_qualifiers_3_0=	'static' 

-    {

-        newLeafNode(lv_qualifiers_3_0, grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_1_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_3_0, "static");

-	    }

-

-)

-)?))?	otherlv_4='attribute' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getAttributeCSAccess().getAttributeKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAttributeCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); 

-	    }

-		lv_name_5_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAttributeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_5_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_6=':' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getAttributeCSAccess().getColonKeyword_3_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAttributeCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_3_1_0()); 

-	    }

-		lv_ownedType_7_0=ruleTypedMultiplicityRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAttributeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_7_0, 

-        		"TypedMultiplicityRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?(	otherlv_8='=' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getAttributeCSAccess().getEqualsSignKeyword_4_0());

-    }

-(

-(

-		lv_default_9_0=RULE_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_default_9_0, grammarAccess.getAttributeCSAccess().getDefaultSINGLE_QUOTED_STRINGTerminalRuleCall_4_1_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"default",

-        		lv_default_9_0, 

-        		"SINGLE_QUOTED_STRING");

-	    }

-

-)

-))?(	otherlv_10='{' 

-    {

-    	newLeafNode(otherlv_10, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0());

-    }

-(((

-(

-		lv_qualifiers_11_0=	'derived' 

-    {

-        newLeafNode(lv_qualifiers_11_0, grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_11_0, "derived");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_12_0=	'!derived' 

-    {

-        newLeafNode(lv_qualifiers_12_0, grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_12_0, "!derived");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_13_0=	'id' 

-    {

-        newLeafNode(lv_qualifiers_13_0, grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_2_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_13_0, "id");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_14_0=	'!id' 

-    {

-        newLeafNode(lv_qualifiers_14_0, grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_3_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_14_0, "!id");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_15_0=	'ordered' 

-    {

-        newLeafNode(lv_qualifiers_15_0, grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_4_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_15_0, "ordered");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_16_0=	'!ordered' 

-    {

-        newLeafNode(lv_qualifiers_16_0, grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_5_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_16_0, "!ordered");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_17_0=	'readonly' 

-    {

-        newLeafNode(lv_qualifiers_17_0, grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_6_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_17_0, "readonly");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_18_0=	'!readonly' 

-    {

-        newLeafNode(lv_qualifiers_18_0, grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_7_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_18_0, "!readonly");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_19_0=	'transient' 

-    {

-        newLeafNode(lv_qualifiers_19_0, grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_8_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_19_0, "transient");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_20_0=	'!transient' 

-    {

-        newLeafNode(lv_qualifiers_20_0, grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_9_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_20_0, "!transient");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_21_0=	'unique' 

-    {

-        newLeafNode(lv_qualifiers_21_0, grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_10_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_21_0, "unique");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_22_0=	'!unique' 

-    {

-        newLeafNode(lv_qualifiers_22_0, grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_11_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_22_0, "!unique");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_23_0=	'unsettable' 

-    {

-        newLeafNode(lv_qualifiers_23_0, grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_12_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_23_0, "unsettable");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_24_0=	'!unsettable' 

-    {

-        newLeafNode(lv_qualifiers_24_0, grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_13_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_24_0, "!unsettable");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_25_0=	'volatile' 

-    {

-        newLeafNode(lv_qualifiers_25_0, grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_14_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_25_0, "volatile");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_26_0=	'!volatile' 

-    {

-        newLeafNode(lv_qualifiers_26_0, grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_15_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAttributeCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_26_0, "!volatile");

-	    }

-

-)

-))(	otherlv_27=',' 

-    {

-    	newLeafNode(otherlv_27, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1());

-    }

-)?)+	otherlv_28='}' 

-    {

-    	newLeafNode(otherlv_28, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_2());

-    }

-)?((	otherlv_29='{' 

-    {

-    	newLeafNode(otherlv_29, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_6_0_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAttributeCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0_0()); 

-	    }

-		lv_ownedAnnotations_30_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAttributeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_30_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(	otherlv_31='derivation' 

-    {

-    	newLeafNode(otherlv_31, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0());

-    }

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()); 

-    }

-ruleUnrestrictedName

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)?	otherlv_33=':' 

-    {

-    	newLeafNode(otherlv_33, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_6_0_1_1_3_0()); 

-	    }

-		lv_ownedDefaultExpressions_34_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAttributeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDefaultExpressions",

-        		lv_ownedDefaultExpressions_34_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_35=';' 

-    {

-    	newLeafNode(otherlv_35, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4());

-    }

-)

-    |(	otherlv_36='initial' 

-    {

-    	newLeafNode(otherlv_36, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0());

-    }

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()); 

-    }

-ruleUnrestrictedName

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)?	otherlv_38=':' 

-    {

-    	newLeafNode(otherlv_38, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_6_0_1_2_3_0()); 

-	    }

-		lv_ownedDefaultExpressions_39_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAttributeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDefaultExpressions",

-        		lv_ownedDefaultExpressions_39_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_40=';' 

-    {

-    	newLeafNode(otherlv_40, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4());

-    }

-))*	otherlv_41='}' 

-    {

-    	newLeafNode(otherlv_41, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_6_0_2());

-    }

-)

-    |	otherlv_42=';' 

-    {

-    	newLeafNode(otherlv_42, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleClassCS

-entryRuleClassCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getClassCSRule()); }

-	 iv_ruleClassCS=ruleClassCS 

-	 { $current=$iv_ruleClassCS.current; } 

-	 EOF 

-;

-

-// Rule ClassCS

-ruleClassCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getClassCSAccess().getStructuredClassCSParserRuleCall_0()); 

-    }

-    this_StructuredClassCS_0=ruleStructuredClassCS

-    { 

-        $current = $this_StructuredClassCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getClassCSAccess().getDataTypeCSParserRuleCall_1()); 

-    }

-    this_DataTypeCS_1=ruleDataTypeCS

-    { 

-        $current = $this_DataTypeCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getClassCSAccess().getEnumerationCSParserRuleCall_2()); 

-    }

-    this_EnumerationCS_2=ruleEnumerationCS

-    { 

-        $current = $this_EnumerationCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleDataTypeCS

-entryRuleDataTypeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getDataTypeCSRule()); }

-	 iv_ruleDataTypeCS=ruleDataTypeCS 

-	 { $current=$iv_ruleDataTypeCS.current; } 

-	 EOF 

-;

-

-// Rule DataTypeCS

-ruleDataTypeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_isPrimitive_0_0=	'primitive' 

-    {

-        newLeafNode(lv_isPrimitive_0_0, grammarAccess.getDataTypeCSAccess().getIsPrimitivePrimitiveKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getDataTypeCSRule());

-	        }

-       		setWithLastConsumed($current, "isPrimitive", true, "primitive");

-	    }

-

-)

-)?	otherlv_1='datatype' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getDataTypeCSAccess().getDatatypeKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDataTypeCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); 

-	    }

-		lv_name_2_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDataTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_2_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDataTypeCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedSignature_3_0=ruleTemplateSignatureCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDataTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSignature",

-        		lv_ownedSignature_3_0, 

-        		"TemplateSignatureCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(	otherlv_4=':' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getDataTypeCSAccess().getColonKeyword_4_0());

-    }

-(

-(

-		lv_instanceClassName_5_0=RULE_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_instanceClassName_5_0, grammarAccess.getDataTypeCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_4_1_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getDataTypeCSRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"instanceClassName",

-        		lv_instanceClassName_5_0, 

-        		"SINGLE_QUOTED_STRING");

-	    }

-

-)

-))?(	otherlv_6='{' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getDataTypeCSAccess().getLeftCurlyBracketKeyword_5_0());

-    }

-((

-(

-		lv_isSerializable_7_0=	'serializable' 

-    {

-        newLeafNode(lv_isSerializable_7_0, grammarAccess.getDataTypeCSAccess().getIsSerializableSerializableKeyword_5_1_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getDataTypeCSRule());

-	        }

-       		setWithLastConsumed($current, "isSerializable", true, "serializable");

-	    }

-

-)

-)

-    |	otherlv_8='!serializable' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getDataTypeCSAccess().getSerializableKeyword_5_1_1());

-    }

-)?	otherlv_9='}' 

-    {

-    	newLeafNode(otherlv_9, grammarAccess.getDataTypeCSAccess().getRightCurlyBracketKeyword_5_2());

-    }

-)?((	otherlv_10='{' 

-    {

-    	newLeafNode(otherlv_10, grammarAccess.getDataTypeCSAccess().getLeftCurlyBracketKeyword_6_0_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDataTypeCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0_0()); 

-	    }

-		lv_ownedAnnotations_11_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDataTypeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_11_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDataTypeCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_6_0_1_1_0()); 

-	    }

-		lv_ownedConstraints_12_0=ruleInvariantConstraintCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDataTypeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedConstraints",

-        		lv_ownedConstraints_12_0, 

-        		"InvariantConstraintCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_13='}' 

-    {

-    	newLeafNode(otherlv_13, grammarAccess.getDataTypeCSAccess().getRightCurlyBracketKeyword_6_0_2());

-    }

-)

-    |	otherlv_14=';' 

-    {

-    	newLeafNode(otherlv_14, grammarAccess.getDataTypeCSAccess().getSemicolonKeyword_6_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleDetailCS

-entryRuleDetailCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getDetailCSRule()); }

-	 iv_ruleDetailCS=ruleDetailCS 

-	 { $current=$iv_ruleDetailCS.current; } 

-	 EOF 

-;

-

-// Rule DetailCS

-ruleDetailCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDetailCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); 

-	    }

-		lv_name_0_1=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDetailCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_1, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-    |		lv_name_0_2=RULE_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_name_0_2, grammarAccess.getDetailCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_0_0_1()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getDetailCSRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"name",

-        		lv_name_0_2, 

-        		"SINGLE_QUOTED_STRING");

-	    }

-

-)

-

-)

-)	otherlv_1='=' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getDetailCSAccess().getEqualsSignKeyword_1());

-    }

-(

-(

-(

-		lv_values_2_1=RULE_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_values_2_1, grammarAccess.getDetailCSAccess().getValuesSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getDetailCSRule());

-	        }

-       		addWithLastConsumed(

-       			$current, 

-       			"values",

-        		lv_values_2_1, 

-        		"SINGLE_QUOTED_STRING");

-	    }

-

-    |		lv_values_2_2=RULE_ML_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_values_2_2, grammarAccess.getDetailCSAccess().getValuesML_SINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getDetailCSRule());

-	        }

-       		addWithLastConsumed(

-       			$current, 

-       			"values",

-        		lv_values_2_2, 

-        		"ML_SINGLE_QUOTED_STRING");

-	    }

-

-)

-

-)

-)*)

-;

-

-

-

-

-

-// Entry rule entryRuleDocumentationCS

-entryRuleDocumentationCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getDocumentationCSRule()); }

-	 iv_ruleDocumentationCS=ruleDocumentationCS 

-	 { $current=$iv_ruleDocumentationCS.current; } 

-	 EOF 

-;

-

-// Rule DocumentationCS

-ruleDocumentationCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getDocumentationCSAccess().getDocumentationCSAction_0(),

-            $current);

-    }

-)	otherlv_1='documentation' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getDocumentationCSAccess().getDocumentationKeyword_1());

-    }

-(

-(

-		lv_value_2_0=RULE_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_value_2_0, grammarAccess.getDocumentationCSAccess().getValueSINGLE_QUOTED_STRINGTerminalRuleCall_2_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getDocumentationCSRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"value",

-        		lv_value_2_0, 

-        		"SINGLE_QUOTED_STRING");

-	    }

-

-)

-)?(	otherlv_3='(' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getDocumentationCSAccess().getLeftParenthesisKeyword_3_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); 

-	    }

-		lv_ownedDetails_4_0=ruleDetailCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDocumentationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDetails",

-        		lv_ownedDetails_4_0, 

-        		"DetailCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_5=',' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getDocumentationCSAccess().getCommaKeyword_3_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); 

-	    }

-		lv_ownedDetails_6_0=ruleDetailCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDocumentationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDetails",

-        		lv_ownedDetails_6_0, 

-        		"DetailCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_7=')' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getDocumentationCSAccess().getRightParenthesisKeyword_3_3());

-    }

-)?	otherlv_8=';' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getDocumentationCSAccess().getSemicolonKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleEnumerationCS

-entryRuleEnumerationCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEnumerationCSRule()); }

-	 iv_ruleEnumerationCS=ruleEnumerationCS 

-	 { $current=$iv_ruleEnumerationCS.current; } 

-	 EOF 

-;

-

-// Rule EnumerationCS

-ruleEnumerationCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='enum' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getEnumerationCSAccess().getEnumKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getEnumerationCSAccess().getNameUnrestrictedNameParserRuleCall_1_0()); 

-	    }

-		lv_name_1_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getEnumerationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getEnumerationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedSignature_2_0=ruleTemplateSignatureCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getEnumerationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSignature",

-        		lv_ownedSignature_2_0, 

-        		"TemplateSignatureCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(	otherlv_3=':' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getEnumerationCSAccess().getColonKeyword_3_0());

-    }

-(

-(

-		lv_instanceClassName_4_0=RULE_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_instanceClassName_4_0, grammarAccess.getEnumerationCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_3_1_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getEnumerationCSRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"instanceClassName",

-        		lv_instanceClassName_4_0, 

-        		"SINGLE_QUOTED_STRING");

-	    }

-

-)

-))?(	otherlv_5='{' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getEnumerationCSAccess().getLeftCurlyBracketKeyword_4_0());

-    }

-((

-(

-		lv_isSerializable_6_0=	'serializable' 

-    {

-        newLeafNode(lv_isSerializable_6_0, grammarAccess.getEnumerationCSAccess().getIsSerializableSerializableKeyword_4_1_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getEnumerationCSRule());

-	        }

-       		setWithLastConsumed($current, "isSerializable", true, "serializable");

-	    }

-

-)

-)

-    |	otherlv_7='!serializable' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getEnumerationCSAccess().getSerializableKeyword_4_1_1());

-    }

-)?	otherlv_8='}' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getEnumerationCSAccess().getRightCurlyBracketKeyword_4_2());

-    }

-)?((	otherlv_9='{' 

-    {

-    	newLeafNode(otherlv_9, grammarAccess.getEnumerationCSAccess().getLeftCurlyBracketKeyword_5_0_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getEnumerationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_5_0_1_0_0()); 

-	    }

-		lv_ownedAnnotations_10_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getEnumerationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_10_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getEnumerationCSAccess().getOwnedLiteralsEnumerationLiteralCSParserRuleCall_5_0_1_1_0()); 

-	    }

-		lv_ownedLiterals_11_0=ruleEnumerationLiteralCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getEnumerationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedLiterals",

-        		lv_ownedLiterals_11_0, 

-        		"EnumerationLiteralCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getEnumerationCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_5_0_1_2_0()); 

-	    }

-		lv_ownedConstraints_12_0=ruleInvariantConstraintCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getEnumerationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedConstraints",

-        		lv_ownedConstraints_12_0, 

-        		"InvariantConstraintCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_13='}' 

-    {

-    	newLeafNode(otherlv_13, grammarAccess.getEnumerationCSAccess().getRightCurlyBracketKeyword_5_0_2());

-    }

-)

-    |	otherlv_14=';' 

-    {

-    	newLeafNode(otherlv_14, grammarAccess.getEnumerationCSAccess().getSemicolonKeyword_5_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleEnumerationLiteralCS

-entryRuleEnumerationLiteralCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEnumerationLiteralCSRule()); }

-	 iv_ruleEnumerationLiteralCS=ruleEnumerationLiteralCS 

-	 { $current=$iv_ruleEnumerationLiteralCS.current; } 

-	 EOF 

-;

-

-// Rule EnumerationLiteralCS

-ruleEnumerationLiteralCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((	otherlv_0='literal' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getEnumerationLiteralCSAccess().getLiteralKeyword_0_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getEnumerationLiteralCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_1_0()); 

-	    }

-		lv_name_1_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getEnumerationLiteralCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getEnumerationLiteralCSAccess().getNameEnumerationLiteralNameParserRuleCall_0_1_0()); 

-	    }

-		lv_name_2_0=ruleEnumerationLiteralName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getEnumerationLiteralCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_2_0, 

-        		"EnumerationLiteralName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))(	otherlv_3='=' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getEnumerationLiteralCSAccess().getEqualsSignKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getEnumerationLiteralCSAccess().getValueSIGNEDParserRuleCall_1_1_0()); 

-	    }

-		lv_value_4_0=ruleSIGNED		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getEnumerationLiteralCSRule());

-	        }

-       		set(

-       			$current, 

-       			"value",

-        		lv_value_4_0, 

-        		"SIGNED");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?((	otherlv_5='{' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getEnumerationLiteralCSAccess().getLeftCurlyBracketKeyword_2_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getEnumerationLiteralCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_2_0_1_0()); 

-	    }

-		lv_ownedAnnotations_6_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getEnumerationLiteralCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_6_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_7='}' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getEnumerationLiteralCSAccess().getRightCurlyBracketKeyword_2_0_2());

-    }

-)

-    |	otherlv_8=';' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getEnumerationLiteralCSAccess().getSemicolonKeyword_2_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleImportCS

-entryRuleImportCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getImportCSRule()); }

-	 iv_ruleImportCS=ruleImportCS 

-	 { $current=$iv_ruleImportCS.current; } 

-	 EOF 

-;

-

-// Rule ImportCS

-ruleImportCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='import' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getImportCSAccess().getImportKeyword_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getImportCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); 

-	    }

-		lv_name_1_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getImportCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getImportCSAccess().getColonKeyword_1_1());

-    }

-)?(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getImportCSAccess().getOwnedPathNameURIPathNameCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedPathName_3_0=ruleURIPathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getImportCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_3_0, 

-        		"URIPathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		lv_isAll_4_0=	'::*' 

-    {

-        newLeafNode(lv_isAll_4_0, grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getImportCSRule());

-	        }

-       		setWithLastConsumed($current, "isAll", true, "::*");

-	    }

-

-)

-)?	otherlv_5=';' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getImportCSAccess().getSemicolonKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleLibraryCS

-entryRuleLibraryCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLibraryCSRule()); }

-	 iv_ruleLibraryCS=ruleLibraryCS 

-	 { $current=$iv_ruleLibraryCS.current; } 

-	 EOF 

-;

-

-// Rule LibraryCS

-ruleLibraryCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='library' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLibraryCSAccess().getLibraryKeyword_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibraryCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); 

-	    }

-		lv_name_1_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibraryCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getLibraryCSAccess().getColonKeyword_1_1());

-    }

-)?(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibraryCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_2_0()); 

-	    }

-		ruleURI		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_4=';' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getLibraryCSAccess().getSemicolonKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleModelElementCS

-entryRuleModelElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getModelElementCSRule()); }

-	 iv_ruleModelElementCS=ruleModelElementCS 

-	 { $current=$iv_ruleModelElementCS.current; } 

-	 EOF 

-;

-

-// Rule ModelElementCS

-ruleModelElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getModelElementCSAccess().getClassCSParserRuleCall_0()); 

-    }

-    this_ClassCS_0=ruleClassCS

-    { 

-        $current = $this_ClassCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getModelElementCSAccess().getEnumerationLiteralCSParserRuleCall_1()); 

-    }

-    this_EnumerationLiteralCS_1=ruleEnumerationLiteralCS

-    { 

-        $current = $this_EnumerationLiteralCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getModelElementCSAccess().getOperationCSParserRuleCall_2()); 

-    }

-    this_OperationCS_2=ruleOperationCS

-    { 

-        $current = $this_OperationCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getModelElementCSAccess().getPackageCSParserRuleCall_3()); 

-    }

-    this_PackageCS_3=rulePackageCS

-    { 

-        $current = $this_PackageCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getModelElementCSAccess().getStructuralFeatureCSParserRuleCall_4()); 

-    }

-    this_StructuralFeatureCS_4=ruleStructuralFeatureCS

-    { 

-        $current = $this_StructuralFeatureCS_4.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleModelElementRefCS

-entryRuleModelElementRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getModelElementRefCSRule()); }

-	 iv_ruleModelElementRefCS=ruleModelElementRefCS 

-	 { $current=$iv_ruleModelElementRefCS.current; } 

-	 EOF 

-;

-

-// Rule ModelElementRefCS

-ruleModelElementRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='reference' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getModelElementRefCSAccess().getReferenceKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getModelElementRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedPathName_1_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getModelElementRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_1_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_2=';' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getModelElementRefCSAccess().getSemicolonKeyword_2());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleOperationCS

-entryRuleOperationCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getOperationCSRule()); }

-	 iv_ruleOperationCS=ruleOperationCS 

-	 { $current=$iv_ruleOperationCS.current; } 

-	 EOF 

-;

-

-// Rule OperationCS

-ruleOperationCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((((

-(

-		lv_qualifiers_0_0=	'static' 

-    {

-        newLeafNode(lv_qualifiers_0_0, grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_0_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getOperationCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_0_0, "static");

-	    }

-

-)

-)(

-(

-		lv_qualifiers_1_0=	'definition' 

-    {

-        newLeafNode(lv_qualifiers_1_0, grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_0_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getOperationCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_1_0, "definition");

-	    }

-

-)

-)?)

-    |((

-(

-		lv_qualifiers_2_0=	'definition' 

-    {

-        newLeafNode(lv_qualifiers_2_0, grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_1_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getOperationCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_2_0, "definition");

-	    }

-

-)

-)(

-(

-		lv_qualifiers_3_0=	'static' 

-    {

-        newLeafNode(lv_qualifiers_3_0, grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_1_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getOperationCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_3_0, "static");

-	    }

-

-)

-)?))?	otherlv_4='operation' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getOperationCSAccess().getOperationKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedSignature_5_0=ruleTemplateSignatureCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSignature",

-        		lv_ownedSignature_5_0, 

-        		"TemplateSignatureCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationCSAccess().getNameUnrestrictedNameParserRuleCall_3_0()); 

-	    }

-		lv_name_6_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_6_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_7='(' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getOperationCSAccess().getLeftParenthesisKeyword_4());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_0_0()); 

-	    }

-		lv_ownedParameters_8_0=ruleParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_8_0, 

-        		"ParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_9=',' 

-    {

-    	newLeafNode(otherlv_9, grammarAccess.getOperationCSAccess().getCommaKeyword_5_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_1_1_0()); 

-	    }

-		lv_ownedParameters_10_0=ruleParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_10_0, 

-        		"ParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_11=')' 

-    {

-    	newLeafNode(otherlv_11, grammarAccess.getOperationCSAccess().getRightParenthesisKeyword_6());

-    }

-(	otherlv_12=':' 

-    {

-    	newLeafNode(otherlv_12, grammarAccess.getOperationCSAccess().getColonKeyword_7_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_7_1_0()); 

-	    }

-		lv_ownedType_13_0=ruleTypedMultiplicityRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_13_0, 

-        		"TypedMultiplicityRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?(	otherlv_14='throws' 

-    {

-    	newLeafNode(otherlv_14, grammarAccess.getOperationCSAccess().getThrowsKeyword_8_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedExceptionsTypedRefCSParserRuleCall_8_1_0()); 

-	    }

-		lv_ownedExceptions_15_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedExceptions",

-        		lv_ownedExceptions_15_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_16=',' 

-    {

-    	newLeafNode(otherlv_16, grammarAccess.getOperationCSAccess().getCommaKeyword_8_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedExceptionsTypedRefCSParserRuleCall_8_2_1_0()); 

-	    }

-		lv_ownedExceptions_17_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedExceptions",

-        		lv_ownedExceptions_17_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?(	otherlv_18='{' 

-    {

-    	newLeafNode(otherlv_18, grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_9_0());

-    }

-(((

-(

-		lv_qualifiers_19_0=	'derived' 

-    {

-        newLeafNode(lv_qualifiers_19_0, grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getOperationCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_19_0, "derived");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_20_0=	'!derived' 

-    {

-        newLeafNode(lv_qualifiers_20_0, grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getOperationCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_20_0, "!derived");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_21_0=	'ordered' 

-    {

-        newLeafNode(lv_qualifiers_21_0, grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_2_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getOperationCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_21_0, "ordered");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_22_0=	'!ordered' 

-    {

-        newLeafNode(lv_qualifiers_22_0, grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_3_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getOperationCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_22_0, "!ordered");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_23_0=	'unique' 

-    {

-        newLeafNode(lv_qualifiers_23_0, grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_4_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getOperationCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_23_0, "unique");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_24_0=	'!unique' 

-    {

-        newLeafNode(lv_qualifiers_24_0, grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_5_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getOperationCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_24_0, "!unique");

-	    }

-

-)

-))(	otherlv_25=',' 

-    {

-    	newLeafNode(otherlv_25, grammarAccess.getOperationCSAccess().getCommaKeyword_9_1_1());

-    }

-)?)+	otherlv_26='}' 

-    {

-    	newLeafNode(otherlv_26, grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_9_2());

-    }

-)?((	otherlv_27='{' 

-    {

-    	newLeafNode(otherlv_27, grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_10_0_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_10_0_1_0_0()); 

-	    }

-		lv_ownedAnnotations_28_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_28_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedPreconditionsPreconditionConstraintCSParserRuleCall_10_0_1_1_0()); 

-	    }

-		lv_ownedPreconditions_29_0=rulePreconditionConstraintCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPreconditions",

-        		lv_ownedPreconditions_29_0, 

-        		"PreconditionConstraintCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(	otherlv_30='body' 

-    {

-    	newLeafNode(otherlv_30, grammarAccess.getOperationCSAccess().getBodyKeyword_10_0_1_2_0());

-    }

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getOperationCSAccess().getUnrestrictedNameParserRuleCall_10_0_1_2_1()); 

-    }

-ruleUnrestrictedName

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)?	otherlv_32=':' 

-    {

-    	newLeafNode(otherlv_32, grammarAccess.getOperationCSAccess().getColonKeyword_10_0_1_2_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedBodyExpressionsSpecificationCSParserRuleCall_10_0_1_2_3_0()); 

-	    }

-		lv_ownedBodyExpressions_33_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedBodyExpressions",

-        		lv_ownedBodyExpressions_33_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_34=';' 

-    {

-    	newLeafNode(otherlv_34, grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_0_1_2_4());

-    }

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedPostconditionsPostconditionConstraintCSParserRuleCall_10_0_1_3_0()); 

-	    }

-		lv_ownedPostconditions_35_0=rulePostconditionConstraintCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPostconditions",

-        		lv_ownedPostconditions_35_0, 

-        		"PostconditionConstraintCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_36='}' 

-    {

-    	newLeafNode(otherlv_36, grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_10_0_2());

-    }

-)

-    |	otherlv_37=';' 

-    {

-    	newLeafNode(otherlv_37, grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRulePackageCS

-entryRulePackageCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPackageCSRule()); }

-	 iv_rulePackageCS=rulePackageCS 

-	 { $current=$iv_rulePackageCS.current; } 

-	 EOF 

-;

-

-// Rule PackageCS

-rulePackageCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='package' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getPackageCSAccess().getPackageKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageCSAccess().getNameUnrestrictedNameParserRuleCall_1_0()); 

-	    }

-		lv_name_1_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getPackageCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageCSAccess().getNsPrefixUnrestrictedNameParserRuleCall_2_1_0()); 

-	    }

-		lv_nsPrefix_3_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());

-	        }

-       		set(

-       			$current, 

-       			"nsPrefix",

-        		lv_nsPrefix_3_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?(	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getPackageCSAccess().getEqualsSignKeyword_3_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageCSAccess().getNsURIURIParserRuleCall_3_1_0()); 

-	    }

-		lv_nsURI_5_0=ruleURI		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());

-	        }

-       		set(

-       			$current, 

-       			"nsURI",

-        		lv_nsURI_5_0, 

-        		"URI");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?((	otherlv_6='{' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getPackageCSAccess().getLeftCurlyBracketKeyword_4_0_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_0_1_0_0()); 

-	    }

-		lv_ownedAnnotations_7_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_7_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_1_1_0()); 

-	    }

-		lv_ownedPackages_8_0=rulePackageCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPackages",

-        		lv_ownedPackages_8_0, 

-        		"PackageCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_0_1_2_0()); 

-	    }

-		lv_ownedClasses_9_0=ruleClassCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedClasses",

-        		lv_ownedClasses_9_0, 

-        		"ClassCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_10='}' 

-    {

-    	newLeafNode(otherlv_10, grammarAccess.getPackageCSAccess().getRightCurlyBracketKeyword_4_0_2());

-    }

-)

-    |	otherlv_11=';' 

-    {

-    	newLeafNode(otherlv_11, grammarAccess.getPackageCSAccess().getSemicolonKeyword_4_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleParameterCS

-entryRuleParameterCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getParameterCSRule()); }

-	 iv_ruleParameterCS=ruleParameterCS 

-	 { $current=$iv_ruleParameterCS.current; } 

-	 EOF 

-;

-

-// Rule ParameterCS

-ruleParameterCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getParameterCSAccess().getColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getParameterCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypedMultiplicityRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypedMultiplicityRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?(	otherlv_3='{' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_2_0());

-    }

-(((

-(

-		lv_qualifiers_4_0=	'ordered' 

-    {

-        newLeafNode(lv_qualifiers_4_0, grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getParameterCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_4_0, "ordered");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_5_0=	'!ordered' 

-    {

-        newLeafNode(lv_qualifiers_5_0, grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getParameterCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_5_0, "!ordered");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_6_0=	'unique' 

-    {

-        newLeafNode(lv_qualifiers_6_0, grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_2_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getParameterCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_6_0, "unique");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_7_0=	'!unique' 

-    {

-        newLeafNode(lv_qualifiers_7_0, grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_3_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getParameterCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_7_0, "!unique");

-	    }

-

-)

-))(	otherlv_8=',' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getParameterCSAccess().getCommaKeyword_2_1_1());

-    }

-)?)+	otherlv_9='}' 

-    {

-    	newLeafNode(otherlv_9, grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_2_2());

-    }

-)?(	otherlv_10='{' 

-    {

-    	newLeafNode(otherlv_10, grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_3_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getParameterCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_3_1_0()); 

-	    }

-		lv_ownedAnnotations_11_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getParameterCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_11_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_12='}' 

-    {

-    	newLeafNode(otherlv_12, grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_3_2());

-    }

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleReferenceCS

-entryRuleReferenceCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getReferenceCSRule()); }

-	 iv_ruleReferenceCS=ruleReferenceCS 

-	 { $current=$iv_ruleReferenceCS.current; } 

-	 EOF 

-;

-

-// Rule ReferenceCS

-ruleReferenceCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((((

-(

-		lv_qualifiers_0_0=	'static' 

-    {

-        newLeafNode(lv_qualifiers_0_0, grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_0_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_0_0, "static");

-	    }

-

-)

-)(

-(

-		lv_qualifiers_1_0=	'definition' 

-    {

-        newLeafNode(lv_qualifiers_1_0, grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_0_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_1_0, "definition");

-	    }

-

-)

-)?)

-    |((

-(

-		lv_qualifiers_2_0=	'definition' 

-    {

-        newLeafNode(lv_qualifiers_2_0, grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_1_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_2_0, "definition");

-	    }

-

-)

-)(

-(

-		lv_qualifiers_3_0=	'static' 

-    {

-        newLeafNode(lv_qualifiers_3_0, grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_1_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_3_0, "static");

-	    }

-

-)

-)?))?	otherlv_4='property' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getReferenceCSAccess().getPropertyKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getReferenceCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); 

-	    }

-		lv_name_5_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getReferenceCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_5_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_6='#' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getReferenceCSAccess().getNumberSignKeyword_3_0());

-    }

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getReferenceCSAccess().getReferredOppositePropertyCrossReference_3_1_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?(	otherlv_8=':' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getReferenceCSAccess().getColonKeyword_4_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getReferenceCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_4_1_0()); 

-	    }

-		lv_ownedType_9_0=ruleTypedMultiplicityRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getReferenceCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_9_0, 

-        		"TypedMultiplicityRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?(	otherlv_10='=' 

-    {

-    	newLeafNode(otherlv_10, grammarAccess.getReferenceCSAccess().getEqualsSignKeyword_5_0());

-    }

-(

-(

-		lv_default_11_0=RULE_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_default_11_0, grammarAccess.getReferenceCSAccess().getDefaultSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"default",

-        		lv_default_11_0, 

-        		"SINGLE_QUOTED_STRING");

-	    }

-

-)

-))?(	otherlv_12='{' 

-    {

-    	newLeafNode(otherlv_12, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0());

-    }

-(((

-(

-		lv_qualifiers_13_0=	'composes' 

-    {

-        newLeafNode(lv_qualifiers_13_0, grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_13_0, "composes");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_14_0=	'!composes' 

-    {

-        newLeafNode(lv_qualifiers_14_0, grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_14_0, "!composes");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_15_0=	'derived' 

-    {

-        newLeafNode(lv_qualifiers_15_0, grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_2_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_15_0, "derived");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_16_0=	'!derived' 

-    {

-        newLeafNode(lv_qualifiers_16_0, grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_3_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_16_0, "!derived");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_17_0=	'ordered' 

-    {

-        newLeafNode(lv_qualifiers_17_0, grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_4_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_17_0, "ordered");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_18_0=	'!ordered' 

-    {

-        newLeafNode(lv_qualifiers_18_0, grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_5_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_18_0, "!ordered");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_19_0=	'readonly' 

-    {

-        newLeafNode(lv_qualifiers_19_0, grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_6_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_19_0, "readonly");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_20_0=	'!readonly' 

-    {

-        newLeafNode(lv_qualifiers_20_0, grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_7_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_20_0, "!readonly");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_21_0=	'resolve' 

-    {

-        newLeafNode(lv_qualifiers_21_0, grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_8_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_21_0, "resolve");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_22_0=	'!resolve' 

-    {

-        newLeafNode(lv_qualifiers_22_0, grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_9_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_22_0, "!resolve");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_23_0=	'transient' 

-    {

-        newLeafNode(lv_qualifiers_23_0, grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_10_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_23_0, "transient");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_24_0=	'!transient' 

-    {

-        newLeafNode(lv_qualifiers_24_0, grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_11_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_24_0, "!transient");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_25_0=	'unique' 

-    {

-        newLeafNode(lv_qualifiers_25_0, grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_12_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_25_0, "unique");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_26_0=	'!unique' 

-    {

-        newLeafNode(lv_qualifiers_26_0, grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_13_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_26_0, "!unique");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_27_0=	'unsettable' 

-    {

-        newLeafNode(lv_qualifiers_27_0, grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_14_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_27_0, "unsettable");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_28_0=	'!unsettable' 

-    {

-        newLeafNode(lv_qualifiers_28_0, grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_15_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_28_0, "!unsettable");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_29_0=	'volatile' 

-    {

-        newLeafNode(lv_qualifiers_29_0, grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_16_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_29_0, "volatile");

-	    }

-

-)

-)

-    |(

-(

-		lv_qualifiers_30_0=	'!volatile' 

-    {

-        newLeafNode(lv_qualifiers_30_0, grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_17_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_30_0, "!volatile");

-	    }

-

-)

-))(	otherlv_31=',' 

-    {

-    	newLeafNode(otherlv_31, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1());

-    }

-)?)+	otherlv_32='}' 

-    {

-    	newLeafNode(otherlv_32, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_2());

-    }

-)?((	otherlv_33='{' 

-    {

-    	newLeafNode(otherlv_33, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_7_0_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getReferenceCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); 

-	    }

-		lv_ownedAnnotations_34_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getReferenceCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_34_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(	otherlv_35='key' 

-    {

-    	newLeafNode(otherlv_35, grammarAccess.getReferenceCSAccess().getKeyKeyword_7_0_1_1_0());

-    }

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyCrossReference_7_0_1_1_1_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_37=',' 

-    {

-    	newLeafNode(otherlv_37, grammarAccess.getReferenceCSAccess().getCommaKeyword_7_0_1_1_2_0());

-    }

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getReferenceCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyCrossReference_7_0_1_1_2_1_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_39=';' 

-    {

-    	newLeafNode(otherlv_39, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_1_3());

-    }

-)

-    |(	otherlv_40='derivation' 

-    {

-    	newLeafNode(otherlv_40, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0());

-    }

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()); 

-    }

-ruleUnrestrictedName

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)?	otherlv_42=':' 

-    {

-    	newLeafNode(otherlv_42, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_7_0_1_2_3_0()); 

-	    }

-		lv_ownedDefaultExpressions_43_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getReferenceCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDefaultExpressions",

-        		lv_ownedDefaultExpressions_43_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_44=';' 

-    {

-    	newLeafNode(otherlv_44, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4());

-    }

-)

-    |(	otherlv_45='initial' 

-    {

-    	newLeafNode(otherlv_45, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0());

-    }

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()); 

-    }

-ruleUnrestrictedName

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)?	otherlv_47=':' 

-    {

-    	newLeafNode(otherlv_47, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_7_0_1_3_3_0()); 

-	    }

-		lv_ownedDefaultExpressions_48_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getReferenceCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDefaultExpressions",

-        		lv_ownedDefaultExpressions_48_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_49=';' 

-    {

-    	newLeafNode(otherlv_49, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4());

-    }

-))*	otherlv_50='}' 

-    {

-    	newLeafNode(otherlv_50, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_7_0_2());

-    }

-)

-    |	otherlv_51=';' 

-    {

-    	newLeafNode(otherlv_51, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleSpecificationCS

-entryRuleSpecificationCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getSpecificationCSRule()); }

-	 iv_ruleSpecificationCS=ruleSpecificationCS 

-	 { $current=$iv_ruleSpecificationCS.current; } 

-	 EOF 

-;

-

-// Rule SpecificationCS

-ruleSpecificationCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedExpression_0_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getSpecificationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_0_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		lv_exprString_1_0=RULE_UNQUOTED_STRING

-		{

-			newLeafNode(lv_exprString_1_0, grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getSpecificationCSRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"exprString",

-        		lv_exprString_1_0, 

-        		"UNQUOTED_STRING");

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleStructuredClassCS

-entryRuleStructuredClassCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getStructuredClassCSRule()); }

-	 iv_ruleStructuredClassCS=ruleStructuredClassCS 

-	 { $current=$iv_ruleStructuredClassCS.current; } 

-	 EOF 

-;

-

-// Rule StructuredClassCS

-ruleStructuredClassCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_isAbstract_0_0=	'abstract' 

-    {

-        newLeafNode(lv_isAbstract_0_0, grammarAccess.getStructuredClassCSAccess().getIsAbstractAbstractKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getStructuredClassCSRule());

-	        }

-       		setWithLastConsumed($current, "isAbstract", true, "abstract");

-	    }

-

-)

-)?	otherlv_1='class' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getStructuredClassCSAccess().getClassKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); 

-	    }

-		lv_name_2_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_2_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedSignature_3_0=ruleTemplateSignatureCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSignature",

-        		lv_ownedSignature_3_0, 

-        		"TemplateSignatureCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(	otherlv_4='extends' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getStructuredClassCSAccess().getExtendsKeyword_4_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_1_0()); 

-	    }

-		lv_ownedSuperTypes_5_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSuperTypes",

-        		lv_ownedSuperTypes_5_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_6=',' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getStructuredClassCSAccess().getCommaKeyword_4_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_2_1_0()); 

-	    }

-		lv_ownedSuperTypes_7_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSuperTypes",

-        		lv_ownedSuperTypes_7_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?(	otherlv_8=':' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getStructuredClassCSAccess().getColonKeyword_5_0());

-    }

-(

-(

-		lv_instanceClassName_9_0=RULE_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_instanceClassName_9_0, grammarAccess.getStructuredClassCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getStructuredClassCSRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"instanceClassName",

-        		lv_instanceClassName_9_0, 

-        		"SINGLE_QUOTED_STRING");

-	    }

-

-)

-))?(	otherlv_10='{' 

-    {

-    	newLeafNode(otherlv_10, grammarAccess.getStructuredClassCSAccess().getLeftCurlyBracketKeyword_6_0());

-    }

-(

-(

-		lv_isInterface_11_0=	'interface' 

-    {

-        newLeafNode(lv_isInterface_11_0, grammarAccess.getStructuredClassCSAccess().getIsInterfaceInterfaceKeyword_6_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getStructuredClassCSRule());

-	        }

-       		setWithLastConsumed($current, "isInterface", true, "interface");

-	    }

-

-)

-)?	otherlv_12='}' 

-    {

-    	newLeafNode(otherlv_12, grammarAccess.getStructuredClassCSAccess().getRightCurlyBracketKeyword_6_2());

-    }

-)?((	otherlv_13='{' 

-    {

-    	newLeafNode(otherlv_13, grammarAccess.getStructuredClassCSAccess().getLeftCurlyBracketKeyword_7_0_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); 

-	    }

-		lv_ownedAnnotations_14_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_14_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getOwnedOperationsOperationCSParserRuleCall_7_0_1_1_0()); 

-	    }

-		lv_ownedOperations_15_0=ruleOperationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedOperations",

-        		lv_ownedOperations_15_0, 

-        		"OperationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getOwnedPropertiesStructuralFeatureCSParserRuleCall_7_0_1_2_0()); 

-	    }

-		lv_ownedProperties_16_0=ruleStructuralFeatureCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedProperties",

-        		lv_ownedProperties_16_0, 

-        		"StructuralFeatureCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_7_0_1_3_0()); 

-	    }

-		lv_ownedConstraints_17_0=ruleInvariantConstraintCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedConstraints",

-        		lv_ownedConstraints_17_0, 

-        		"InvariantConstraintCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_18='}' 

-    {

-    	newLeafNode(otherlv_18, grammarAccess.getStructuredClassCSAccess().getRightCurlyBracketKeyword_7_0_2());

-    }

-)

-    |	otherlv_19=';' 

-    {

-    	newLeafNode(otherlv_19, grammarAccess.getStructuredClassCSAccess().getSemicolonKeyword_7_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleStructuralFeatureCS

-entryRuleStructuralFeatureCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getStructuralFeatureCSRule()); }

-	 iv_ruleStructuralFeatureCS=ruleStructuralFeatureCS 

-	 { $current=$iv_ruleStructuralFeatureCS.current; } 

-	 EOF 

-;

-

-// Rule StructuralFeatureCS

-ruleStructuralFeatureCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getStructuralFeatureCSAccess().getAttributeCSParserRuleCall_0()); 

-    }

-    this_AttributeCS_0=ruleAttributeCS

-    { 

-        $current = $this_AttributeCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getStructuralFeatureCSAccess().getReferenceCSParserRuleCall_1()); 

-    }

-    this_ReferenceCS_1=ruleReferenceCS

-    { 

-        $current = $this_ReferenceCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleSysMLCS

-entryRuleSysMLCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getSysMLCSRule()); }

-	 iv_ruleSysMLCS=ruleSysMLCS 

-	 { $current=$iv_ruleSysMLCS.current; } 

-	 EOF 

-;

-

-// Rule SysMLCS

-ruleSysMLCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getSysMLCSAccess().getSysMLCSAction_0(),

-            $current);

-    }

-)	otherlv_1='sysml' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getSysMLCSAccess().getSysmlKeyword_1());

-    }

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getSysMLCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_0_0_0()); 

-	    }

-		lv_ownedDetails_2_0=ruleDetailCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getSysMLCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDetails",

-        		lv_ownedDetails_2_0, 

-        		"DetailCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_3=';' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getSysMLCSAccess().getSemicolonKeyword_2_0_1());

-    }

-)

-    |(	otherlv_4='{' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getSysMLCSAccess().getLeftCurlyBracketKeyword_2_1_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getSysMLCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_1_1_0_0()); 

-	    }

-		lv_ownedDetails_5_0=ruleDetailCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getSysMLCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDetails",

-        		lv_ownedDetails_5_0, 

-        		"DetailCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_6=';' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getSysMLCSAccess().getSemicolonKeyword_2_1_1_1());

-    }

-)*	otherlv_7='}' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getSysMLCSAccess().getRightCurlyBracketKeyword_2_1_2());

-    }

-)))

-;

-

-

-

-

-

-

-

-// Entry rule entryRuleTypedMultiplicityRefCS

-entryRuleTypedMultiplicityRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypedMultiplicityRefCSRule()); }

-	 iv_ruleTypedMultiplicityRefCS=ruleTypedMultiplicityRefCS 

-	 { $current=$iv_ruleTypedMultiplicityRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypedMultiplicityRefCS

-ruleTypedMultiplicityRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypedMultiplicityRefCSAccess().getTypedRefCSParserRuleCall_0()); 

-    }

-    this_TypedRefCS_0=ruleTypedRefCS

-    { 

-        $current = $this_TypedRefCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedMultiplicity_1_0=ruleMultiplicityCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypedMultiplicityRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMultiplicity",

-        		lv_ownedMultiplicity_1_0, 

-        		"MultiplicityCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTemplateBindingCS

-entryRuleTemplateBindingCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTemplateBindingCSRule()); }

-	 iv_ruleTemplateBindingCS=ruleTemplateBindingCS 

-	 { $current=$iv_ruleTemplateBindingCS.current; } 

-	 EOF 

-;

-

-// Rule TemplateBindingCS

-ruleTemplateBindingCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((	otherlv_0='(' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_0_1_0()); 

-	    }

-		lv_ownedSubstitutions_1_0=ruleTemplateParameterSubstitutionCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSubstitutions",

-        		lv_ownedSubstitutions_1_0, 

-        		"TemplateParameterSubstitutionCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_0_2_1_0()); 

-	    }

-		lv_ownedSubstitutions_3_0=ruleTemplateParameterSubstitutionCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSubstitutions",

-        		lv_ownedSubstitutions_3_0, 

-        		"TemplateParameterSubstitutionCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4=')' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_0_3());

-    }

-)

-    |(	otherlv_5='<' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTemplateBindingCSAccess().getLessThanSignKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedSubstitutions_6_0=ruleTemplateParameterSubstitutionCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSubstitutions",

-        		lv_ownedSubstitutions_6_0, 

-        		"TemplateParameterSubstitutionCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_7=',' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_1_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_2_1_0()); 

-	    }

-		lv_ownedSubstitutions_8_0=ruleTemplateParameterSubstitutionCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSubstitutions",

-        		lv_ownedSubstitutions_8_0, 

-        		"TemplateParameterSubstitutionCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_9='>' 

-    {

-    	newLeafNode(otherlv_9, grammarAccess.getTemplateBindingCSAccess().getGreaterThanSignKeyword_1_3());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleTemplateSignatureCS

-entryRuleTemplateSignatureCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTemplateSignatureCSRule()); }

-	 iv_ruleTemplateSignatureCS=ruleTemplateSignatureCS 

-	 { $current=$iv_ruleTemplateSignatureCS.current; } 

-	 EOF 

-;

-

-// Rule TemplateSignatureCS

-ruleTemplateSignatureCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((	otherlv_0='(' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_1_0()); 

-	    }

-		lv_ownedParameters_1_0=ruleTypeParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_1_0, 

-        		"TypeParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_2_1_0()); 

-	    }

-		lv_ownedParameters_3_0=ruleTypeParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_3_0, 

-        		"TypeParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4=')' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3());

-    }

-)

-    |(	otherlv_5='<' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedParameters_6_0=ruleTypeParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_6_0, 

-        		"TypeParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_7=',' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_2_1_0()); 

-	    }

-		lv_ownedParameters_8_0=ruleTypeParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_8_0, 

-        		"TypeParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_9='>' 

-    {

-    	newLeafNode(otherlv_9, grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleTypedRefCS

-entryRuleTypedRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypedRefCSRule()); }

-	 iv_ruleTypedRefCS=ruleTypedRefCS 

-	 { $current=$iv_ruleTypedRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypedRefCS

-ruleTypedRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypeLiteralCSParserRuleCall_0()); 

-    }

-    this_TypeLiteralCS_0=ruleTypeLiteralCS

-    { 

-        $current = $this_TypeLiteralCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); 

-    }

-    this_TypedTypeRefCS_1=ruleTypedTypeRefCS

-    { 

-        $current = $this_TypedTypeRefCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleUnrestrictedName

-entryRuleUnrestrictedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnrestrictedNameRule()); } 

-	 iv_ruleUnrestrictedName=ruleUnrestrictedName 

-	 { $current=$iv_ruleUnrestrictedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule UnrestrictedName

-ruleUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getUnrestrictedNameAccess().getEnumerationLiteralNameParserRuleCall_0()); 

-    }

-    this_EnumerationLiteralName_0=ruleEnumerationLiteralName    {

-		$current.merge(this_EnumerationLiteralName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	kw='annotation' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getAnnotationKeyword_1()); 

-    }

-

-    |

-	kw='documentation' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getDocumentationKeyword_2()); 

-    }

-

-    |

-	kw='invariant' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getInvariantKeyword_3()); 

-    }

-

-    |

-	kw='literal' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getLiteralKeyword_4()); 

-    }

-

-    |

-	kw='serializable' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getSerializableKeyword_5()); 

-    }

-

-    |

-	kw='sysml' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getSysmlKeyword_6()); 

-    }

-)

-    ;

-

-

-

-

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnaryOperatorName

-entryRuleEssentialOCLUnaryOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 

-	 iv_ruleEssentialOCLUnaryOperatorName=ruleEssentialOCLUnaryOperatorName 

-	 { $current=$iv_ruleEssentialOCLUnaryOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLUnaryOperatorName

-ruleEssentialOCLUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='-' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); 

-    }

-

-    |

-	kw='not' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLInfixOperatorName

-entryRuleEssentialOCLInfixOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 

-	 iv_ruleEssentialOCLInfixOperatorName=ruleEssentialOCLInfixOperatorName 

-	 { $current=$iv_ruleEssentialOCLInfixOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLInfixOperatorName

-ruleEssentialOCLInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='*' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); 

-    }

-

-    |

-	kw='/' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); 

-    }

-

-    |

-	kw='+' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); 

-    }

-

-    |

-	kw='-' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); 

-    }

-

-    |

-	kw='>' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); 

-    }

-

-    |

-	kw='<' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); 

-    }

-

-    |

-	kw='>=' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); 

-    }

-

-    |

-	kw='<=' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); 

-    }

-

-    |

-	kw='=' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); 

-    }

-

-    |

-	kw='<>' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); 

-    }

-

-    |

-	kw='and' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); 

-    }

-

-    |

-	kw='or' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); 

-    }

-

-    |

-	kw='xor' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); 

-    }

-

-    |

-	kw='implies' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLNavigationOperatorName

-entryRuleEssentialOCLNavigationOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 

-	 iv_ruleEssentialOCLNavigationOperatorName=ruleEssentialOCLNavigationOperatorName 

-	 { $current=$iv_ruleEssentialOCLNavigationOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLNavigationOperatorName

-ruleEssentialOCLNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='.' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); 

-    }

-

-    |

-	kw='->' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); 

-    }

-

-    |

-	kw='?.' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); 

-    }

-

-    |

-	kw='?->' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleBinaryOperatorName

-entryRuleBinaryOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getBinaryOperatorNameRule()); } 

-	 iv_ruleBinaryOperatorName=ruleBinaryOperatorName 

-	 { $current=$iv_ruleBinaryOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule BinaryOperatorName

-ruleBinaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); 

-    }

-    this_InfixOperatorName_0=ruleInfixOperatorName    {

-		$current.merge(this_InfixOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); 

-    }

-    this_NavigationOperatorName_1=ruleNavigationOperatorName    {

-		$current.merge(this_NavigationOperatorName_1);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleInfixOperatorName

-entryRuleInfixOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getInfixOperatorNameRule()); } 

-	 iv_ruleInfixOperatorName=ruleInfixOperatorName 

-	 { $current=$iv_ruleInfixOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule InfixOperatorName

-ruleInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); 

-    }

-    this_EssentialOCLInfixOperatorName_0=ruleEssentialOCLInfixOperatorName    {

-		$current.merge(this_EssentialOCLInfixOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleNavigationOperatorName

-entryRuleNavigationOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigationOperatorNameRule()); } 

-	 iv_ruleNavigationOperatorName=ruleNavigationOperatorName 

-	 { $current=$iv_ruleNavigationOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule NavigationOperatorName

-ruleNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); 

-    }

-    this_EssentialOCLNavigationOperatorName_0=ruleEssentialOCLNavigationOperatorName    {

-		$current.merge(this_EssentialOCLNavigationOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleUnaryOperatorName

-entryRuleUnaryOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnaryOperatorNameRule()); } 

-	 iv_ruleUnaryOperatorName=ruleUnaryOperatorName 

-	 { $current=$iv_ruleUnaryOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule UnaryOperatorName

-ruleUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); 

-    }

-    this_EssentialOCLUnaryOperatorName_0=ruleEssentialOCLUnaryOperatorName    {

-		$current.merge(this_EssentialOCLUnaryOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnrestrictedName

-entryRuleEssentialOCLUnrestrictedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 

-	 iv_ruleEssentialOCLUnrestrictedName=ruleEssentialOCLUnrestrictedName 

-	 { $current=$iv_ruleEssentialOCLUnrestrictedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLUnrestrictedName

-ruleEssentialOCLUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); 

-    }

-    this_Identifier_0=ruleIdentifier    {

-		$current.merge(this_Identifier_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnreservedName

-entryRuleEssentialOCLUnreservedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameRule()); } 

-	 iv_ruleEssentialOCLUnreservedName=ruleEssentialOCLUnreservedName 

-	 { $current=$iv_ruleEssentialOCLUnreservedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLUnreservedName

-ruleEssentialOCLUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); 

-    }

-    this_UnrestrictedName_0=ruleUnrestrictedName    {

-		$current.merge(this_UnrestrictedName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); 

-    }

-    this_CollectionTypeIdentifier_1=ruleCollectionTypeIdentifier    {

-		$current.merge(this_CollectionTypeIdentifier_1);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); 

-    }

-    this_PrimitiveTypeIdentifier_2=rulePrimitiveTypeIdentifier    {

-		$current.merge(this_PrimitiveTypeIdentifier_2);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	kw='Tuple' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleUnreservedName

-entryRuleUnreservedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnreservedNameRule()); } 

-	 iv_ruleUnreservedName=ruleUnreservedName 

-	 { $current=$iv_ruleUnreservedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule UnreservedName

-ruleUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); 

-    }

-    this_EssentialOCLUnreservedName_0=ruleEssentialOCLUnreservedName    {

-		$current.merge(this_EssentialOCLUnreservedName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleURIPathNameCS

-entryRuleURIPathNameCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getURIPathNameCSRule()); }

-	 iv_ruleURIPathNameCS=ruleURIPathNameCS 

-	 { $current=$iv_ruleURIPathNameCS.current; } 

-	 EOF 

-;

-

-// Rule URIPathNameCS

-ruleURIPathNameCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsURIFirstPathElementCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathElements_0_0=ruleURIFirstPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getURIPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_0_0, 

-        		"URIFirstPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='::' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedPathElements_2_0=ruleNextPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getURIPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_2_0, 

-        		"NextPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)

-;

-

-

-

-

-

-// Entry rule entryRuleURIFirstPathElementCS

-entryRuleURIFirstPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getURIFirstPathElementCSRule()); }

-	 iv_ruleURIFirstPathElementCS=ruleURIFirstPathElementCS 

-	 { $current=$iv_ruleURIFirstPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule URIFirstPathElementCS

-ruleURIFirstPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0(),

-            $current);

-    }

-)(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); 

-	    }

-		ruleURI		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))

-;

-

-

-

-

-

-// Entry rule entryRulePrimitiveTypeIdentifier

-entryRulePrimitiveTypeIdentifier returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimitiveTypeIdentifierRule()); } 

-	 iv_rulePrimitiveTypeIdentifier=rulePrimitiveTypeIdentifier 

-	 { $current=$iv_rulePrimitiveTypeIdentifier.current.getText(); }  

-	 EOF 

-;

-

-// Rule PrimitiveTypeIdentifier

-rulePrimitiveTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='Boolean' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); 

-    }

-

-    |

-	kw='Integer' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); 

-    }

-

-    |

-	kw='Real' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); 

-    }

-

-    |

-	kw='String' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); 

-    }

-

-    |

-	kw='UnlimitedNatural' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); 

-    }

-

-    |

-	kw='OclAny' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); 

-    }

-

-    |

-	kw='OclInvalid' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); 

-    }

-

-    |

-	kw='OclVoid' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRulePrimitiveTypeCS

-entryRulePrimitiveTypeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimitiveTypeCSRule()); }

-	 iv_rulePrimitiveTypeCS=rulePrimitiveTypeCS 

-	 { $current=$iv_rulePrimitiveTypeCS.current; } 

-	 EOF 

-;

-

-// Rule PrimitiveTypeCS

-rulePrimitiveTypeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); 

-	    }

-		lv_name_0_0=rulePrimitiveTypeIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrimitiveTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"PrimitiveTypeIdentifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionTypeIdentifier

-entryRuleCollectionTypeIdentifier returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionTypeIdentifierRule()); } 

-	 iv_ruleCollectionTypeIdentifier=ruleCollectionTypeIdentifier 

-	 { $current=$iv_ruleCollectionTypeIdentifier.current.getText(); }  

-	 EOF 

-;

-

-// Rule CollectionTypeIdentifier

-ruleCollectionTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='Set' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); 

-    }

-

-    |

-	kw='Bag' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); 

-    }

-

-    |

-	kw='Sequence' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); 

-    }

-

-    |

-	kw='Collection' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); 

-    }

-

-    |

-	kw='OrderedSet' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleCollectionTypeCS

-entryRuleCollectionTypeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionTypeCSRule()); }

-	 iv_ruleCollectionTypeCS=ruleCollectionTypeCS 

-	 { $current=$iv_ruleCollectionTypeCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionTypeCS

-ruleCollectionTypeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleCollectionTypeIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"CollectionTypeIdentifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='(' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_3=')' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2());

-    }

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTupleTypeCS

-entryRuleTupleTypeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTupleTypeCSRule()); }

-	 iv_ruleTupleTypeCS=ruleTupleTypeCS 

-	 { $current=$iv_ruleTupleTypeCS.current; } 

-	 EOF 

-;

-

-// Rule TupleTypeCS

-ruleTupleTypeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_name_0_0=	'Tuple' 

-    {

-        newLeafNode(lv_name_0_0, grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getTupleTypeCSRule());

-	        }

-       		setWithLastConsumed($current, "name", lv_name_0_0, "Tuple");

-	    }

-

-)

-)(	otherlv_1='(' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); 

-	    }

-		lv_ownedParts_2_0=ruleTuplePartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"TuplePartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleTuplePartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"TuplePartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_5=')' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2());

-    }

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTuplePartCS

-entryRuleTuplePartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTuplePartCSRule()); }

-	 iv_ruleTuplePartCS=ruleTuplePartCS 

-	 { $current=$iv_ruleTuplePartCS.current; } 

-	 EOF 

-;

-

-// Rule TuplePartCS

-ruleTuplePartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTuplePartCSAccess().getColonKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionLiteralExpCS

-entryRuleCollectionLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionLiteralExpCSRule()); }

-	 iv_ruleCollectionLiteralExpCS=ruleCollectionLiteralExpCS 

-	 { $current=$iv_ruleCollectionLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionLiteralExpCS

-ruleCollectionLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedType_0_0=ruleCollectionTypeCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_0_0, 

-        		"CollectionTypeCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedParts_2_0=ruleCollectionLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"CollectionLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleCollectionLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"CollectionLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_5='}' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionLiteralPartCS

-entryRuleCollectionLiteralPartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionLiteralPartCSRule()); }

-	 iv_ruleCollectionLiteralPartCS=ruleCollectionLiteralPartCS 

-	 { $current=$iv_ruleCollectionLiteralPartCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionLiteralPartCS

-ruleCollectionLiteralPartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); 

-	    }

-		lv_ownedExpression_0_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_0_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='..' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); 

-	    }

-		lv_ownedLastExpression_2_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedLastExpression",

-        		lv_ownedLastExpression_2_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedExpression_3_0=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_3_0, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionPatternCS

-entryRuleCollectionPatternCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionPatternCSRule()); }

-	 iv_ruleCollectionPatternCS=ruleCollectionPatternCS 

-	 { $current=$iv_ruleCollectionPatternCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionPatternCS

-ruleCollectionPatternCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedType_0_0=ruleCollectionTypeCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_0_0, 

-        		"CollectionTypeCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedParts_2_0=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*(	otherlv_5='++' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); 

-	    }

-		lv_restVariableName_6_0=ruleIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		set(

-       			$current, 

-       			"restVariableName",

-        		lv_restVariableName_6_0, 

-        		"Identifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?	otherlv_7='}' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleConstructorPartCS

-entryRuleConstructorPartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getConstructorPartCSRule()); }

-	 iv_ruleConstructorPartCS=ruleConstructorPartCS 

-	 { $current=$iv_ruleConstructorPartCS.current; } 

-	 EOF 

-;

-

-// Rule ConstructorPartCS

-ruleConstructorPartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getConstructorPartCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1='=' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1());

-    }

-(

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedInitExpression_2_1=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_2_1, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-    |		{ 

-	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); 

-	    }

-		lv_ownedInitExpression_2_2=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_2_2, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRulePatternExpCS

-entryRulePatternExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPatternExpCSRule()); }

-	 iv_rulePatternExpCS=rulePatternExpCS 

-	 { $current=$iv_rulePatternExpCS.current; } 

-	 EOF 

-;

-

-// Rule PatternExpCS

-rulePatternExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_patternVariableName_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"patternVariableName",

-        		lv_patternVariableName_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getPatternExpCSAccess().getColonKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedPatternType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPatternType",

-        		lv_ownedPatternType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLambdaLiteralExpCS

-entryRuleLambdaLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLambdaLiteralExpCSRule()); }

-	 iv_ruleLambdaLiteralExpCS=ruleLambdaLiteralExpCS 

-	 { $current=$iv_ruleLambdaLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule LambdaLiteralExpCS

-ruleLambdaLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='Lambda' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0());

-    }

-	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedExpressionCS_2_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLambdaLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpressionCS",

-        		lv_ownedExpressionCS_2_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_3='}' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrimitiveLiteralExpCS

-entryRulePrimitiveLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSRule()); }

-	 iv_rulePrimitiveLiteralExpCS=rulePrimitiveLiteralExpCS 

-	 { $current=$iv_rulePrimitiveLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrimitiveLiteralExpCS

-rulePrimitiveLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); 

-    }

-    this_NumberLiteralExpCS_0=ruleNumberLiteralExpCS

-    { 

-        $current = $this_NumberLiteralExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); 

-    }

-    this_StringLiteralExpCS_1=ruleStringLiteralExpCS

-    { 

-        $current = $this_StringLiteralExpCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); 

-    }

-    this_BooleanLiteralExpCS_2=ruleBooleanLiteralExpCS

-    { 

-        $current = $this_BooleanLiteralExpCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); 

-    }

-    this_UnlimitedNaturalLiteralExpCS_3=ruleUnlimitedNaturalLiteralExpCS

-    { 

-        $current = $this_UnlimitedNaturalLiteralExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); 

-    }

-    this_InvalidLiteralExpCS_4=ruleInvalidLiteralExpCS

-    { 

-        $current = $this_InvalidLiteralExpCS_4.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); 

-    }

-    this_NullLiteralExpCS_5=ruleNullLiteralExpCS

-    { 

-        $current = $this_NullLiteralExpCS_5.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTupleLiteralExpCS

-entryRuleTupleLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTupleLiteralExpCSRule()); }

-	 iv_ruleTupleLiteralExpCS=ruleTupleLiteralExpCS 

-	 { $current=$iv_ruleTupleLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule TupleLiteralExpCS

-ruleTupleLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='Tuple' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0());

-    }

-	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedParts_2_0=ruleTupleLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"TupleLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleTupleLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"TupleLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_5='}' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTupleLiteralPartCS

-entryRuleTupleLiteralPartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTupleLiteralPartCSRule()); }

-	 iv_ruleTupleLiteralPartCS=ruleTupleLiteralPartCS 

-	 { $current=$iv_ruleTupleLiteralPartCS.current; } 

-	 EOF 

-;

-

-// Rule TupleLiteralPartCS

-ruleTupleLiteralPartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?	otherlv_3='=' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedInitExpression_4_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_4_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleNumberLiteralExpCS

-entryRuleNumberLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNumberLiteralExpCSRule()); }

-	 iv_ruleNumberLiteralExpCS=ruleNumberLiteralExpCS 

-	 { $current=$iv_ruleNumberLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule NumberLiteralExpCS

-ruleNumberLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); 

-	    }

-		lv_symbol_0_0=ruleNUMBER_LITERAL		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNumberLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"symbol",

-        		lv_symbol_0_0, 

-        		"NUMBER_LITERAL");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleStringLiteralExpCS

-entryRuleStringLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getStringLiteralExpCSRule()); }

-	 iv_ruleStringLiteralExpCS=ruleStringLiteralExpCS 

-	 { $current=$iv_ruleStringLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule StringLiteralExpCS

-ruleStringLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); 

-	    }

-		lv_segments_0_0=ruleStringLiteral		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getStringLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"segments",

-        		lv_segments_0_0, 

-        		"StringLiteral");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)+

-;

-

-

-

-

-

-// Entry rule entryRuleBooleanLiteralExpCS

-entryRuleBooleanLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getBooleanLiteralExpCSRule()); }

-	 iv_ruleBooleanLiteralExpCS=ruleBooleanLiteralExpCS 

-	 { $current=$iv_ruleBooleanLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule BooleanLiteralExpCS

-ruleBooleanLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_symbol_0_0=	'true' 

-    {

-        newLeafNode(lv_symbol_0_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());

-	        }

-       		setWithLastConsumed($current, "symbol", lv_symbol_0_0, "true");

-	    }

-

-)

-)

-    |(

-(

-		lv_symbol_1_0=	'false' 

-    {

-        newLeafNode(lv_symbol_1_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());

-	        }

-       		setWithLastConsumed($current, "symbol", lv_symbol_1_0, "false");

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleUnlimitedNaturalLiteralExpCS

-entryRuleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }

-	 iv_ruleUnlimitedNaturalLiteralExpCS=ruleUnlimitedNaturalLiteralExpCS 

-	 { $current=$iv_ruleUnlimitedNaturalLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule UnlimitedNaturalLiteralExpCS

-ruleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='*' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleInvalidLiteralExpCS

-entryRuleInvalidLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getInvalidLiteralExpCSRule()); }

-	 iv_ruleInvalidLiteralExpCS=ruleInvalidLiteralExpCS 

-	 { $current=$iv_ruleInvalidLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule InvalidLiteralExpCS

-ruleInvalidLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='invalid' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNullLiteralExpCS

-entryRuleNullLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNullLiteralExpCSRule()); }

-	 iv_ruleNullLiteralExpCS=ruleNullLiteralExpCS 

-	 { $current=$iv_ruleNullLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule NullLiteralExpCS

-ruleNullLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='null' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeLiteralCS

-entryRuleTypeLiteralCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeLiteralCSRule()); }

-	 iv_ruleTypeLiteralCS=ruleTypeLiteralCS 

-	 { $current=$iv_ruleTypeLiteralCS.current; } 

-	 EOF 

-;

-

-// Rule TypeLiteralCS

-ruleTypeLiteralCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); 

-    }

-    this_PrimitiveTypeCS_0=rulePrimitiveTypeCS

-    { 

-        $current = $this_PrimitiveTypeCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); 

-    }

-    this_CollectionTypeCS_1=ruleCollectionTypeCS

-    { 

-        $current = $this_CollectionTypeCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); 

-    }

-    this_TupleTypeCS_2=ruleTupleTypeCS

-    { 

-        $current = $this_TupleTypeCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeLiteralWithMultiplicityCS

-entryRuleTypeLiteralWithMultiplicityCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }

-	 iv_ruleTypeLiteralWithMultiplicityCS=ruleTypeLiteralWithMultiplicityCS 

-	 { $current=$iv_ruleTypeLiteralWithMultiplicityCS.current; } 

-	 EOF 

-;

-

-// Rule TypeLiteralWithMultiplicityCS

-ruleTypeLiteralWithMultiplicityCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); 

-    }

-    this_TypeLiteralCS_0=ruleTypeLiteralCS

-    { 

-        $current = $this_TypeLiteralCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedMultiplicity_1_0=ruleMultiplicityCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeLiteralWithMultiplicityCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMultiplicity",

-        		lv_ownedMultiplicity_1_0, 

-        		"MultiplicityCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeLiteralExpCS

-entryRuleTypeLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeLiteralExpCSRule()); }

-	 iv_ruleTypeLiteralExpCS=ruleTypeLiteralExpCS 

-	 { $current=$iv_ruleTypeLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule TypeLiteralExpCS

-ruleTypeLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); 

-	    }

-		lv_ownedType_0_0=ruleTypeLiteralWithMultiplicityCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_0_0, 

-        		"TypeLiteralWithMultiplicityCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeNameExpCS

-entryRuleTypeNameExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeNameExpCSRule()); }

-	 iv_ruleTypeNameExpCS=ruleTypeNameExpCS 

-	 { $current=$iv_ruleTypeNameExpCS.current; } 

-	 EOF 

-;

-

-// Rule TypeNameExpCS

-ruleTypeNameExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathName_0_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_0_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); 

-	    }

-		lv_ownedCurlyBracketedClause_1_0=ruleCurlyBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCurlyBracketedClause",

-        		lv_ownedCurlyBracketedClause_1_0, 

-        		"CurlyBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2='{' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); 

-	    }

-		lv_ownedPatternGuard_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPatternGuard",

-        		lv_ownedPatternGuard_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_4='}' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2());

-    }

-)?)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeExpCS

-entryRuleTypeExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeExpCSRule()); }

-	 iv_ruleTypeExpCS=ruleTypeExpCS 

-	 { $current=$iv_ruleTypeExpCS.current; } 

-	 EOF 

-;

-

-// Rule TypeExpCS

-ruleTypeExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); 

-    }

-    this_TypeNameExpCS_0=ruleTypeNameExpCS

-    { 

-        $current = $this_TypeNameExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); 

-    }

-    this_TypeLiteralCS_1=ruleTypeLiteralCS

-    { 

-        $current = $this_TypeLiteralCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); 

-    }

-    this_CollectionPatternCS_2=ruleCollectionPatternCS

-    { 

-        $current = $this_CollectionPatternCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedMultiplicity_3_0=ruleMultiplicityCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMultiplicity",

-        		lv_ownedMultiplicity_3_0, 

-        		"MultiplicityCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleExpCS

-entryRuleExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getExpCSRule()); }

-	 iv_ruleExpCS=ruleExpCS 

-	 { $current=$iv_ruleExpCS.current; } 

-	 EOF 

-;

-

-// Rule ExpCS

-ruleExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); 

-    }

-    this_PrefixedPrimaryExpCS_0=rulePrefixedPrimaryExpCS

-    { 

-        $current = $this_PrefixedPrimaryExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElementAndSet(

-            grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0(),

-            $current);

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); 

-	    }

-		lv_name_2_0=ruleBinaryOperatorName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_2_0, 

-        		"BinaryOperatorName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); 

-	    }

-		lv_ownedRight_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRight",

-        		lv_ownedRight_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); 

-    }

-    this_PrefixedLetExpCS_4=rulePrefixedLetExpCS

-    { 

-        $current = $this_PrefixedLetExpCS_4.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrefixedLetExpCS

-entryRulePrefixedLetExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrefixedLetExpCSRule()); }

-	 iv_rulePrefixedLetExpCS=rulePrefixedLetExpCS 

-	 { $current=$iv_rulePrefixedLetExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrefixedLetExpCS

-rulePrefixedLetExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0(),

-            $current);

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 

-	    }

-		lv_name_1_0=ruleUnaryOperatorName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnaryOperatorName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); 

-	    }

-		lv_ownedRight_2_0=rulePrefixedLetExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRight",

-        		lv_ownedRight_2_0, 

-        		"PrefixedLetExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); 

-    }

-    this_LetExpCS_3=ruleLetExpCS

-    { 

-        $current = $this_LetExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrefixedPrimaryExpCS

-entryRulePrefixedPrimaryExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSRule()); }

-	 iv_rulePrefixedPrimaryExpCS=rulePrefixedPrimaryExpCS 

-	 { $current=$iv_rulePrefixedPrimaryExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrefixedPrimaryExpCS

-rulePrefixedPrimaryExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0(),

-            $current);

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 

-	    }

-		lv_name_1_0=ruleUnaryOperatorName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnaryOperatorName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); 

-	    }

-		lv_ownedRight_2_0=rulePrefixedPrimaryExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRight",

-        		lv_ownedRight_2_0, 

-        		"PrefixedPrimaryExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); 

-    }

-    this_PrimaryExpCS_3=rulePrimaryExpCS

-    { 

-        $current = $this_PrimaryExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrimaryExpCS

-entryRulePrimaryExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimaryExpCSRule()); }

-	 iv_rulePrimaryExpCS=rulePrimaryExpCS 

-	 { $current=$iv_rulePrimaryExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrimaryExpCS

-rulePrimaryExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); 

-    }

-    this_NestedExpCS_0=ruleNestedExpCS

-    { 

-        $current = $this_NestedExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); 

-    }

-    this_IfExpCS_1=ruleIfExpCS

-    { 

-        $current = $this_IfExpCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); 

-    }

-    this_SelfExpCS_2=ruleSelfExpCS

-    { 

-        $current = $this_SelfExpCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); 

-    }

-    this_PrimitiveLiteralExpCS_3=rulePrimitiveLiteralExpCS

-    { 

-        $current = $this_PrimitiveLiteralExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); 

-    }

-    this_TupleLiteralExpCS_4=ruleTupleLiteralExpCS

-    { 

-        $current = $this_TupleLiteralExpCS_4.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); 

-    }

-    this_CollectionLiteralExpCS_5=ruleCollectionLiteralExpCS

-    { 

-        $current = $this_CollectionLiteralExpCS_5.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); 

-    }

-    this_LambdaLiteralExpCS_6=ruleLambdaLiteralExpCS

-    { 

-        $current = $this_LambdaLiteralExpCS_6.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); 

-    }

-    this_TypeLiteralExpCS_7=ruleTypeLiteralExpCS

-    { 

-        $current = $this_TypeLiteralExpCS_7.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); 

-    }

-    this_NameExpCS_8=ruleNameExpCS

-    { 

-        $current = $this_NameExpCS_8.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNameExpCS

-entryRuleNameExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNameExpCSRule()); }

-	 iv_ruleNameExpCS=ruleNameExpCS 

-	 { $current=$iv_ruleNameExpCS.current; } 

-	 EOF 

-;

-

-// Rule NameExpCS

-ruleNameExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathName_0_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_0_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedSquareBracketedClauses_1_0=ruleSquareBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSquareBracketedClauses",

-        		lv_ownedSquareBracketedClauses_1_0, 

-        		"SquareBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedRoundBracketedClause_2_0=ruleRoundBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRoundBracketedClause",

-        		lv_ownedRoundBracketedClause_2_0, 

-        		"RoundBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedCurlyBracketedClause_3_0=ruleCurlyBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCurlyBracketedClause",

-        		lv_ownedCurlyBracketedClause_3_0, 

-        		"CurlyBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?((

-(

-		lv_isPre_4_0=	'@' 

-    {

-        newLeafNode(lv_isPre_4_0, grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNameExpCSRule());

-	        }

-       		setWithLastConsumed($current, "isPre", true, "@");

-	    }

-

-)

-)	otherlv_5='pre' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getNameExpCSAccess().getPreKeyword_4_1());

-    }

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleCurlyBracketedClauseCS

-entryRuleCurlyBracketedClauseCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCurlyBracketedClauseCSRule()); }

-	 iv_ruleCurlyBracketedClauseCS=ruleCurlyBracketedClauseCS 

-	 { $current=$iv_ruleCurlyBracketedClauseCS.current; } 

-	 EOF 

-;

-

-// Rule CurlyBracketedClauseCS

-ruleCurlyBracketedClauseCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0(),

-            $current);

-    }

-)	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); 

-	    }

-		lv_ownedParts_2_0=ruleConstructorPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"ConstructorPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleConstructorPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"ConstructorPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); 

-	    }

-		lv_value_5_0=ruleStringLiteral		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());

-	        }

-       		set(

-       			$current, 

-       			"value",

-        		lv_value_5_0, 

-        		"StringLiteral");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))	otherlv_6='}' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleRoundBracketedClauseCS

-entryRuleRoundBracketedClauseCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getRoundBracketedClauseCSRule()); }

-	 iv_ruleRoundBracketedClauseCS=ruleRoundBracketedClauseCS 

-	 { $current=$iv_ruleRoundBracketedClauseCS.current; } 

-	 EOF 

-;

-

-// Rule RoundBracketedClauseCS

-ruleRoundBracketedClauseCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0(),

-            $current);

-    }

-)	otherlv_1='(' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedArguments_2_0=ruleNavigatingArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_2_0, 

-        		"NavigatingArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedArguments_3_0=ruleNavigatingCommaArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_3_0, 

-        		"NavigatingCommaArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); 

-	    }

-		lv_ownedArguments_4_0=ruleNavigatingSemiArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_4_0, 

-        		"NavigatingSemiArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); 

-	    }

-		lv_ownedArguments_5_0=ruleNavigatingCommaArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_5_0, 

-        		"NavigatingCommaArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*)?((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); 

-	    }

-		lv_ownedArguments_6_0=ruleNavigatingBarArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_6_0, 

-        		"NavigatingBarArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); 

-	    }

-		lv_ownedArguments_7_0=ruleNavigatingCommaArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_7_0, 

-        		"NavigatingCommaArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*)*)?	otherlv_8=')' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleSquareBracketedClauseCS

-entryRuleSquareBracketedClauseCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getSquareBracketedClauseCSRule()); }

-	 iv_ruleSquareBracketedClauseCS=ruleSquareBracketedClauseCS 

-	 { $current=$iv_ruleSquareBracketedClauseCS.current; } 

-	 EOF 

-;

-

-// Rule SquareBracketedClauseCS

-ruleSquareBracketedClauseCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='[' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedTerms_1_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedTerms",

-        		lv_ownedTerms_1_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedTerms_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedTerms",

-        		lv_ownedTerms_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4=']' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingArgCS

-entryRuleNavigatingArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingArgCSRule()); }

-	 iv_ruleNavigatingArgCS=ruleNavigatingArgCS 

-	 { $current=$iv_ruleNavigatingArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingArgCS

-ruleNavigatingArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); 

-	    }

-		lv_ownedNameExpression_0_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_0_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3='=' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); 

-	    }

-		lv_ownedInitExpression_4_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_4_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |(	otherlv_5='in' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); 

-	    }

-		lv_ownedInitExpression_6_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_6_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-    |(	otherlv_7=':' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedType_8_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_8_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingBarArgCS

-entryRuleNavigatingBarArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingBarArgCSRule()); }

-	 iv_ruleNavigatingBarArgCS=ruleNavigatingBarArgCS 

-	 { $current=$iv_ruleNavigatingBarArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingBarArgCS

-ruleNavigatingBarArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_prefix_0_0=	'|' 

-    {

-        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, "|");

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_1_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)?)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingCommaArgCS

-entryRuleNavigatingCommaArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingCommaArgCSRule()); }

-	 iv_ruleNavigatingCommaArgCS=ruleNavigatingCommaArgCS 

-	 { $current=$iv_ruleNavigatingCommaArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingCommaArgCS

-ruleNavigatingCommaArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_prefix_0_0=	',' 

-    {

-        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ",");

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_1_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |(	otherlv_6='in' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedInitExpression_7_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_7_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingSemiArgCS

-entryRuleNavigatingSemiArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingSemiArgCSRule()); }

-	 iv_ruleNavigatingSemiArgCS=ruleNavigatingSemiArgCS 

-	 { $current=$iv_ruleNavigatingSemiArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingSemiArgCS

-ruleNavigatingSemiArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_prefix_0_0=	';' 

-    {

-        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ";");

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_1_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)?)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingArgExpCS

-entryRuleNavigatingArgExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingArgExpCSRule()); }

-	 iv_ruleNavigatingArgExpCS=ruleNavigatingArgExpCS 

-	 { $current=$iv_ruleNavigatingArgExpCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingArgExpCS

-ruleNavigatingArgExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); 

-    }

-    this_ExpCS_0=ruleExpCS

-    { 

-        $current = $this_ExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-;

-

-

-

-

-

-// Entry rule entryRuleIfExpCS

-entryRuleIfExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIfExpCSRule()); }

-	 iv_ruleIfExpCS=ruleIfExpCS 

-	 { $current=$iv_ruleIfExpCS.current; } 

-	 EOF 

-;

-

-// Rule IfExpCS

-ruleIfExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='if' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getIfExpCSAccess().getIfKeyword_0());

-    }

-(

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); 

-	    }

-		lv_ownedCondition_1_1=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCondition",

-        		lv_ownedCondition_1_1, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-    |		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); 

-	    }

-		lv_ownedCondition_1_2=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCondition",

-        		lv_ownedCondition_1_2, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-

-)

-)	otherlv_2='then' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getIfExpCSAccess().getThenKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedThenExpression_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedThenExpression",

-        		lv_ownedThenExpression_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedIfThenExpressions_4_0=ruleElseIfThenExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedIfThenExpressions",

-        		lv_ownedIfThenExpressions_4_0, 

-        		"ElseIfThenExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_5='else' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getIfExpCSAccess().getElseKeyword_5());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); 

-	    }

-		lv_ownedElseExpression_6_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedElseExpression",

-        		lv_ownedElseExpression_6_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_7='endif' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getIfExpCSAccess().getEndifKeyword_7());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleElseIfThenExpCS

-entryRuleElseIfThenExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getElseIfThenExpCSRule()); }

-	 iv_ruleElseIfThenExpCS=ruleElseIfThenExpCS 

-	 { $current=$iv_ruleElseIfThenExpCS.current; } 

-	 EOF 

-;

-

-// Rule ElseIfThenExpCS

-ruleElseIfThenExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='elseif' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedCondition_1_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCondition",

-        		lv_ownedCondition_1_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_2='then' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedThenExpression_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedThenExpression",

-        		lv_ownedThenExpression_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLetExpCS

-entryRuleLetExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLetExpCSRule()); }

-	 iv_ruleLetExpCS=ruleLetExpCS 

-	 { $current=$iv_ruleLetExpCS.current; } 

-	 EOF 

-;

-

-// Rule LetExpCS

-ruleLetExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='let' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLetExpCSAccess().getLetKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedVariables_1_0=ruleLetVariableCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedVariables",

-        		lv_ownedVariables_1_0, 

-        		"LetVariableCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedVariables_3_0=ruleLetVariableCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedVariables",

-        		lv_ownedVariables_3_0, 

-        		"LetVariableCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4='in' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getLetExpCSAccess().getInKeyword_3());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedInExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInExpression",

-        		lv_ownedInExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLetVariableCS

-entryRuleLetVariableCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLetVariableCSRule()); }

-	 iv_ruleLetVariableCS=ruleLetVariableCS 

-	 { $current=$iv_ruleLetVariableCS.current; } 

-	 EOF 

-;

-

-// Rule LetVariableCS

-ruleLetVariableCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedRoundBracketedClause_1_0=ruleRoundBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRoundBracketedClause",

-        		lv_ownedRoundBracketedClause_1_0, 

-        		"RoundBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleNestedExpCS

-entryRuleNestedExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNestedExpCSRule()); }

-	 iv_ruleNestedExpCS=ruleNestedExpCS 

-	 { $current=$iv_ruleNestedExpCS.current; } 

-	 EOF 

-;

-

-// Rule NestedExpCS

-ruleNestedExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='(' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedExpression_1_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNestedExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_1_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_2=')' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleSelfExpCS

-entryRuleSelfExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getSelfExpCSRule()); }

-	 iv_ruleSelfExpCS=ruleSelfExpCS 

-	 { $current=$iv_ruleSelfExpCS.current; } 

-	 EOF 

-;

-

-// Rule SelfExpCS

-ruleSelfExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='self' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getSelfExpCSAccess().getSelfKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleMultiplicityBoundsCS

-entryRuleMultiplicityBoundsCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMultiplicityBoundsCSRule()); }

-	 iv_ruleMultiplicityBoundsCS=ruleMultiplicityBoundsCS 

-	 { $current=$iv_ruleMultiplicityBoundsCS.current; } 

-	 EOF 

-;

-

-// Rule MultiplicityBoundsCS

-ruleMultiplicityBoundsCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); 

-	    }

-		lv_lowerBound_0_0=ruleLOWER		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());

-	        }

-       		set(

-       			$current, 

-       			"lowerBound",

-        		lv_lowerBound_0_0, 

-        		"LOWER");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='..' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); 

-	    }

-		lv_upperBound_2_0=ruleUPPER		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());

-	        }

-       		set(

-       			$current, 

-       			"upperBound",

-        		lv_upperBound_2_0, 

-        		"UPPER");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-;

-

-

-

-

-

-// Entry rule entryRuleMultiplicityCS

-entryRuleMultiplicityCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMultiplicityCSRule()); }

-	 iv_ruleMultiplicityCS=ruleMultiplicityCS 

-	 { $current=$iv_ruleMultiplicityCS.current; } 

-	 EOF 

-;

-

-// Rule MultiplicityCS

-ruleMultiplicityCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='[' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0());

-    }

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); 

-    }

-    this_MultiplicityBoundsCS_1=ruleMultiplicityBoundsCS

-    { 

-        $current = $this_MultiplicityBoundsCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); 

-    }

-    this_MultiplicityStringCS_2=ruleMultiplicityStringCS

-    { 

-        $current = $this_MultiplicityStringCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)	otherlv_3=']' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleMultiplicityStringCS

-entryRuleMultiplicityStringCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMultiplicityStringCSRule()); }

-	 iv_ruleMultiplicityStringCS=ruleMultiplicityStringCS 

-	 { $current=$iv_ruleMultiplicityStringCS.current; } 

-	 EOF 

-;

-

-// Rule MultiplicityStringCS

-ruleMultiplicityStringCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-(

-		lv_stringBounds_0_1=	'*' 

-    {

-        newLeafNode(lv_stringBounds_0_1, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_1, null);

-	    }

-

-    |		lv_stringBounds_0_2=	'+' 

-    {

-        newLeafNode(lv_stringBounds_0_2, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_2, null);

-	    }

-

-    |		lv_stringBounds_0_3=	'?' 

-    {

-        newLeafNode(lv_stringBounds_0_3, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_3, null);

-	    }

-

-)

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRulePathNameCS

-entryRulePathNameCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPathNameCSRule()); }

-	 iv_rulePathNameCS=rulePathNameCS 

-	 { $current=$iv_rulePathNameCS.current; } 

-	 EOF 

-;

-

-// Rule PathNameCS

-rulePathNameCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathElements_0_0=ruleFirstPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_0_0, 

-        		"FirstPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='::' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedPathElements_2_0=ruleNextPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_2_0, 

-        		"NextPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)

-;

-

-

-

-

-

-// Entry rule entryRuleFirstPathElementCS

-entryRuleFirstPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getFirstPathElementCSRule()); }

-	 iv_ruleFirstPathElementCS=ruleFirstPathElementCS 

-	 { $current=$iv_ruleFirstPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule FirstPathElementCS

-ruleFirstPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getFirstPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNextPathElementCS

-entryRuleNextPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNextPathElementCSRule()); }

-	 iv_ruleNextPathElementCS=ruleNextPathElementCS 

-	 { $current=$iv_ruleNextPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule NextPathElementCS

-ruleNextPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNextPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 

-	    }

-		ruleUnreservedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTemplateParameterSubstitutionCS

-entryRuleTemplateParameterSubstitutionCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSRule()); }

-	 iv_ruleTemplateParameterSubstitutionCS=ruleTemplateParameterSubstitutionCS 

-	 { $current=$iv_ruleTemplateParameterSubstitutionCS.current; } 

-	 EOF 

-;

-

-// Rule TemplateParameterSubstitutionCS

-ruleTemplateParameterSubstitutionCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); 

-	    }

-		lv_ownedActualParameter_0_0=ruleTypeRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateParameterSubstitutionCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedActualParameter",

-        		lv_ownedActualParameter_0_0, 

-        		"TypeRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeParameterCS

-entryRuleTypeParameterCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeParameterCSRule()); }

-	 iv_ruleTypeParameterCS=ruleTypeParameterCS 

-	 { $current=$iv_ruleTypeParameterCS.current; } 

-	 EOF 

-;

-

-// Rule TypeParameterCS

-ruleTypeParameterCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((	otherlv_1='extends' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); 

-	    }

-		lv_ownedExtends_2_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_2_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3='&&' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); 

-	    }

-		lv_ownedExtends_4_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_4_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)

-    |(	otherlv_5='super' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); 

-	    }

-		lv_ownedSuper_6_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSuper",

-        		lv_ownedSuper_6_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeRefCS

-entryRuleTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeRefCSRule()); }

-	 iv_ruleTypeRefCS=ruleTypeRefCS 

-	 { $current=$iv_ruleTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypeRefCS

-ruleTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); 

-    }

-    this_TypedRefCS_0=ruleTypedRefCS

-    { 

-        $current = $this_TypedRefCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); 

-    }

-    this_WildcardTypeRefCS_1=ruleWildcardTypeRefCS

-    { 

-        $current = $this_WildcardTypeRefCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypedTypeRefCS

-entryRuleTypedTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypedTypeRefCSRule()); }

-	 iv_ruleTypedTypeRefCS=ruleTypedTypeRefCS 

-	 { $current=$iv_ruleTypedTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypedTypeRefCS

-ruleTypedTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathName_0_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_0_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedBinding_1_0=ruleTemplateBindingCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedBinding",

-        		lv_ownedBinding_1_0, 

-        		"TemplateBindingCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleWildcardTypeRefCS

-entryRuleWildcardTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getWildcardTypeRefCSRule()); }

-	 iv_ruleWildcardTypeRefCS=ruleWildcardTypeRefCS 

-	 { $current=$iv_ruleWildcardTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule WildcardTypeRefCS

-ruleWildcardTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0(),

-            $current);

-    }

-)	otherlv_1='?' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1());

-    }

-((	otherlv_2='extends' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); 

-	    }

-		lv_ownedExtends_3_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_3_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |(	otherlv_4='super' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedSuper_5_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSuper",

-        		lv_ownedSuper_5_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-;

-

-

-

-

-

-// Entry rule entryRuleID

-entryRuleID returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIDRule()); } 

-	 iv_ruleID=ruleID 

-	 { $current=$iv_ruleID.current.getText(); }  

-	 EOF 

-;

-

-// Rule ID

-ruleID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(    this_SIMPLE_ID_0=RULE_SIMPLE_ID    {

-		$current.merge(this_SIMPLE_ID_0);

-    }

-

-    { 

-    newLeafNode(this_SIMPLE_ID_0, grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); 

-    }

-

-    |    this_ESCAPED_ID_1=RULE_ESCAPED_ID    {

-		$current.merge(this_ESCAPED_ID_1);

-    }

-

-    { 

-    newLeafNode(this_ESCAPED_ID_1, grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleIdentifier

-entryRuleIdentifier returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIdentifierRule()); } 

-	 iv_ruleIdentifier=ruleIdentifier 

-	 { $current=$iv_ruleIdentifier.current.getText(); }  

-	 EOF 

-;

-

-// Rule Identifier

-ruleIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); 

-    }

-    this_ID_0=ruleID    {

-		$current.merge(this_ID_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleLOWER

-entryRuleLOWER returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLOWERRule()); } 

-	 iv_ruleLOWER=ruleLOWER 

-	 { $current=$iv_ruleLOWER.current.getText(); }  

-	 EOF 

-;

-

-// Rule LOWER

-ruleLOWER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_INT_0=RULE_INT    {

-		$current.merge(this_INT_0);

-    }

-

-    { 

-    newLeafNode(this_INT_0, grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleNUMBER_LITERAL

-entryRuleNUMBER_LITERAL returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNUMBER_LITERALRule()); } 

-	 iv_ruleNUMBER_LITERAL=ruleNUMBER_LITERAL 

-	 { $current=$iv_ruleNUMBER_LITERAL.current.getText(); }  

-	 EOF 

-;

-

-// Rule NUMBER_LITERAL

-ruleNUMBER_LITERAL returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_INT_0=RULE_INT    {

-		$current.merge(this_INT_0);

-    }

-

-    { 

-    newLeafNode(this_INT_0, grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleStringLiteral

-entryRuleStringLiteral returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getStringLiteralRule()); } 

-	 iv_ruleStringLiteral=ruleStringLiteral 

-	 { $current=$iv_ruleStringLiteral.current.getText(); }  

-	 EOF 

-;

-

-// Rule StringLiteral

-ruleStringLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {

-		$current.merge(this_SINGLE_QUOTED_STRING_0);

-    }

-

-    { 

-    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleUPPER

-entryRuleUPPER returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUPPERRule()); } 

-	 iv_ruleUPPER=ruleUPPER 

-	 { $current=$iv_ruleUPPER.current.getText(); }  

-	 EOF 

-;

-

-// Rule UPPER

-ruleUPPER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(    this_INT_0=RULE_INT    {

-		$current.merge(this_INT_0);

-    }

-

-    { 

-    newLeafNode(this_INT_0, grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); 

-    }

-

-    |

-	kw='*' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleURI

-entryRuleURI returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getURIRule()); } 

-	 iv_ruleURI=ruleURI 

-	 { $current=$iv_ruleURI.current.getText(); }  

-	 EOF 

-;

-

-// Rule URI

-ruleURI returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {

-		$current.merge(this_SINGLE_QUOTED_STRING_0);

-    }

-

-    { 

-    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-RULE_UNQUOTED_STRING : '\u00A3$%^\u00A3$%^';

-

-fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');

-

-fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');

-

-RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';

-

-RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';

-

-RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';

-

-RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;

-

-RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;

-

-RULE_INT : ('0'..'9')+;

-

-RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';

-

-RULE_SL_COMMENT : '--' ~(('\n'|'\r'))* ('\r'? '\n')?;

-

-RULE_WS : (' '|'\t'|'\r'|'\n')+;

-

-RULE_ANY_OTHER : .;

-

-

+/*
+ * generated by Xtext
+ */
+grammar InternalOCLinEcore;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.ocl.xtext.oclinecore.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.ocl.xtext.oclinecore.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.ocl.xtext.oclinecore.services.OCLinEcoreGrammarAccess;
+
+}
+
+@parser::members {
+
+/*
+  This grammar contains a lot of empty actions to work around a bug in ANTLR.
+  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.
+*/
+ 
+ 	private OCLinEcoreGrammarAccess grammarAccess;
+ 	
+    public InternalOCLinEcoreParser(TokenStream input, OCLinEcoreGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "TopLevelCS";	
+   	}
+   	
+   	@Override
+   	protected OCLinEcoreGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleTopLevelCS
+entryRuleTopLevelCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTopLevelCSRule()); }
+	 iv_ruleTopLevelCS=ruleTopLevelCS 
+	 { $current=$iv_ruleTopLevelCS.current; } 
+	 EOF 
+;
+
+// Rule TopLevelCS
+ruleTopLevelCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getTopLevelCSAccess().getTopLevelCSAction_0(),
+            $current);
+    }
+)(	otherlv_1='module' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTopLevelCSAccess().getModuleKeyword_1_0());
+    }
+
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTopLevelCSAccess().getUnrestrictedNameParserRuleCall_1_1()); 
+    }
+ruleUnrestrictedName
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTopLevelCSAccess().getOwnedLibrariesLibraryCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedLibraries_3_0=ruleLibraryCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTopLevelCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedLibraries",
+        		lv_ownedLibraries_3_0, 
+        		"LibraryCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTopLevelCSAccess().getOwnedImportsImportCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedImports_4_0=ruleImportCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTopLevelCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedImports",
+        		lv_ownedImports_4_0, 
+        		"ImportCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTopLevelCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedPackages_5_0=rulePackageCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTopLevelCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPackages",
+        		lv_ownedPackages_5_0, 
+        		"PackageCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleSIGNED
+entryRuleSIGNED returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSIGNEDRule()); } 
+	 iv_ruleSIGNED=ruleSIGNED 
+	 { $current=$iv_ruleSIGNED.current.getText(); }  
+	 EOF 
+;
+
+// Rule SIGNED
+ruleSIGNED returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getSIGNEDAccess().getHyphenMinusKeyword_0()); 
+    }
+)?    this_INT_1=RULE_INT    {
+		$current.merge(this_INT_1);
+    }
+
+    { 
+    newLeafNode(this_INT_1, grammarAccess.getSIGNEDAccess().getINTTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleEnumerationLiteralName
+entryRuleEnumerationLiteralName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEnumerationLiteralNameRule()); } 
+	 iv_ruleEnumerationLiteralName=ruleEnumerationLiteralName 
+	 { $current=$iv_ruleEnumerationLiteralName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EnumerationLiteralName
+ruleEnumerationLiteralName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getEnumerationLiteralNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall_0()); 
+    }
+    this_EssentialOCLUnrestrictedName_0=ruleEssentialOCLUnrestrictedName    {
+		$current.merge(this_EssentialOCLUnrestrictedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	kw='abstract' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getAbstractKeyword_1()); 
+    }
+
+    |
+	kw='attribute' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getAttributeKeyword_2()); 
+    }
+
+    |
+	kw='body' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getBodyKeyword_3()); 
+    }
+
+    |
+	kw='callable' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getCallableKeyword_4()); 
+    }
+
+    |
+	kw='class' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getClassKeyword_5()); 
+    }
+
+    |
+	kw='composes' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getComposesKeyword_6()); 
+    }
+
+    |
+	kw='datatype' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getDatatypeKeyword_7()); 
+    }
+
+    |
+	kw='definition' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getDefinitionKeyword_8()); 
+    }
+
+    |
+	kw='derivation' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getDerivationKeyword_9()); 
+    }
+
+    |
+	kw='derived' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getDerivedKeyword_10()); 
+    }
+
+    |
+	kw='enum' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getEnumKeyword_11()); 
+    }
+
+    |
+	kw='extends' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getExtendsKeyword_12()); 
+    }
+
+    |
+	kw='id' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getIdKeyword_13()); 
+    }
+
+    |
+	kw='import' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getImportKeyword_14()); 
+    }
+
+    |
+	kw='initial' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getInitialKeyword_15()); 
+    }
+
+    |
+	kw='interface' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getInterfaceKeyword_16()); 
+    }
+
+    |
+	kw='key' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getKeyKeyword_17()); 
+    }
+
+    |
+	kw='library' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getLibraryKeyword_18()); 
+    }
+
+    |
+	kw='module' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getModuleKeyword_19()); 
+    }
+
+    |
+	kw='operation' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getOperationKeyword_20()); 
+    }
+
+    |
+	kw='ordered' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getOrderedKeyword_21()); 
+    }
+
+    |
+	kw='package' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getPackageKeyword_22()); 
+    }
+
+    |
+	kw='postcondition' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getPostconditionKeyword_23()); 
+    }
+
+    |
+	kw='precondition' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getPreconditionKeyword_24()); 
+    }
+
+    |
+	kw='primitive' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getPrimitiveKeyword_25()); 
+    }
+
+    |
+	kw='property' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getPropertyKeyword_26()); 
+    }
+
+    |
+	kw='readonly' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getReadonlyKeyword_27()); 
+    }
+
+    |
+	kw='reference' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getReferenceKeyword_28()); 
+    }
+
+    |
+	kw='resolve' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getResolveKeyword_29()); 
+    }
+
+    |
+	kw='static' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getStaticKeyword_30()); 
+    }
+
+    |
+	kw='super' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getSuperKeyword_31()); 
+    }
+
+    |
+	kw='throws' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getThrowsKeyword_32()); 
+    }
+
+    |
+	kw='transient' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getTransientKeyword_33()); 
+    }
+
+    |
+	kw='unique' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getUniqueKeyword_34()); 
+    }
+
+    |
+	kw='unsettable' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getUnsettableKeyword_35()); 
+    }
+
+    |
+	kw='volatile' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEnumerationLiteralNameAccess().getVolatileKeyword_36()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleInvariantConstraintCS
+entryRuleInvariantConstraintCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInvariantConstraintCSRule()); }
+	 iv_ruleInvariantConstraintCS=ruleInvariantConstraintCS 
+	 { $current=$iv_ruleInvariantConstraintCS.current; } 
+	 EOF 
+;
+
+// Rule InvariantConstraintCS
+ruleInvariantConstraintCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_isCallable_0_0=	'callable' 
+    {
+        newLeafNode(lv_isCallable_0_0, grammarAccess.getInvariantConstraintCSAccess().getIsCallableCallableKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getInvariantConstraintCSRule());
+	        }
+       		setWithLastConsumed($current, "isCallable", true, "callable");
+	    }
+
+)
+)?(
+(
+		lv_stereotype_1_0=	'invariant' 
+    {
+        newLeafNode(lv_stereotype_1_0, grammarAccess.getInvariantConstraintCSAccess().getStereotypeInvariantKeyword_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getInvariantConstraintCSRule());
+	        }
+       		setWithLastConsumed($current, "stereotype", lv_stereotype_1_0, "invariant");
+	    }
+
+)
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInvariantConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_2_0_0()); 
+	    }
+		lv_name_2_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInvariantConstraintCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='(' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getInvariantConstraintCSAccess().getLeftParenthesisKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInvariantConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedMessageSpecification_4_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInvariantConstraintCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMessageSpecification",
+        		lv_ownedMessageSpecification_4_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getInvariantConstraintCSAccess().getRightParenthesisKeyword_2_1_2());
+    }
+)?)?((	otherlv_6=':' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getInvariantConstraintCSAccess().getColonKeyword_3_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInvariantConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0_1_0()); 
+	    }
+		lv_ownedSpecification_7_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInvariantConstraintCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSpecification",
+        		lv_ownedSpecification_7_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_8=';' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getInvariantConstraintCSAccess().getSemicolonKeyword_3_0_2());
+    }
+)
+    |	otherlv_9=';' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getInvariantConstraintCSAccess().getSemicolonKeyword_3_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRulePostconditionConstraintCS
+entryRulePostconditionConstraintCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPostconditionConstraintCSRule()); }
+	 iv_rulePostconditionConstraintCS=rulePostconditionConstraintCS 
+	 { $current=$iv_rulePostconditionConstraintCS.current; } 
+	 EOF 
+;
+
+// Rule PostconditionConstraintCS
+rulePostconditionConstraintCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_stereotype_0_0=	'postcondition' 
+    {
+        newLeafNode(lv_stereotype_0_0, grammarAccess.getPostconditionConstraintCSAccess().getStereotypePostconditionKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPostconditionConstraintCSRule());
+	        }
+       		setWithLastConsumed($current, "stereotype", lv_stereotype_0_0, "postcondition");
+	    }
+
+)
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPostconditionConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); 
+	    }
+		lv_name_1_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPostconditionConstraintCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPostconditionConstraintCSAccess().getLeftParenthesisKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPostconditionConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); 
+	    }
+		lv_ownedMessageSpecification_3_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPostconditionConstraintCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMessageSpecification",
+        		lv_ownedMessageSpecification_3_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getPostconditionConstraintCSAccess().getRightParenthesisKeyword_1_1_2());
+    }
+)?)?	otherlv_5=':' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getPostconditionConstraintCSAccess().getColonKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPostconditionConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedSpecification_6_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPostconditionConstraintCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSpecification",
+        		lv_ownedSpecification_6_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_7=';' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getPostconditionConstraintCSAccess().getSemicolonKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePreconditionConstraintCS
+entryRulePreconditionConstraintCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPreconditionConstraintCSRule()); }
+	 iv_rulePreconditionConstraintCS=rulePreconditionConstraintCS 
+	 { $current=$iv_rulePreconditionConstraintCS.current; } 
+	 EOF 
+;
+
+// Rule PreconditionConstraintCS
+rulePreconditionConstraintCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_stereotype_0_0=	'precondition' 
+    {
+        newLeafNode(lv_stereotype_0_0, grammarAccess.getPreconditionConstraintCSAccess().getStereotypePreconditionKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPreconditionConstraintCSRule());
+	        }
+       		setWithLastConsumed($current, "stereotype", lv_stereotype_0_0, "precondition");
+	    }
+
+)
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPreconditionConstraintCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); 
+	    }
+		lv_name_1_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPreconditionConstraintCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPreconditionConstraintCSAccess().getLeftParenthesisKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPreconditionConstraintCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); 
+	    }
+		lv_ownedMessageSpecification_3_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPreconditionConstraintCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMessageSpecification",
+        		lv_ownedMessageSpecification_3_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getPreconditionConstraintCSAccess().getRightParenthesisKeyword_1_1_2());
+    }
+)?)?	otherlv_5=':' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getPreconditionConstraintCSAccess().getColonKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPreconditionConstraintCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedSpecification_6_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPreconditionConstraintCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSpecification",
+        		lv_ownedSpecification_6_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_7=';' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getPreconditionConstraintCSAccess().getSemicolonKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleAnnotationCS
+entryRuleAnnotationCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAnnotationCSRule()); }
+	 iv_ruleAnnotationCS=ruleAnnotationCS 
+	 { $current=$iv_ruleAnnotationCS.current; } 
+	 EOF 
+;
+
+// Rule AnnotationCS
+ruleAnnotationCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getAnnotationCSAccess().getAnnotationCSAction_0(),
+            $current);
+    }
+)	otherlv_1='annotation' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getAnnotationCSAccess().getAnnotationKeyword_1());
+    }
+(
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getNameUnrestrictedNameParserRuleCall_2_0_0()); 
+	    }
+		lv_name_2_1=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_1, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		lv_name_2_2=RULE_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_name_2_2, grammarAccess.getAnnotationCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAnnotationCSRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_2_2, 
+        		"SINGLE_QUOTED_STRING");
+	    }
+
+)
+
+)
+)?(	otherlv_3='(' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getAnnotationCSAccess().getLeftParenthesisKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); 
+	    }
+		lv_ownedDetails_4_0=ruleDetailCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDetails",
+        		lv_ownedDetails_4_0, 
+        		"DetailCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5=',' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getAnnotationCSAccess().getCommaKeyword_3_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); 
+	    }
+		lv_ownedDetails_6_0=ruleDetailCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDetails",
+        		lv_ownedDetails_6_0, 
+        		"DetailCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_7=')' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getAnnotationCSAccess().getRightParenthesisKeyword_3_3());
+    }
+)?((	otherlv_8='{' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getAnnotationCSAccess().getLeftCurlyBracketKeyword_4_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_0_1_0_0()); 
+	    }
+		lv_ownedAnnotations_9_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_9_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedContentsModelElementCSParserRuleCall_4_0_1_1_0()); 
+	    }
+		lv_ownedContents_10_0=ruleModelElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedContents",
+        		lv_ownedContents_10_0, 
+        		"ModelElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedReferencesModelElementRefCSParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_ownedReferences_11_0=ruleModelElementRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedReferences",
+        		lv_ownedReferences_11_0, 
+        		"ModelElementRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))+	otherlv_12='}' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getAnnotationCSAccess().getRightCurlyBracketKeyword_4_0_2());
+    }
+)
+    |	otherlv_13=';' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getAnnotationCSAccess().getSemicolonKeyword_4_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleAnnotationElementCS
+entryRuleAnnotationElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAnnotationElementCSRule()); }
+	 iv_ruleAnnotationElementCS=ruleAnnotationElementCS 
+	 { $current=$iv_ruleAnnotationElementCS.current; } 
+	 EOF 
+;
+
+// Rule AnnotationElementCS
+ruleAnnotationElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getAnnotationElementCSAccess().getAnnotationCSParserRuleCall_0()); 
+    }
+    this_AnnotationCS_0=ruleAnnotationCS
+    { 
+        $current = $this_AnnotationCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getAnnotationElementCSAccess().getDocumentationCSParserRuleCall_1()); 
+    }
+    this_DocumentationCS_1=ruleDocumentationCS
+    { 
+        $current = $this_DocumentationCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getAnnotationElementCSAccess().getSysMLCSParserRuleCall_2()); 
+    }
+    this_SysMLCS_2=ruleSysMLCS
+    { 
+        $current = $this_SysMLCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleAttributeCS
+entryRuleAttributeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAttributeCSRule()); }
+	 iv_ruleAttributeCS=ruleAttributeCS 
+	 { $current=$iv_ruleAttributeCS.current; } 
+	 EOF 
+;
+
+// Rule AttributeCS
+ruleAttributeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((((
+(
+		lv_qualifiers_0_0=	'static' 
+    {
+        newLeafNode(lv_qualifiers_0_0, grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_0_0, "static");
+	    }
+
+)
+)(
+(
+		lv_qualifiers_1_0=	'definition' 
+    {
+        newLeafNode(lv_qualifiers_1_0, grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_1_0, "definition");
+	    }
+
+)
+)?)
+    |((
+(
+		lv_qualifiers_2_0=	'definition' 
+    {
+        newLeafNode(lv_qualifiers_2_0, grammarAccess.getAttributeCSAccess().getQualifiersDefinitionKeyword_0_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_2_0, "definition");
+	    }
+
+)
+)(
+(
+		lv_qualifiers_3_0=	'static' 
+    {
+        newLeafNode(lv_qualifiers_3_0, grammarAccess.getAttributeCSAccess().getQualifiersStaticKeyword_0_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_3_0, "static");
+	    }
+
+)
+)?))?	otherlv_4='attribute' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getAttributeCSAccess().getAttributeKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAttributeCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); 
+	    }
+		lv_name_5_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAttributeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_5_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6=':' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getAttributeCSAccess().getColonKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAttributeCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_3_1_0()); 
+	    }
+		lv_ownedType_7_0=ruleTypedMultiplicityRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAttributeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_7_0, 
+        		"TypedMultiplicityRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getAttributeCSAccess().getEqualsSignKeyword_4_0());
+    }
+(
+(
+		lv_default_9_0=RULE_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_default_9_0, grammarAccess.getAttributeCSAccess().getDefaultSINGLE_QUOTED_STRINGTerminalRuleCall_4_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"default",
+        		lv_default_9_0, 
+        		"SINGLE_QUOTED_STRING");
+	    }
+
+)
+))?(	otherlv_10='{' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_5_0());
+    }
+(((
+(
+		lv_qualifiers_11_0=	'derived' 
+    {
+        newLeafNode(lv_qualifiers_11_0, grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_11_0, "derived");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_12_0=	'!derived' 
+    {
+        newLeafNode(lv_qualifiers_12_0, grammarAccess.getAttributeCSAccess().getQualifiersDerivedKeyword_5_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_12_0, "!derived");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_13_0=	'id' 
+    {
+        newLeafNode(lv_qualifiers_13_0, grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_13_0, "id");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_14_0=	'!id' 
+    {
+        newLeafNode(lv_qualifiers_14_0, grammarAccess.getAttributeCSAccess().getQualifiersIdKeyword_5_1_0_3_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_14_0, "!id");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_15_0=	'ordered' 
+    {
+        newLeafNode(lv_qualifiers_15_0, grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_4_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_15_0, "ordered");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_16_0=	'!ordered' 
+    {
+        newLeafNode(lv_qualifiers_16_0, grammarAccess.getAttributeCSAccess().getQualifiersOrderedKeyword_5_1_0_5_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_16_0, "!ordered");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_17_0=	'readonly' 
+    {
+        newLeafNode(lv_qualifiers_17_0, grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_6_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_17_0, "readonly");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_18_0=	'!readonly' 
+    {
+        newLeafNode(lv_qualifiers_18_0, grammarAccess.getAttributeCSAccess().getQualifiersReadonlyKeyword_5_1_0_7_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_18_0, "!readonly");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_19_0=	'transient' 
+    {
+        newLeafNode(lv_qualifiers_19_0, grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_8_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_19_0, "transient");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_20_0=	'!transient' 
+    {
+        newLeafNode(lv_qualifiers_20_0, grammarAccess.getAttributeCSAccess().getQualifiersTransientKeyword_5_1_0_9_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_20_0, "!transient");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_21_0=	'unique' 
+    {
+        newLeafNode(lv_qualifiers_21_0, grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_10_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_21_0, "unique");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_22_0=	'!unique' 
+    {
+        newLeafNode(lv_qualifiers_22_0, grammarAccess.getAttributeCSAccess().getQualifiersUniqueKeyword_5_1_0_11_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_22_0, "!unique");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_23_0=	'unsettable' 
+    {
+        newLeafNode(lv_qualifiers_23_0, grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_12_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_23_0, "unsettable");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_24_0=	'!unsettable' 
+    {
+        newLeafNode(lv_qualifiers_24_0, grammarAccess.getAttributeCSAccess().getQualifiersUnsettableKeyword_5_1_0_13_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_24_0, "!unsettable");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_25_0=	'volatile' 
+    {
+        newLeafNode(lv_qualifiers_25_0, grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_14_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_25_0, "volatile");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_26_0=	'!volatile' 
+    {
+        newLeafNode(lv_qualifiers_26_0, grammarAccess.getAttributeCSAccess().getQualifiersVolatileKeyword_5_1_0_15_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_26_0, "!volatile");
+	    }
+
+)
+))(	otherlv_27=',' 
+    {
+    	newLeafNode(otherlv_27, grammarAccess.getAttributeCSAccess().getCommaKeyword_5_1_1());
+    }
+)?)+	otherlv_28='}' 
+    {
+    	newLeafNode(otherlv_28, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_5_2());
+    }
+)?((	otherlv_29='{' 
+    {
+    	newLeafNode(otherlv_29, grammarAccess.getAttributeCSAccess().getLeftCurlyBracketKeyword_6_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAttributeCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0_0()); 
+	    }
+		lv_ownedAnnotations_30_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAttributeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_30_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(	otherlv_31='derivation' 
+    {
+    	newLeafNode(otherlv_31, grammarAccess.getAttributeCSAccess().getDerivationKeyword_6_0_1_1_0());
+    }
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_1_1()); 
+    }
+ruleUnrestrictedName
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)?	otherlv_33=':' 
+    {
+    	newLeafNode(otherlv_33, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_1_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_6_0_1_1_3_0()); 
+	    }
+		lv_ownedDefaultExpressions_34_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAttributeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDefaultExpressions",
+        		lv_ownedDefaultExpressions_34_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_35=';' 
+    {
+    	newLeafNode(otherlv_35, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_1_4());
+    }
+)
+    |(	otherlv_36='initial' 
+    {
+    	newLeafNode(otherlv_36, grammarAccess.getAttributeCSAccess().getInitialKeyword_6_0_1_2_0());
+    }
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getAttributeCSAccess().getUnrestrictedNameParserRuleCall_6_0_1_2_1()); 
+    }
+ruleUnrestrictedName
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)?	otherlv_38=':' 
+    {
+    	newLeafNode(otherlv_38, grammarAccess.getAttributeCSAccess().getColonKeyword_6_0_1_2_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAttributeCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_6_0_1_2_3_0()); 
+	    }
+		lv_ownedDefaultExpressions_39_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAttributeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDefaultExpressions",
+        		lv_ownedDefaultExpressions_39_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_40=';' 
+    {
+    	newLeafNode(otherlv_40, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_0_1_2_4());
+    }
+))*	otherlv_41='}' 
+    {
+    	newLeafNode(otherlv_41, grammarAccess.getAttributeCSAccess().getRightCurlyBracketKeyword_6_0_2());
+    }
+)
+    |	otherlv_42=';' 
+    {
+    	newLeafNode(otherlv_42, grammarAccess.getAttributeCSAccess().getSemicolonKeyword_6_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleClassCS
+entryRuleClassCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getClassCSRule()); }
+	 iv_ruleClassCS=ruleClassCS 
+	 { $current=$iv_ruleClassCS.current; } 
+	 EOF 
+;
+
+// Rule ClassCS
+ruleClassCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getClassCSAccess().getStructuredClassCSParserRuleCall_0()); 
+    }
+    this_StructuredClassCS_0=ruleStructuredClassCS
+    { 
+        $current = $this_StructuredClassCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getClassCSAccess().getDataTypeCSParserRuleCall_1()); 
+    }
+    this_DataTypeCS_1=ruleDataTypeCS
+    { 
+        $current = $this_DataTypeCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getClassCSAccess().getEnumerationCSParserRuleCall_2()); 
+    }
+    this_EnumerationCS_2=ruleEnumerationCS
+    { 
+        $current = $this_EnumerationCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDataTypeCS
+entryRuleDataTypeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDataTypeCSRule()); }
+	 iv_ruleDataTypeCS=ruleDataTypeCS 
+	 { $current=$iv_ruleDataTypeCS.current; } 
+	 EOF 
+;
+
+// Rule DataTypeCS
+ruleDataTypeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_isPrimitive_0_0=	'primitive' 
+    {
+        newLeafNode(lv_isPrimitive_0_0, grammarAccess.getDataTypeCSAccess().getIsPrimitivePrimitiveKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeCSRule());
+	        }
+       		setWithLastConsumed($current, "isPrimitive", true, "primitive");
+	    }
+
+)
+)?	otherlv_1='datatype' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDataTypeCSAccess().getDatatypeKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedSignature_3_0=ruleTemplateSignatureCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSignature",
+        		lv_ownedSignature_3_0, 
+        		"TemplateSignatureCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_4=':' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDataTypeCSAccess().getColonKeyword_4_0());
+    }
+(
+(
+		lv_instanceClassName_5_0=RULE_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_instanceClassName_5_0, grammarAccess.getDataTypeCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_4_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeCSRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"instanceClassName",
+        		lv_instanceClassName_5_0, 
+        		"SINGLE_QUOTED_STRING");
+	    }
+
+)
+))?(	otherlv_6='{' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDataTypeCSAccess().getLeftCurlyBracketKeyword_5_0());
+    }
+((
+(
+		lv_isSerializable_7_0=	'serializable' 
+    {
+        newLeafNode(lv_isSerializable_7_0, grammarAccess.getDataTypeCSAccess().getIsSerializableSerializableKeyword_5_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeCSRule());
+	        }
+       		setWithLastConsumed($current, "isSerializable", true, "serializable");
+	    }
+
+)
+)
+    |	otherlv_8='!serializable' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDataTypeCSAccess().getSerializableKeyword_5_1_1());
+    }
+)?	otherlv_9='}' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDataTypeCSAccess().getRightCurlyBracketKeyword_5_2());
+    }
+)?((	otherlv_10='{' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDataTypeCSAccess().getLeftCurlyBracketKeyword_6_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0_0()); 
+	    }
+		lv_ownedAnnotations_11_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_11_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_6_0_1_1_0()); 
+	    }
+		lv_ownedConstraints_12_0=ruleInvariantConstraintCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedConstraints",
+        		lv_ownedConstraints_12_0, 
+        		"InvariantConstraintCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_13='}' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDataTypeCSAccess().getRightCurlyBracketKeyword_6_0_2());
+    }
+)
+    |	otherlv_14=';' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getDataTypeCSAccess().getSemicolonKeyword_6_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDetailCS
+entryRuleDetailCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDetailCSRule()); }
+	 iv_ruleDetailCS=ruleDetailCS 
+	 { $current=$iv_ruleDetailCS.current; } 
+	 EOF 
+;
+
+// Rule DetailCS
+ruleDetailCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDetailCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_0()); 
+	    }
+		lv_name_0_1=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDetailCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_1, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		lv_name_0_2=RULE_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_name_0_2, grammarAccess.getDetailCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_0_0_1()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDetailCSRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_0_2, 
+        		"SINGLE_QUOTED_STRING");
+	    }
+
+)
+
+)
+)	otherlv_1='=' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDetailCSAccess().getEqualsSignKeyword_1());
+    }
+(
+(
+(
+		lv_values_2_1=RULE_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_values_2_1, grammarAccess.getDetailCSAccess().getValuesSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDetailCSRule());
+	        }
+       		addWithLastConsumed(
+       			$current, 
+       			"values",
+        		lv_values_2_1, 
+        		"SINGLE_QUOTED_STRING");
+	    }
+
+    |		lv_values_2_2=RULE_ML_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_values_2_2, grammarAccess.getDetailCSAccess().getValuesML_SINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDetailCSRule());
+	        }
+       		addWithLastConsumed(
+       			$current, 
+       			"values",
+        		lv_values_2_2, 
+        		"ML_SINGLE_QUOTED_STRING");
+	    }
+
+)
+
+)
+)*)
+;
+
+
+
+
+
+// Entry rule entryRuleDocumentationCS
+entryRuleDocumentationCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDocumentationCSRule()); }
+	 iv_ruleDocumentationCS=ruleDocumentationCS 
+	 { $current=$iv_ruleDocumentationCS.current; } 
+	 EOF 
+;
+
+// Rule DocumentationCS
+ruleDocumentationCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDocumentationCSAccess().getDocumentationCSAction_0(),
+            $current);
+    }
+)	otherlv_1='documentation' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDocumentationCSAccess().getDocumentationKeyword_1());
+    }
+(
+(
+		lv_value_2_0=RULE_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_value_2_0, grammarAccess.getDocumentationCSAccess().getValueSINGLE_QUOTED_STRINGTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDocumentationCSRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_2_0, 
+        		"SINGLE_QUOTED_STRING");
+	    }
+
+)
+)?(	otherlv_3='(' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDocumentationCSAccess().getLeftParenthesisKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); 
+	    }
+		lv_ownedDetails_4_0=ruleDetailCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDocumentationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDetails",
+        		lv_ownedDetails_4_0, 
+        		"DetailCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5=',' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDocumentationCSAccess().getCommaKeyword_3_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); 
+	    }
+		lv_ownedDetails_6_0=ruleDetailCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDocumentationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDetails",
+        		lv_ownedDetails_6_0, 
+        		"DetailCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_7=')' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDocumentationCSAccess().getRightParenthesisKeyword_3_3());
+    }
+)?	otherlv_8=';' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDocumentationCSAccess().getSemicolonKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleEnumerationCS
+entryRuleEnumerationCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEnumerationCSRule()); }
+	 iv_ruleEnumerationCS=ruleEnumerationCS 
+	 { $current=$iv_ruleEnumerationCS.current; } 
+	 EOF 
+;
+
+// Rule EnumerationCS
+ruleEnumerationCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='enum' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getEnumerationCSAccess().getEnumKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumerationCSAccess().getNameUnrestrictedNameParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumerationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumerationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedSignature_2_0=ruleTemplateSignatureCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumerationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSignature",
+        		lv_ownedSignature_2_0, 
+        		"TemplateSignatureCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_3=':' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getEnumerationCSAccess().getColonKeyword_3_0());
+    }
+(
+(
+		lv_instanceClassName_4_0=RULE_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_instanceClassName_4_0, grammarAccess.getEnumerationCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_3_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumerationCSRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"instanceClassName",
+        		lv_instanceClassName_4_0, 
+        		"SINGLE_QUOTED_STRING");
+	    }
+
+)
+))?(	otherlv_5='{' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getEnumerationCSAccess().getLeftCurlyBracketKeyword_4_0());
+    }
+((
+(
+		lv_isSerializable_6_0=	'serializable' 
+    {
+        newLeafNode(lv_isSerializable_6_0, grammarAccess.getEnumerationCSAccess().getIsSerializableSerializableKeyword_4_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumerationCSRule());
+	        }
+       		setWithLastConsumed($current, "isSerializable", true, "serializable");
+	    }
+
+)
+)
+    |	otherlv_7='!serializable' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getEnumerationCSAccess().getSerializableKeyword_4_1_1());
+    }
+)?	otherlv_8='}' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getEnumerationCSAccess().getRightCurlyBracketKeyword_4_2());
+    }
+)?((	otherlv_9='{' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getEnumerationCSAccess().getLeftCurlyBracketKeyword_5_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumerationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_5_0_1_0_0()); 
+	    }
+		lv_ownedAnnotations_10_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumerationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_10_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumerationCSAccess().getOwnedLiteralsEnumerationLiteralCSParserRuleCall_5_0_1_1_0()); 
+	    }
+		lv_ownedLiterals_11_0=ruleEnumerationLiteralCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumerationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedLiterals",
+        		lv_ownedLiterals_11_0, 
+        		"EnumerationLiteralCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumerationCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_5_0_1_2_0()); 
+	    }
+		lv_ownedConstraints_12_0=ruleInvariantConstraintCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumerationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedConstraints",
+        		lv_ownedConstraints_12_0, 
+        		"InvariantConstraintCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_13='}' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getEnumerationCSAccess().getRightCurlyBracketKeyword_5_0_2());
+    }
+)
+    |	otherlv_14=';' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getEnumerationCSAccess().getSemicolonKeyword_5_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleEnumerationLiteralCS
+entryRuleEnumerationLiteralCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEnumerationLiteralCSRule()); }
+	 iv_ruleEnumerationLiteralCS=ruleEnumerationLiteralCS 
+	 { $current=$iv_ruleEnumerationLiteralCS.current; } 
+	 EOF 
+;
+
+// Rule EnumerationLiteralCS
+ruleEnumerationLiteralCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((	otherlv_0='literal' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getEnumerationLiteralCSAccess().getLiteralKeyword_0_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumerationLiteralCSAccess().getNameUnrestrictedNameParserRuleCall_0_0_1_0()); 
+	    }
+		lv_name_1_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumerationLiteralCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumerationLiteralCSAccess().getNameEnumerationLiteralNameParserRuleCall_0_1_0()); 
+	    }
+		lv_name_2_0=ruleEnumerationLiteralName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumerationLiteralCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"EnumerationLiteralName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))(	otherlv_3='=' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getEnumerationLiteralCSAccess().getEqualsSignKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumerationLiteralCSAccess().getValueSIGNEDParserRuleCall_1_1_0()); 
+	    }
+		lv_value_4_0=ruleSIGNED		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumerationLiteralCSRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_4_0, 
+        		"SIGNED");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?((	otherlv_5='{' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getEnumerationLiteralCSAccess().getLeftCurlyBracketKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumerationLiteralCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_2_0_1_0()); 
+	    }
+		lv_ownedAnnotations_6_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumerationLiteralCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_6_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getEnumerationLiteralCSAccess().getRightCurlyBracketKeyword_2_0_2());
+    }
+)
+    |	otherlv_8=';' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getEnumerationLiteralCSAccess().getSemicolonKeyword_2_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleImportCS
+entryRuleImportCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getImportCSRule()); }
+	 iv_ruleImportCS=ruleImportCS 
+	 { $current=$iv_ruleImportCS.current; } 
+	 EOF 
+;
+
+// Rule ImportCS
+ruleImportCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='import' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getImportCSAccess().getImportKeyword_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getImportCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); 
+	    }
+		lv_name_1_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getImportCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getImportCSAccess().getColonKeyword_1_1());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getImportCSAccess().getOwnedPathNameURIPathNameCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedPathName_3_0=ruleURIPathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getImportCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_3_0, 
+        		"URIPathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_isAll_4_0=	'::*' 
+    {
+        newLeafNode(lv_isAll_4_0, grammarAccess.getImportCSAccess().getIsAllColonColonAsteriskKeyword_3_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getImportCSRule());
+	        }
+       		setWithLastConsumed($current, "isAll", true, "::*");
+	    }
+
+)
+)?	otherlv_5=';' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getImportCSAccess().getSemicolonKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleLibraryCS
+entryRuleLibraryCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLibraryCSRule()); }
+	 iv_ruleLibraryCS=ruleLibraryCS 
+	 { $current=$iv_ruleLibraryCS.current; } 
+	 EOF 
+;
+
+// Rule LibraryCS
+ruleLibraryCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='library' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLibraryCSAccess().getLibraryKeyword_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibraryCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); 
+	    }
+		lv_name_1_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibraryCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getLibraryCSAccess().getColonKeyword_1_1());
+    }
+)?(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibraryCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_2_0()); 
+	    }
+		ruleURI		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=';' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getLibraryCSAccess().getSemicolonKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleModelElementCS
+entryRuleModelElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getModelElementCSRule()); }
+	 iv_ruleModelElementCS=ruleModelElementCS 
+	 { $current=$iv_ruleModelElementCS.current; } 
+	 EOF 
+;
+
+// Rule ModelElementCS
+ruleModelElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getModelElementCSAccess().getClassCSParserRuleCall_0()); 
+    }
+    this_ClassCS_0=ruleClassCS
+    { 
+        $current = $this_ClassCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getModelElementCSAccess().getEnumerationLiteralCSParserRuleCall_1()); 
+    }
+    this_EnumerationLiteralCS_1=ruleEnumerationLiteralCS
+    { 
+        $current = $this_EnumerationLiteralCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getModelElementCSAccess().getOperationCSParserRuleCall_2()); 
+    }
+    this_OperationCS_2=ruleOperationCS
+    { 
+        $current = $this_OperationCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getModelElementCSAccess().getPackageCSParserRuleCall_3()); 
+    }
+    this_PackageCS_3=rulePackageCS
+    { 
+        $current = $this_PackageCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getModelElementCSAccess().getStructuralFeatureCSParserRuleCall_4()); 
+    }
+    this_StructuralFeatureCS_4=ruleStructuralFeatureCS
+    { 
+        $current = $this_StructuralFeatureCS_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleModelElementRefCS
+entryRuleModelElementRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getModelElementRefCSRule()); }
+	 iv_ruleModelElementRefCS=ruleModelElementRefCS 
+	 { $current=$iv_ruleModelElementRefCS.current; } 
+	 EOF 
+;
+
+// Rule ModelElementRefCS
+ruleModelElementRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='reference' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getModelElementRefCSAccess().getReferenceKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getModelElementRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedPathName_1_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getModelElementRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_1_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2=';' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getModelElementRefCSAccess().getSemicolonKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleOperationCS
+entryRuleOperationCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOperationCSRule()); }
+	 iv_ruleOperationCS=ruleOperationCS 
+	 { $current=$iv_ruleOperationCS.current; } 
+	 EOF 
+;
+
+// Rule OperationCS
+ruleOperationCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((((
+(
+		lv_qualifiers_0_0=	'static' 
+    {
+        newLeafNode(lv_qualifiers_0_0, grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getOperationCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_0_0, "static");
+	    }
+
+)
+)(
+(
+		lv_qualifiers_1_0=	'definition' 
+    {
+        newLeafNode(lv_qualifiers_1_0, grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getOperationCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_1_0, "definition");
+	    }
+
+)
+)?)
+    |((
+(
+		lv_qualifiers_2_0=	'definition' 
+    {
+        newLeafNode(lv_qualifiers_2_0, grammarAccess.getOperationCSAccess().getQualifiersDefinitionKeyword_0_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getOperationCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_2_0, "definition");
+	    }
+
+)
+)(
+(
+		lv_qualifiers_3_0=	'static' 
+    {
+        newLeafNode(lv_qualifiers_3_0, grammarAccess.getOperationCSAccess().getQualifiersStaticKeyword_0_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getOperationCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_3_0, "static");
+	    }
+
+)
+)?))?	otherlv_4='operation' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getOperationCSAccess().getOperationKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedSignature_5_0=ruleTemplateSignatureCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSignature",
+        		lv_ownedSignature_5_0, 
+        		"TemplateSignatureCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationCSAccess().getNameUnrestrictedNameParserRuleCall_3_0()); 
+	    }
+		lv_name_6_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_6_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='(' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getOperationCSAccess().getLeftParenthesisKeyword_4());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_0_0()); 
+	    }
+		lv_ownedParameters_8_0=ruleParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_8_0, 
+        		"ParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_9=',' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getOperationCSAccess().getCommaKeyword_5_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_1_1_0()); 
+	    }
+		lv_ownedParameters_10_0=ruleParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_10_0, 
+        		"ParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_11=')' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getOperationCSAccess().getRightParenthesisKeyword_6());
+    }
+(	otherlv_12=':' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getOperationCSAccess().getColonKeyword_7_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_7_1_0()); 
+	    }
+		lv_ownedType_13_0=ruleTypedMultiplicityRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_13_0, 
+        		"TypedMultiplicityRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_14='throws' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getOperationCSAccess().getThrowsKeyword_8_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedExceptionsTypedRefCSParserRuleCall_8_1_0()); 
+	    }
+		lv_ownedExceptions_15_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedExceptions",
+        		lv_ownedExceptions_15_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_16=',' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getOperationCSAccess().getCommaKeyword_8_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedExceptionsTypedRefCSParserRuleCall_8_2_1_0()); 
+	    }
+		lv_ownedExceptions_17_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedExceptions",
+        		lv_ownedExceptions_17_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?(	otherlv_18='{' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_9_0());
+    }
+(((
+(
+		lv_qualifiers_19_0=	'derived' 
+    {
+        newLeafNode(lv_qualifiers_19_0, grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getOperationCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_19_0, "derived");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_20_0=	'!derived' 
+    {
+        newLeafNode(lv_qualifiers_20_0, grammarAccess.getOperationCSAccess().getQualifiersDerivedKeyword_9_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getOperationCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_20_0, "!derived");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_21_0=	'ordered' 
+    {
+        newLeafNode(lv_qualifiers_21_0, grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getOperationCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_21_0, "ordered");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_22_0=	'!ordered' 
+    {
+        newLeafNode(lv_qualifiers_22_0, grammarAccess.getOperationCSAccess().getQualifiersOrderedKeyword_9_1_0_3_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getOperationCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_22_0, "!ordered");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_23_0=	'unique' 
+    {
+        newLeafNode(lv_qualifiers_23_0, grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_4_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getOperationCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_23_0, "unique");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_24_0=	'!unique' 
+    {
+        newLeafNode(lv_qualifiers_24_0, grammarAccess.getOperationCSAccess().getQualifiersUniqueKeyword_9_1_0_5_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getOperationCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_24_0, "!unique");
+	    }
+
+)
+))(	otherlv_25=',' 
+    {
+    	newLeafNode(otherlv_25, grammarAccess.getOperationCSAccess().getCommaKeyword_9_1_1());
+    }
+)?)+	otherlv_26='}' 
+    {
+    	newLeafNode(otherlv_26, grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_9_2());
+    }
+)?((	otherlv_27='{' 
+    {
+    	newLeafNode(otherlv_27, grammarAccess.getOperationCSAccess().getLeftCurlyBracketKeyword_10_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_10_0_1_0_0()); 
+	    }
+		lv_ownedAnnotations_28_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_28_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedPreconditionsPreconditionConstraintCSParserRuleCall_10_0_1_1_0()); 
+	    }
+		lv_ownedPreconditions_29_0=rulePreconditionConstraintCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPreconditions",
+        		lv_ownedPreconditions_29_0, 
+        		"PreconditionConstraintCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(	otherlv_30='body' 
+    {
+    	newLeafNode(otherlv_30, grammarAccess.getOperationCSAccess().getBodyKeyword_10_0_1_2_0());
+    }
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getOperationCSAccess().getUnrestrictedNameParserRuleCall_10_0_1_2_1()); 
+    }
+ruleUnrestrictedName
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)?	otherlv_32=':' 
+    {
+    	newLeafNode(otherlv_32, grammarAccess.getOperationCSAccess().getColonKeyword_10_0_1_2_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedBodyExpressionsSpecificationCSParserRuleCall_10_0_1_2_3_0()); 
+	    }
+		lv_ownedBodyExpressions_33_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedBodyExpressions",
+        		lv_ownedBodyExpressions_33_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_34=';' 
+    {
+    	newLeafNode(otherlv_34, grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_0_1_2_4());
+    }
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationCSAccess().getOwnedPostconditionsPostconditionConstraintCSParserRuleCall_10_0_1_3_0()); 
+	    }
+		lv_ownedPostconditions_35_0=rulePostconditionConstraintCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPostconditions",
+        		lv_ownedPostconditions_35_0, 
+        		"PostconditionConstraintCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_36='}' 
+    {
+    	newLeafNode(otherlv_36, grammarAccess.getOperationCSAccess().getRightCurlyBracketKeyword_10_0_2());
+    }
+)
+    |	otherlv_37=';' 
+    {
+    	newLeafNode(otherlv_37, grammarAccess.getOperationCSAccess().getSemicolonKeyword_10_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRulePackageCS
+entryRulePackageCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPackageCSRule()); }
+	 iv_rulePackageCS=rulePackageCS 
+	 { $current=$iv_rulePackageCS.current; } 
+	 EOF 
+;
+
+// Rule PackageCS
+rulePackageCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='package' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPackageCSAccess().getPackageKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageCSAccess().getNameUnrestrictedNameParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPackageCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageCSAccess().getNsPrefixUnrestrictedNameParserRuleCall_2_1_0()); 
+	    }
+		lv_nsPrefix_3_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());
+	        }
+       		set(
+       			$current, 
+       			"nsPrefix",
+        		lv_nsPrefix_3_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getPackageCSAccess().getEqualsSignKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageCSAccess().getNsURIURIParserRuleCall_3_1_0()); 
+	    }
+		lv_nsURI_5_0=ruleURI		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());
+	        }
+       		set(
+       			$current, 
+       			"nsURI",
+        		lv_nsURI_5_0, 
+        		"URI");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?((	otherlv_6='{' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getPackageCSAccess().getLeftCurlyBracketKeyword_4_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_0_1_0_0()); 
+	    }
+		lv_ownedAnnotations_7_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_7_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_1_1_0()); 
+	    }
+		lv_ownedPackages_8_0=rulePackageCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPackages",
+        		lv_ownedPackages_8_0, 
+        		"PackageCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_ownedClasses_9_0=ruleClassCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedClasses",
+        		lv_ownedClasses_9_0, 
+        		"ClassCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_10='}' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getPackageCSAccess().getRightCurlyBracketKeyword_4_0_2());
+    }
+)
+    |	otherlv_11=';' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getPackageCSAccess().getSemicolonKeyword_4_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleParameterCS
+entryRuleParameterCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getParameterCSRule()); }
+	 iv_ruleParameterCS=ruleParameterCS 
+	 { $current=$iv_ruleParameterCS.current; } 
+	 EOF 
+;
+
+// Rule ParameterCS
+ruleParameterCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getParameterCSAccess().getColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getParameterCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypedMultiplicityRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypedMultiplicityRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_2_0());
+    }
+(((
+(
+		lv_qualifiers_4_0=	'ordered' 
+    {
+        newLeafNode(lv_qualifiers_4_0, grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getParameterCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_4_0, "ordered");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_5_0=	'!ordered' 
+    {
+        newLeafNode(lv_qualifiers_5_0, grammarAccess.getParameterCSAccess().getQualifiersOrderedKeyword_2_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getParameterCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_5_0, "!ordered");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_6_0=	'unique' 
+    {
+        newLeafNode(lv_qualifiers_6_0, grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getParameterCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_6_0, "unique");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_7_0=	'!unique' 
+    {
+        newLeafNode(lv_qualifiers_7_0, grammarAccess.getParameterCSAccess().getQualifiersUniqueKeyword_2_1_0_3_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getParameterCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_7_0, "!unique");
+	    }
+
+)
+))(	otherlv_8=',' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getParameterCSAccess().getCommaKeyword_2_1_1());
+    }
+)?)+	otherlv_9='}' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_2_2());
+    }
+)?(	otherlv_10='{' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getParameterCSAccess().getLeftCurlyBracketKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getParameterCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_3_1_0()); 
+	    }
+		lv_ownedAnnotations_11_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getParameterCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_11_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_12='}' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getParameterCSAccess().getRightCurlyBracketKeyword_3_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleReferenceCS
+entryRuleReferenceCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getReferenceCSRule()); }
+	 iv_ruleReferenceCS=ruleReferenceCS 
+	 { $current=$iv_ruleReferenceCS.current; } 
+	 EOF 
+;
+
+// Rule ReferenceCS
+ruleReferenceCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((((
+(
+		lv_qualifiers_0_0=	'static' 
+    {
+        newLeafNode(lv_qualifiers_0_0, grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_0_0, "static");
+	    }
+
+)
+)(
+(
+		lv_qualifiers_1_0=	'definition' 
+    {
+        newLeafNode(lv_qualifiers_1_0, grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_1_0, "definition");
+	    }
+
+)
+)?)
+    |((
+(
+		lv_qualifiers_2_0=	'definition' 
+    {
+        newLeafNode(lv_qualifiers_2_0, grammarAccess.getReferenceCSAccess().getQualifiersDefinitionKeyword_0_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_2_0, "definition");
+	    }
+
+)
+)(
+(
+		lv_qualifiers_3_0=	'static' 
+    {
+        newLeafNode(lv_qualifiers_3_0, grammarAccess.getReferenceCSAccess().getQualifiersStaticKeyword_0_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_3_0, "static");
+	    }
+
+)
+)?))?	otherlv_4='property' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getReferenceCSAccess().getPropertyKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getReferenceCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); 
+	    }
+		lv_name_5_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getReferenceCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_5_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6='#' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getReferenceCSAccess().getNumberSignKeyword_3_0());
+    }
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getReferenceCSAccess().getReferredOppositePropertyCrossReference_3_1_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_8=':' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getReferenceCSAccess().getColonKeyword_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getReferenceCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_4_1_0()); 
+	    }
+		lv_ownedType_9_0=ruleTypedMultiplicityRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getReferenceCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_9_0, 
+        		"TypedMultiplicityRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getReferenceCSAccess().getEqualsSignKeyword_5_0());
+    }
+(
+(
+		lv_default_11_0=RULE_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_default_11_0, grammarAccess.getReferenceCSAccess().getDefaultSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"default",
+        		lv_default_11_0, 
+        		"SINGLE_QUOTED_STRING");
+	    }
+
+)
+))?(	otherlv_12='{' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_6_0());
+    }
+(((
+(
+		lv_qualifiers_13_0=	'composes' 
+    {
+        newLeafNode(lv_qualifiers_13_0, grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_13_0, "composes");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_14_0=	'!composes' 
+    {
+        newLeafNode(lv_qualifiers_14_0, grammarAccess.getReferenceCSAccess().getQualifiersComposesKeyword_6_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_14_0, "!composes");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_15_0=	'derived' 
+    {
+        newLeafNode(lv_qualifiers_15_0, grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_15_0, "derived");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_16_0=	'!derived' 
+    {
+        newLeafNode(lv_qualifiers_16_0, grammarAccess.getReferenceCSAccess().getQualifiersDerivedKeyword_6_1_0_3_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_16_0, "!derived");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_17_0=	'ordered' 
+    {
+        newLeafNode(lv_qualifiers_17_0, grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_4_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_17_0, "ordered");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_18_0=	'!ordered' 
+    {
+        newLeafNode(lv_qualifiers_18_0, grammarAccess.getReferenceCSAccess().getQualifiersOrderedKeyword_6_1_0_5_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_18_0, "!ordered");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_19_0=	'readonly' 
+    {
+        newLeafNode(lv_qualifiers_19_0, grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_6_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_19_0, "readonly");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_20_0=	'!readonly' 
+    {
+        newLeafNode(lv_qualifiers_20_0, grammarAccess.getReferenceCSAccess().getQualifiersReadonlyKeyword_6_1_0_7_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_20_0, "!readonly");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_21_0=	'resolve' 
+    {
+        newLeafNode(lv_qualifiers_21_0, grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_8_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_21_0, "resolve");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_22_0=	'!resolve' 
+    {
+        newLeafNode(lv_qualifiers_22_0, grammarAccess.getReferenceCSAccess().getQualifiersResolveKeyword_6_1_0_9_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_22_0, "!resolve");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_23_0=	'transient' 
+    {
+        newLeafNode(lv_qualifiers_23_0, grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_10_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_23_0, "transient");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_24_0=	'!transient' 
+    {
+        newLeafNode(lv_qualifiers_24_0, grammarAccess.getReferenceCSAccess().getQualifiersTransientKeyword_6_1_0_11_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_24_0, "!transient");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_25_0=	'unique' 
+    {
+        newLeafNode(lv_qualifiers_25_0, grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_12_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_25_0, "unique");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_26_0=	'!unique' 
+    {
+        newLeafNode(lv_qualifiers_26_0, grammarAccess.getReferenceCSAccess().getQualifiersUniqueKeyword_6_1_0_13_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_26_0, "!unique");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_27_0=	'unsettable' 
+    {
+        newLeafNode(lv_qualifiers_27_0, grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_14_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_27_0, "unsettable");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_28_0=	'!unsettable' 
+    {
+        newLeafNode(lv_qualifiers_28_0, grammarAccess.getReferenceCSAccess().getQualifiersUnsettableKeyword_6_1_0_15_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_28_0, "!unsettable");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_29_0=	'volatile' 
+    {
+        newLeafNode(lv_qualifiers_29_0, grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_16_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_29_0, "volatile");
+	    }
+
+)
+)
+    |(
+(
+		lv_qualifiers_30_0=	'!volatile' 
+    {
+        newLeafNode(lv_qualifiers_30_0, grammarAccess.getReferenceCSAccess().getQualifiersVolatileKeyword_6_1_0_17_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+       		addWithLastConsumed($current, "qualifiers", lv_qualifiers_30_0, "!volatile");
+	    }
+
+)
+))(	otherlv_31=',' 
+    {
+    	newLeafNode(otherlv_31, grammarAccess.getReferenceCSAccess().getCommaKeyword_6_1_1());
+    }
+)?)+	otherlv_32='}' 
+    {
+    	newLeafNode(otherlv_32, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_6_2());
+    }
+)?((	otherlv_33='{' 
+    {
+    	newLeafNode(otherlv_33, grammarAccess.getReferenceCSAccess().getLeftCurlyBracketKeyword_7_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getReferenceCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); 
+	    }
+		lv_ownedAnnotations_34_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getReferenceCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_34_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(	otherlv_35='key' 
+    {
+    	newLeafNode(otherlv_35, grammarAccess.getReferenceCSAccess().getKeyKeyword_7_0_1_1_0());
+    }
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyCrossReference_7_0_1_1_1_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_37=',' 
+    {
+    	newLeafNode(otherlv_37, grammarAccess.getReferenceCSAccess().getCommaKeyword_7_0_1_1_2_0());
+    }
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReferenceCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getReferenceCSAccess().getReferredKeysPropertyCrossReference_7_0_1_1_2_1_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_39=';' 
+    {
+    	newLeafNode(otherlv_39, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_1_3());
+    }
+)
+    |(	otherlv_40='derivation' 
+    {
+    	newLeafNode(otherlv_40, grammarAccess.getReferenceCSAccess().getDerivationKeyword_7_0_1_2_0());
+    }
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_2_1()); 
+    }
+ruleUnrestrictedName
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)?	otherlv_42=':' 
+    {
+    	newLeafNode(otherlv_42, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_2_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_7_0_1_2_3_0()); 
+	    }
+		lv_ownedDefaultExpressions_43_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getReferenceCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDefaultExpressions",
+        		lv_ownedDefaultExpressions_43_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_44=';' 
+    {
+    	newLeafNode(otherlv_44, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_2_4());
+    }
+)
+    |(	otherlv_45='initial' 
+    {
+    	newLeafNode(otherlv_45, grammarAccess.getReferenceCSAccess().getInitialKeyword_7_0_1_3_0());
+    }
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getReferenceCSAccess().getUnrestrictedNameParserRuleCall_7_0_1_3_1()); 
+    }
+ruleUnrestrictedName
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)?	otherlv_47=':' 
+    {
+    	newLeafNode(otherlv_47, grammarAccess.getReferenceCSAccess().getColonKeyword_7_0_1_3_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getReferenceCSAccess().getOwnedDefaultExpressionsSpecificationCSParserRuleCall_7_0_1_3_3_0()); 
+	    }
+		lv_ownedDefaultExpressions_48_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getReferenceCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDefaultExpressions",
+        		lv_ownedDefaultExpressions_48_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_49=';' 
+    {
+    	newLeafNode(otherlv_49, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_0_1_3_4());
+    }
+))*	otherlv_50='}' 
+    {
+    	newLeafNode(otherlv_50, grammarAccess.getReferenceCSAccess().getRightCurlyBracketKeyword_7_0_2());
+    }
+)
+    |	otherlv_51=';' 
+    {
+    	newLeafNode(otherlv_51, grammarAccess.getReferenceCSAccess().getSemicolonKeyword_7_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleSpecificationCS
+entryRuleSpecificationCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSpecificationCSRule()); }
+	 iv_ruleSpecificationCS=ruleSpecificationCS 
+	 { $current=$iv_ruleSpecificationCS.current; } 
+	 EOF 
+;
+
+// Rule SpecificationCS
+ruleSpecificationCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedExpression_0_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSpecificationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_0_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		lv_exprString_1_0=RULE_UNQUOTED_STRING
+		{
+			newLeafNode(lv_exprString_1_0, grammarAccess.getSpecificationCSAccess().getExprStringUNQUOTED_STRINGTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getSpecificationCSRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"exprString",
+        		lv_exprString_1_0, 
+        		"UNQUOTED_STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStructuredClassCS
+entryRuleStructuredClassCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStructuredClassCSRule()); }
+	 iv_ruleStructuredClassCS=ruleStructuredClassCS 
+	 { $current=$iv_ruleStructuredClassCS.current; } 
+	 EOF 
+;
+
+// Rule StructuredClassCS
+ruleStructuredClassCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_isAbstract_0_0=	'abstract' 
+    {
+        newLeafNode(lv_isAbstract_0_0, grammarAccess.getStructuredClassCSAccess().getIsAbstractAbstractKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStructuredClassCSRule());
+	        }
+       		setWithLastConsumed($current, "isAbstract", true, "abstract");
+	    }
+
+)
+)?	otherlv_1='class' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStructuredClassCSAccess().getClassKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getNameUnrestrictedNameParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedSignature_3_0=ruleTemplateSignatureCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSignature",
+        		lv_ownedSignature_3_0, 
+        		"TemplateSignatureCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_4='extends' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getStructuredClassCSAccess().getExtendsKeyword_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_1_0()); 
+	    }
+		lv_ownedSuperTypes_5_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSuperTypes",
+        		lv_ownedSuperTypes_5_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6=',' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getStructuredClassCSAccess().getCommaKeyword_4_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_2_1_0()); 
+	    }
+		lv_ownedSuperTypes_7_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSuperTypes",
+        		lv_ownedSuperTypes_7_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?(	otherlv_8=':' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getStructuredClassCSAccess().getColonKeyword_5_0());
+    }
+(
+(
+		lv_instanceClassName_9_0=RULE_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_instanceClassName_9_0, grammarAccess.getStructuredClassCSAccess().getInstanceClassNameSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStructuredClassCSRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"instanceClassName",
+        		lv_instanceClassName_9_0, 
+        		"SINGLE_QUOTED_STRING");
+	    }
+
+)
+))?(	otherlv_10='{' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getStructuredClassCSAccess().getLeftCurlyBracketKeyword_6_0());
+    }
+(
+(
+		lv_isInterface_11_0=	'interface' 
+    {
+        newLeafNode(lv_isInterface_11_0, grammarAccess.getStructuredClassCSAccess().getIsInterfaceInterfaceKeyword_6_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStructuredClassCSRule());
+	        }
+       		setWithLastConsumed($current, "isInterface", true, "interface");
+	    }
+
+)
+)?	otherlv_12='}' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getStructuredClassCSAccess().getRightCurlyBracketKeyword_6_2());
+    }
+)?((	otherlv_13='{' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getStructuredClassCSAccess().getLeftCurlyBracketKeyword_7_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); 
+	    }
+		lv_ownedAnnotations_14_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_14_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getOwnedOperationsOperationCSParserRuleCall_7_0_1_1_0()); 
+	    }
+		lv_ownedOperations_15_0=ruleOperationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedOperations",
+        		lv_ownedOperations_15_0, 
+        		"OperationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getOwnedPropertiesStructuralFeatureCSParserRuleCall_7_0_1_2_0()); 
+	    }
+		lv_ownedProperties_16_0=ruleStructuralFeatureCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedProperties",
+        		lv_ownedProperties_16_0, 
+        		"StructuralFeatureCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStructuredClassCSAccess().getOwnedConstraintsInvariantConstraintCSParserRuleCall_7_0_1_3_0()); 
+	    }
+		lv_ownedConstraints_17_0=ruleInvariantConstraintCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStructuredClassCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedConstraints",
+        		lv_ownedConstraints_17_0, 
+        		"InvariantConstraintCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_18='}' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getStructuredClassCSAccess().getRightCurlyBracketKeyword_7_0_2());
+    }
+)
+    |	otherlv_19=';' 
+    {
+    	newLeafNode(otherlv_19, grammarAccess.getStructuredClassCSAccess().getSemicolonKeyword_7_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleStructuralFeatureCS
+entryRuleStructuralFeatureCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStructuralFeatureCSRule()); }
+	 iv_ruleStructuralFeatureCS=ruleStructuralFeatureCS 
+	 { $current=$iv_ruleStructuralFeatureCS.current; } 
+	 EOF 
+;
+
+// Rule StructuralFeatureCS
+ruleStructuralFeatureCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getStructuralFeatureCSAccess().getAttributeCSParserRuleCall_0()); 
+    }
+    this_AttributeCS_0=ruleAttributeCS
+    { 
+        $current = $this_AttributeCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getStructuralFeatureCSAccess().getReferenceCSParserRuleCall_1()); 
+    }
+    this_ReferenceCS_1=ruleReferenceCS
+    { 
+        $current = $this_ReferenceCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSysMLCS
+entryRuleSysMLCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSysMLCSRule()); }
+	 iv_ruleSysMLCS=ruleSysMLCS 
+	 { $current=$iv_ruleSysMLCS.current; } 
+	 EOF 
+;
+
+// Rule SysMLCS
+ruleSysMLCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getSysMLCSAccess().getSysMLCSAction_0(),
+            $current);
+    }
+)	otherlv_1='sysml' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getSysMLCSAccess().getSysmlKeyword_1());
+    }
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSysMLCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_0_0_0()); 
+	    }
+		lv_ownedDetails_2_0=ruleDetailCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSysMLCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDetails",
+        		lv_ownedDetails_2_0, 
+        		"DetailCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=';' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getSysMLCSAccess().getSemicolonKeyword_2_0_1());
+    }
+)
+    |(	otherlv_4='{' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getSysMLCSAccess().getLeftCurlyBracketKeyword_2_1_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSysMLCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_1_1_0_0()); 
+	    }
+		lv_ownedDetails_5_0=ruleDetailCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSysMLCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDetails",
+        		lv_ownedDetails_5_0, 
+        		"DetailCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6=';' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getSysMLCSAccess().getSemicolonKeyword_2_1_1_1());
+    }
+)*	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getSysMLCSAccess().getRightCurlyBracketKeyword_2_1_2());
+    }
+)))
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleTypedMultiplicityRefCS
+entryRuleTypedMultiplicityRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedMultiplicityRefCSRule()); }
+	 iv_ruleTypedMultiplicityRefCS=ruleTypedMultiplicityRefCS 
+	 { $current=$iv_ruleTypedMultiplicityRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypedMultiplicityRefCS
+ruleTypedMultiplicityRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypedMultiplicityRefCSAccess().getTypedRefCSParserRuleCall_0()); 
+    }
+    this_TypedRefCS_0=ruleTypedRefCS
+    { 
+        $current = $this_TypedRefCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedMultiplicity_1_0=ruleMultiplicityCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedMultiplicityRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMultiplicity",
+        		lv_ownedMultiplicity_1_0, 
+        		"MultiplicityCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTemplateBindingCS
+entryRuleTemplateBindingCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTemplateBindingCSRule()); }
+	 iv_ruleTemplateBindingCS=ruleTemplateBindingCS 
+	 { $current=$iv_ruleTemplateBindingCS.current; } 
+	 EOF 
+;
+
+// Rule TemplateBindingCS
+ruleTemplateBindingCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_0_1_0()); 
+	    }
+		lv_ownedSubstitutions_1_0=ruleTemplateParameterSubstitutionCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSubstitutions",
+        		lv_ownedSubstitutions_1_0, 
+        		"TemplateParameterSubstitutionCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_0_2_1_0()); 
+	    }
+		lv_ownedSubstitutions_3_0=ruleTemplateParameterSubstitutionCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSubstitutions",
+        		lv_ownedSubstitutions_3_0, 
+        		"TemplateParameterSubstitutionCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_0_3());
+    }
+)
+    |(	otherlv_5='<' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTemplateBindingCSAccess().getLessThanSignKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedSubstitutions_6_0=ruleTemplateParameterSubstitutionCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSubstitutions",
+        		lv_ownedSubstitutions_6_0, 
+        		"TemplateParameterSubstitutionCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_7=',' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_1_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_2_1_0()); 
+	    }
+		lv_ownedSubstitutions_8_0=ruleTemplateParameterSubstitutionCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSubstitutions",
+        		lv_ownedSubstitutions_8_0, 
+        		"TemplateParameterSubstitutionCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_9='>' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getTemplateBindingCSAccess().getGreaterThanSignKeyword_1_3());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleTemplateSignatureCS
+entryRuleTemplateSignatureCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTemplateSignatureCSRule()); }
+	 iv_ruleTemplateSignatureCS=ruleTemplateSignatureCS 
+	 { $current=$iv_ruleTemplateSignatureCS.current; } 
+	 EOF 
+;
+
+// Rule TemplateSignatureCS
+ruleTemplateSignatureCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_1_0()); 
+	    }
+		lv_ownedParameters_1_0=ruleTypeParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_1_0, 
+        		"TypeParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_0_2_1_0()); 
+	    }
+		lv_ownedParameters_3_0=ruleTypeParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_3_0, 
+        		"TypeParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_0_3());
+    }
+)
+    |(	otherlv_5='<' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTemplateSignatureCSAccess().getLessThanSignKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedParameters_6_0=ruleTypeParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_6_0, 
+        		"TypeParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_7=',' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_1_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_2_1_0()); 
+	    }
+		lv_ownedParameters_8_0=ruleTypeParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_8_0, 
+        		"TypeParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_9='>' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getTemplateSignatureCSAccess().getGreaterThanSignKeyword_1_3());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleTypedRefCS
+entryRuleTypedRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedRefCSRule()); }
+	 iv_ruleTypedRefCS=ruleTypedRefCS 
+	 { $current=$iv_ruleTypedRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypedRefCS
+ruleTypedRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypeLiteralCSParserRuleCall_0()); 
+    }
+    this_TypeLiteralCS_0=ruleTypeLiteralCS
+    { 
+        $current = $this_TypeLiteralCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); 
+    }
+    this_TypedTypeRefCS_1=ruleTypedTypeRefCS
+    { 
+        $current = $this_TypedTypeRefCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleUnrestrictedName
+entryRuleUnrestrictedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnrestrictedNameRule()); } 
+	 iv_ruleUnrestrictedName=ruleUnrestrictedName 
+	 { $current=$iv_ruleUnrestrictedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnrestrictedName
+ruleUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getUnrestrictedNameAccess().getEnumerationLiteralNameParserRuleCall_0()); 
+    }
+    this_EnumerationLiteralName_0=ruleEnumerationLiteralName    {
+		$current.merge(this_EnumerationLiteralName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	kw='annotation' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getAnnotationKeyword_1()); 
+    }
+
+    |
+	kw='documentation' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getDocumentationKeyword_2()); 
+    }
+
+    |
+	kw='invariant' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getInvariantKeyword_3()); 
+    }
+
+    |
+	kw='literal' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getLiteralKeyword_4()); 
+    }
+
+    |
+	kw='serializable' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getSerializableKeyword_5()); 
+    }
+
+    |
+	kw='sysml' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUnrestrictedNameAccess().getSysmlKeyword_6()); 
+    }
+)
+    ;
+
+
+
+
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnaryOperatorName
+entryRuleEssentialOCLUnaryOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 
+	 iv_ruleEssentialOCLUnaryOperatorName=ruleEssentialOCLUnaryOperatorName 
+	 { $current=$iv_ruleEssentialOCLUnaryOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLUnaryOperatorName
+ruleEssentialOCLUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); 
+    }
+
+    |
+	kw='not' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLInfixOperatorName
+entryRuleEssentialOCLInfixOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 
+	 iv_ruleEssentialOCLInfixOperatorName=ruleEssentialOCLInfixOperatorName 
+	 { $current=$iv_ruleEssentialOCLInfixOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLInfixOperatorName
+ruleEssentialOCLInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); 
+    }
+
+    |
+	kw='/' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); 
+    }
+
+    |
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); 
+    }
+
+    |
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); 
+    }
+
+    |
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); 
+    }
+
+    |
+	kw='>=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); 
+    }
+
+    |
+	kw='<=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); 
+    }
+
+    |
+	kw='=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); 
+    }
+
+    |
+	kw='<>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); 
+    }
+
+    |
+	kw='and' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); 
+    }
+
+    |
+	kw='or' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); 
+    }
+
+    |
+	kw='xor' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); 
+    }
+
+    |
+	kw='implies' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLNavigationOperatorName
+entryRuleEssentialOCLNavigationOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 
+	 iv_ruleEssentialOCLNavigationOperatorName=ruleEssentialOCLNavigationOperatorName 
+	 { $current=$iv_ruleEssentialOCLNavigationOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLNavigationOperatorName
+ruleEssentialOCLNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); 
+    }
+
+    |
+	kw='->' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); 
+    }
+
+    |
+	kw='?.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); 
+    }
+
+    |
+	kw='?->' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleBinaryOperatorName
+entryRuleBinaryOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBinaryOperatorNameRule()); } 
+	 iv_ruleBinaryOperatorName=ruleBinaryOperatorName 
+	 { $current=$iv_ruleBinaryOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule BinaryOperatorName
+ruleBinaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); 
+    }
+    this_InfixOperatorName_0=ruleInfixOperatorName    {
+		$current.merge(this_InfixOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); 
+    }
+    this_NavigationOperatorName_1=ruleNavigationOperatorName    {
+		$current.merge(this_NavigationOperatorName_1);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleInfixOperatorName
+entryRuleInfixOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInfixOperatorNameRule()); } 
+	 iv_ruleInfixOperatorName=ruleInfixOperatorName 
+	 { $current=$iv_ruleInfixOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule InfixOperatorName
+ruleInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); 
+    }
+    this_EssentialOCLInfixOperatorName_0=ruleEssentialOCLInfixOperatorName    {
+		$current.merge(this_EssentialOCLInfixOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleNavigationOperatorName
+entryRuleNavigationOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigationOperatorNameRule()); } 
+	 iv_ruleNavigationOperatorName=ruleNavigationOperatorName 
+	 { $current=$iv_ruleNavigationOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule NavigationOperatorName
+ruleNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); 
+    }
+    this_EssentialOCLNavigationOperatorName_0=ruleEssentialOCLNavigationOperatorName    {
+		$current.merge(this_EssentialOCLNavigationOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleUnaryOperatorName
+entryRuleUnaryOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnaryOperatorNameRule()); } 
+	 iv_ruleUnaryOperatorName=ruleUnaryOperatorName 
+	 { $current=$iv_ruleUnaryOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnaryOperatorName
+ruleUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); 
+    }
+    this_EssentialOCLUnaryOperatorName_0=ruleEssentialOCLUnaryOperatorName    {
+		$current.merge(this_EssentialOCLUnaryOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnrestrictedName
+entryRuleEssentialOCLUnrestrictedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 
+	 iv_ruleEssentialOCLUnrestrictedName=ruleEssentialOCLUnrestrictedName 
+	 { $current=$iv_ruleEssentialOCLUnrestrictedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLUnrestrictedName
+ruleEssentialOCLUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); 
+    }
+    this_Identifier_0=ruleIdentifier    {
+		$current.merge(this_Identifier_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnreservedName
+entryRuleEssentialOCLUnreservedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameRule()); } 
+	 iv_ruleEssentialOCLUnreservedName=ruleEssentialOCLUnreservedName 
+	 { $current=$iv_ruleEssentialOCLUnreservedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLUnreservedName
+ruleEssentialOCLUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); 
+    }
+    this_UnrestrictedName_0=ruleUnrestrictedName    {
+		$current.merge(this_UnrestrictedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); 
+    }
+    this_CollectionTypeIdentifier_1=ruleCollectionTypeIdentifier    {
+		$current.merge(this_CollectionTypeIdentifier_1);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); 
+    }
+    this_PrimitiveTypeIdentifier_2=rulePrimitiveTypeIdentifier    {
+		$current.merge(this_PrimitiveTypeIdentifier_2);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	kw='Tuple' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleUnreservedName
+entryRuleUnreservedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnreservedNameRule()); } 
+	 iv_ruleUnreservedName=ruleUnreservedName 
+	 { $current=$iv_ruleUnreservedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnreservedName
+ruleUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); 
+    }
+    this_EssentialOCLUnreservedName_0=ruleEssentialOCLUnreservedName    {
+		$current.merge(this_EssentialOCLUnreservedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleURIPathNameCS
+entryRuleURIPathNameCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getURIPathNameCSRule()); }
+	 iv_ruleURIPathNameCS=ruleURIPathNameCS 
+	 { $current=$iv_ruleURIPathNameCS.current; } 
+	 EOF 
+;
+
+// Rule URIPathNameCS
+ruleURIPathNameCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsURIFirstPathElementCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathElements_0_0=ruleURIFirstPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getURIPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_0_0, 
+        		"URIFirstPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='::' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getURIPathNameCSAccess().getColonColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getURIPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedPathElements_2_0=ruleNextPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getURIPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_2_0, 
+        		"NextPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleURIFirstPathElementCS
+entryRuleURIFirstPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getURIFirstPathElementCSRule()); }
+	 iv_ruleURIFirstPathElementCS=ruleURIFirstPathElementCS 
+	 { $current=$iv_ruleURIFirstPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule URIFirstPathElementCS
+ruleURIFirstPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0(),
+            $current);
+    }
+)(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); 
+	    }
+		ruleURI		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRulePrimitiveTypeIdentifier
+entryRulePrimitiveTypeIdentifier returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimitiveTypeIdentifierRule()); } 
+	 iv_rulePrimitiveTypeIdentifier=rulePrimitiveTypeIdentifier 
+	 { $current=$iv_rulePrimitiveTypeIdentifier.current.getText(); }  
+	 EOF 
+;
+
+// Rule PrimitiveTypeIdentifier
+rulePrimitiveTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='Boolean' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); 
+    }
+
+    |
+	kw='Integer' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); 
+    }
+
+    |
+	kw='Real' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); 
+    }
+
+    |
+	kw='String' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); 
+    }
+
+    |
+	kw='UnlimitedNatural' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); 
+    }
+
+    |
+	kw='OclAny' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); 
+    }
+
+    |
+	kw='OclInvalid' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); 
+    }
+
+    |
+	kw='OclVoid' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRulePrimitiveTypeCS
+entryRulePrimitiveTypeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimitiveTypeCSRule()); }
+	 iv_rulePrimitiveTypeCS=rulePrimitiveTypeCS 
+	 { $current=$iv_rulePrimitiveTypeCS.current; } 
+	 EOF 
+;
+
+// Rule PrimitiveTypeCS
+rulePrimitiveTypeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); 
+	    }
+		lv_name_0_0=rulePrimitiveTypeIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrimitiveTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"PrimitiveTypeIdentifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionTypeIdentifier
+entryRuleCollectionTypeIdentifier returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionTypeIdentifierRule()); } 
+	 iv_ruleCollectionTypeIdentifier=ruleCollectionTypeIdentifier 
+	 { $current=$iv_ruleCollectionTypeIdentifier.current.getText(); }  
+	 EOF 
+;
+
+// Rule CollectionTypeIdentifier
+ruleCollectionTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='Set' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); 
+    }
+
+    |
+	kw='Bag' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); 
+    }
+
+    |
+	kw='Sequence' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); 
+    }
+
+    |
+	kw='Collection' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); 
+    }
+
+    |
+	kw='OrderedSet' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleCollectionTypeCS
+entryRuleCollectionTypeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionTypeCSRule()); }
+	 iv_ruleCollectionTypeCS=ruleCollectionTypeCS 
+	 { $current=$iv_ruleCollectionTypeCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionTypeCS
+ruleCollectionTypeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleCollectionTypeIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"CollectionTypeIdentifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTupleTypeCS
+entryRuleTupleTypeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTupleTypeCSRule()); }
+	 iv_ruleTupleTypeCS=ruleTupleTypeCS 
+	 { $current=$iv_ruleTupleTypeCS.current; } 
+	 EOF 
+;
+
+// Rule TupleTypeCS
+ruleTupleTypeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_name_0_0=	'Tuple' 
+    {
+        newLeafNode(lv_name_0_0, grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getTupleTypeCSRule());
+	        }
+       		setWithLastConsumed($current, "name", lv_name_0_0, "Tuple");
+	    }
+
+)
+)(	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); 
+	    }
+		lv_ownedParts_2_0=ruleTuplePartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"TuplePartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleTuplePartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"TuplePartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTuplePartCS
+entryRuleTuplePartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTuplePartCSRule()); }
+	 iv_ruleTuplePartCS=ruleTuplePartCS 
+	 { $current=$iv_ruleTuplePartCS.current; } 
+	 EOF 
+;
+
+// Rule TuplePartCS
+ruleTuplePartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTuplePartCSAccess().getColonKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionLiteralExpCS
+entryRuleCollectionLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionLiteralExpCSRule()); }
+	 iv_ruleCollectionLiteralExpCS=ruleCollectionLiteralExpCS 
+	 { $current=$iv_ruleCollectionLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionLiteralExpCS
+ruleCollectionLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedType_0_0=ruleCollectionTypeCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_0_0, 
+        		"CollectionTypeCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedParts_2_0=ruleCollectionLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"CollectionLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleCollectionLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"CollectionLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionLiteralPartCS
+entryRuleCollectionLiteralPartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionLiteralPartCSRule()); }
+	 iv_ruleCollectionLiteralPartCS=ruleCollectionLiteralPartCS 
+	 { $current=$iv_ruleCollectionLiteralPartCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionLiteralPartCS
+ruleCollectionLiteralPartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); 
+	    }
+		lv_ownedExpression_0_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_0_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='..' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); 
+	    }
+		lv_ownedLastExpression_2_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedLastExpression",
+        		lv_ownedLastExpression_2_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedExpression_3_0=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_3_0, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionPatternCS
+entryRuleCollectionPatternCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionPatternCSRule()); }
+	 iv_ruleCollectionPatternCS=ruleCollectionPatternCS 
+	 { $current=$iv_ruleCollectionPatternCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionPatternCS
+ruleCollectionPatternCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedType_0_0=ruleCollectionTypeCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_0_0, 
+        		"CollectionTypeCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedParts_2_0=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*(	otherlv_5='++' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); 
+	    }
+		lv_restVariableName_6_0=ruleIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		set(
+       			$current, 
+       			"restVariableName",
+        		lv_restVariableName_6_0, 
+        		"Identifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleConstructorPartCS
+entryRuleConstructorPartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getConstructorPartCSRule()); }
+	 iv_ruleConstructorPartCS=ruleConstructorPartCS 
+	 { $current=$iv_ruleConstructorPartCS.current; } 
+	 EOF 
+;
+
+// Rule ConstructorPartCS
+ruleConstructorPartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getConstructorPartCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='=' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1());
+    }
+(
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedInitExpression_2_1=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_2_1, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		{ 
+	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); 
+	    }
+		lv_ownedInitExpression_2_2=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_2_2, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRulePatternExpCS
+entryRulePatternExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPatternExpCSRule()); }
+	 iv_rulePatternExpCS=rulePatternExpCS 
+	 { $current=$iv_rulePatternExpCS.current; } 
+	 EOF 
+;
+
+// Rule PatternExpCS
+rulePatternExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_patternVariableName_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"patternVariableName",
+        		lv_patternVariableName_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPatternExpCSAccess().getColonKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedPatternType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPatternType",
+        		lv_ownedPatternType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLambdaLiteralExpCS
+entryRuleLambdaLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLambdaLiteralExpCSRule()); }
+	 iv_ruleLambdaLiteralExpCS=ruleLambdaLiteralExpCS 
+	 { $current=$iv_ruleLambdaLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule LambdaLiteralExpCS
+ruleLambdaLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Lambda' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedExpressionCS_2_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLambdaLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpressionCS",
+        		lv_ownedExpressionCS_2_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='}' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrimitiveLiteralExpCS
+entryRulePrimitiveLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSRule()); }
+	 iv_rulePrimitiveLiteralExpCS=rulePrimitiveLiteralExpCS 
+	 { $current=$iv_rulePrimitiveLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrimitiveLiteralExpCS
+rulePrimitiveLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); 
+    }
+    this_NumberLiteralExpCS_0=ruleNumberLiteralExpCS
+    { 
+        $current = $this_NumberLiteralExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); 
+    }
+    this_StringLiteralExpCS_1=ruleStringLiteralExpCS
+    { 
+        $current = $this_StringLiteralExpCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); 
+    }
+    this_BooleanLiteralExpCS_2=ruleBooleanLiteralExpCS
+    { 
+        $current = $this_BooleanLiteralExpCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); 
+    }
+    this_UnlimitedNaturalLiteralExpCS_3=ruleUnlimitedNaturalLiteralExpCS
+    { 
+        $current = $this_UnlimitedNaturalLiteralExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); 
+    }
+    this_InvalidLiteralExpCS_4=ruleInvalidLiteralExpCS
+    { 
+        $current = $this_InvalidLiteralExpCS_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); 
+    }
+    this_NullLiteralExpCS_5=ruleNullLiteralExpCS
+    { 
+        $current = $this_NullLiteralExpCS_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTupleLiteralExpCS
+entryRuleTupleLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTupleLiteralExpCSRule()); }
+	 iv_ruleTupleLiteralExpCS=ruleTupleLiteralExpCS 
+	 { $current=$iv_ruleTupleLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule TupleLiteralExpCS
+ruleTupleLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Tuple' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedParts_2_0=ruleTupleLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"TupleLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleTupleLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"TupleLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTupleLiteralPartCS
+entryRuleTupleLiteralPartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTupleLiteralPartCSRule()); }
+	 iv_ruleTupleLiteralPartCS=ruleTupleLiteralPartCS 
+	 { $current=$iv_ruleTupleLiteralPartCS.current; } 
+	 EOF 
+;
+
+// Rule TupleLiteralPartCS
+ruleTupleLiteralPartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_3='=' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedInitExpression_4_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_4_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleNumberLiteralExpCS
+entryRuleNumberLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNumberLiteralExpCSRule()); }
+	 iv_ruleNumberLiteralExpCS=ruleNumberLiteralExpCS 
+	 { $current=$iv_ruleNumberLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule NumberLiteralExpCS
+ruleNumberLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); 
+	    }
+		lv_symbol_0_0=ruleNUMBER_LITERAL		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNumberLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"symbol",
+        		lv_symbol_0_0, 
+        		"NUMBER_LITERAL");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStringLiteralExpCS
+entryRuleStringLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStringLiteralExpCSRule()); }
+	 iv_ruleStringLiteralExpCS=ruleStringLiteralExpCS 
+	 { $current=$iv_ruleStringLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule StringLiteralExpCS
+ruleStringLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); 
+	    }
+		lv_segments_0_0=ruleStringLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStringLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"segments",
+        		lv_segments_0_0, 
+        		"StringLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+
+;
+
+
+
+
+
+// Entry rule entryRuleBooleanLiteralExpCS
+entryRuleBooleanLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBooleanLiteralExpCSRule()); }
+	 iv_ruleBooleanLiteralExpCS=ruleBooleanLiteralExpCS 
+	 { $current=$iv_ruleBooleanLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule BooleanLiteralExpCS
+ruleBooleanLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_symbol_0_0=	'true' 
+    {
+        newLeafNode(lv_symbol_0_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());
+	        }
+       		setWithLastConsumed($current, "symbol", lv_symbol_0_0, "true");
+	    }
+
+)
+)
+    |(
+(
+		lv_symbol_1_0=	'false' 
+    {
+        newLeafNode(lv_symbol_1_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());
+	        }
+       		setWithLastConsumed($current, "symbol", lv_symbol_1_0, "false");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleUnlimitedNaturalLiteralExpCS
+entryRuleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }
+	 iv_ruleUnlimitedNaturalLiteralExpCS=ruleUnlimitedNaturalLiteralExpCS 
+	 { $current=$iv_ruleUnlimitedNaturalLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule UnlimitedNaturalLiteralExpCS
+ruleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='*' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleInvalidLiteralExpCS
+entryRuleInvalidLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInvalidLiteralExpCSRule()); }
+	 iv_ruleInvalidLiteralExpCS=ruleInvalidLiteralExpCS 
+	 { $current=$iv_ruleInvalidLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule InvalidLiteralExpCS
+ruleInvalidLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='invalid' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNullLiteralExpCS
+entryRuleNullLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNullLiteralExpCSRule()); }
+	 iv_ruleNullLiteralExpCS=ruleNullLiteralExpCS 
+	 { $current=$iv_ruleNullLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule NullLiteralExpCS
+ruleNullLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='null' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeLiteralCS
+entryRuleTypeLiteralCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeLiteralCSRule()); }
+	 iv_ruleTypeLiteralCS=ruleTypeLiteralCS 
+	 { $current=$iv_ruleTypeLiteralCS.current; } 
+	 EOF 
+;
+
+// Rule TypeLiteralCS
+ruleTypeLiteralCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); 
+    }
+    this_PrimitiveTypeCS_0=rulePrimitiveTypeCS
+    { 
+        $current = $this_PrimitiveTypeCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); 
+    }
+    this_CollectionTypeCS_1=ruleCollectionTypeCS
+    { 
+        $current = $this_CollectionTypeCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); 
+    }
+    this_TupleTypeCS_2=ruleTupleTypeCS
+    { 
+        $current = $this_TupleTypeCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeLiteralWithMultiplicityCS
+entryRuleTypeLiteralWithMultiplicityCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }
+	 iv_ruleTypeLiteralWithMultiplicityCS=ruleTypeLiteralWithMultiplicityCS 
+	 { $current=$iv_ruleTypeLiteralWithMultiplicityCS.current; } 
+	 EOF 
+;
+
+// Rule TypeLiteralWithMultiplicityCS
+ruleTypeLiteralWithMultiplicityCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); 
+    }
+    this_TypeLiteralCS_0=ruleTypeLiteralCS
+    { 
+        $current = $this_TypeLiteralCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedMultiplicity_1_0=ruleMultiplicityCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeLiteralWithMultiplicityCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMultiplicity",
+        		lv_ownedMultiplicity_1_0, 
+        		"MultiplicityCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeLiteralExpCS
+entryRuleTypeLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeLiteralExpCSRule()); }
+	 iv_ruleTypeLiteralExpCS=ruleTypeLiteralExpCS 
+	 { $current=$iv_ruleTypeLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule TypeLiteralExpCS
+ruleTypeLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); 
+	    }
+		lv_ownedType_0_0=ruleTypeLiteralWithMultiplicityCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_0_0, 
+        		"TypeLiteralWithMultiplicityCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeNameExpCS
+entryRuleTypeNameExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeNameExpCSRule()); }
+	 iv_ruleTypeNameExpCS=ruleTypeNameExpCS 
+	 { $current=$iv_ruleTypeNameExpCS.current; } 
+	 EOF 
+;
+
+// Rule TypeNameExpCS
+ruleTypeNameExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathName_0_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_0_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); 
+	    }
+		lv_ownedCurlyBracketedClause_1_0=ruleCurlyBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCurlyBracketedClause",
+        		lv_ownedCurlyBracketedClause_1_0, 
+        		"CurlyBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); 
+	    }
+		lv_ownedPatternGuard_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPatternGuard",
+        		lv_ownedPatternGuard_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2());
+    }
+)?)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeExpCS
+entryRuleTypeExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeExpCSRule()); }
+	 iv_ruleTypeExpCS=ruleTypeExpCS 
+	 { $current=$iv_ruleTypeExpCS.current; } 
+	 EOF 
+;
+
+// Rule TypeExpCS
+ruleTypeExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); 
+    }
+    this_TypeNameExpCS_0=ruleTypeNameExpCS
+    { 
+        $current = $this_TypeNameExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); 
+    }
+    this_TypeLiteralCS_1=ruleTypeLiteralCS
+    { 
+        $current = $this_TypeLiteralCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); 
+    }
+    this_CollectionPatternCS_2=ruleCollectionPatternCS
+    { 
+        $current = $this_CollectionPatternCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedMultiplicity_3_0=ruleMultiplicityCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMultiplicity",
+        		lv_ownedMultiplicity_3_0, 
+        		"MultiplicityCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleExpCS
+entryRuleExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExpCSRule()); }
+	 iv_ruleExpCS=ruleExpCS 
+	 { $current=$iv_ruleExpCS.current; } 
+	 EOF 
+;
+
+// Rule ExpCS
+ruleExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); 
+    }
+    this_PrefixedPrimaryExpCS_0=rulePrefixedPrimaryExpCS
+    { 
+        $current = $this_PrefixedPrimaryExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); 
+	    }
+		lv_name_2_0=ruleBinaryOperatorName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"BinaryOperatorName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); 
+	    }
+		lv_ownedRight_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRight",
+        		lv_ownedRight_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); 
+    }
+    this_PrefixedLetExpCS_4=rulePrefixedLetExpCS
+    { 
+        $current = $this_PrefixedLetExpCS_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrefixedLetExpCS
+entryRulePrefixedLetExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrefixedLetExpCSRule()); }
+	 iv_rulePrefixedLetExpCS=rulePrefixedLetExpCS 
+	 { $current=$iv_rulePrefixedLetExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrefixedLetExpCS
+rulePrefixedLetExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 
+	    }
+		lv_name_1_0=ruleUnaryOperatorName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnaryOperatorName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); 
+	    }
+		lv_ownedRight_2_0=rulePrefixedLetExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRight",
+        		lv_ownedRight_2_0, 
+        		"PrefixedLetExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); 
+    }
+    this_LetExpCS_3=ruleLetExpCS
+    { 
+        $current = $this_LetExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrefixedPrimaryExpCS
+entryRulePrefixedPrimaryExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSRule()); }
+	 iv_rulePrefixedPrimaryExpCS=rulePrefixedPrimaryExpCS 
+	 { $current=$iv_rulePrefixedPrimaryExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrefixedPrimaryExpCS
+rulePrefixedPrimaryExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 
+	    }
+		lv_name_1_0=ruleUnaryOperatorName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnaryOperatorName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); 
+	    }
+		lv_ownedRight_2_0=rulePrefixedPrimaryExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRight",
+        		lv_ownedRight_2_0, 
+        		"PrefixedPrimaryExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); 
+    }
+    this_PrimaryExpCS_3=rulePrimaryExpCS
+    { 
+        $current = $this_PrimaryExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrimaryExpCS
+entryRulePrimaryExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimaryExpCSRule()); }
+	 iv_rulePrimaryExpCS=rulePrimaryExpCS 
+	 { $current=$iv_rulePrimaryExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrimaryExpCS
+rulePrimaryExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); 
+    }
+    this_NestedExpCS_0=ruleNestedExpCS
+    { 
+        $current = $this_NestedExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); 
+    }
+    this_IfExpCS_1=ruleIfExpCS
+    { 
+        $current = $this_IfExpCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); 
+    }
+    this_SelfExpCS_2=ruleSelfExpCS
+    { 
+        $current = $this_SelfExpCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); 
+    }
+    this_PrimitiveLiteralExpCS_3=rulePrimitiveLiteralExpCS
+    { 
+        $current = $this_PrimitiveLiteralExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); 
+    }
+    this_TupleLiteralExpCS_4=ruleTupleLiteralExpCS
+    { 
+        $current = $this_TupleLiteralExpCS_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); 
+    }
+    this_CollectionLiteralExpCS_5=ruleCollectionLiteralExpCS
+    { 
+        $current = $this_CollectionLiteralExpCS_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); 
+    }
+    this_LambdaLiteralExpCS_6=ruleLambdaLiteralExpCS
+    { 
+        $current = $this_LambdaLiteralExpCS_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); 
+    }
+    this_TypeLiteralExpCS_7=ruleTypeLiteralExpCS
+    { 
+        $current = $this_TypeLiteralExpCS_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); 
+    }
+    this_NameExpCS_8=ruleNameExpCS
+    { 
+        $current = $this_NameExpCS_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNameExpCS
+entryRuleNameExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNameExpCSRule()); }
+	 iv_ruleNameExpCS=ruleNameExpCS 
+	 { $current=$iv_ruleNameExpCS.current; } 
+	 EOF 
+;
+
+// Rule NameExpCS
+ruleNameExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathName_0_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_0_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedSquareBracketedClauses_1_0=ruleSquareBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSquareBracketedClauses",
+        		lv_ownedSquareBracketedClauses_1_0, 
+        		"SquareBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedRoundBracketedClause_2_0=ruleRoundBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRoundBracketedClause",
+        		lv_ownedRoundBracketedClause_2_0, 
+        		"RoundBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedCurlyBracketedClause_3_0=ruleCurlyBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCurlyBracketedClause",
+        		lv_ownedCurlyBracketedClause_3_0, 
+        		"CurlyBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?((
+(
+		lv_isPre_4_0=	'@' 
+    {
+        newLeafNode(lv_isPre_4_0, grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNameExpCSRule());
+	        }
+       		setWithLastConsumed($current, "isPre", true, "@");
+	    }
+
+)
+)	otherlv_5='pre' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getNameExpCSAccess().getPreKeyword_4_1());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleCurlyBracketedClauseCS
+entryRuleCurlyBracketedClauseCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCurlyBracketedClauseCSRule()); }
+	 iv_ruleCurlyBracketedClauseCS=ruleCurlyBracketedClauseCS 
+	 { $current=$iv_ruleCurlyBracketedClauseCS.current; } 
+	 EOF 
+;
+
+// Rule CurlyBracketedClauseCS
+ruleCurlyBracketedClauseCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0(),
+            $current);
+    }
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); 
+	    }
+		lv_ownedParts_2_0=ruleConstructorPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"ConstructorPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleConstructorPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"ConstructorPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); 
+	    }
+		lv_value_5_0=ruleStringLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_5_0, 
+        		"StringLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleRoundBracketedClauseCS
+entryRuleRoundBracketedClauseCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRoundBracketedClauseCSRule()); }
+	 iv_ruleRoundBracketedClauseCS=ruleRoundBracketedClauseCS 
+	 { $current=$iv_ruleRoundBracketedClauseCS.current; } 
+	 EOF 
+;
+
+// Rule RoundBracketedClauseCS
+ruleRoundBracketedClauseCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0(),
+            $current);
+    }
+)	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedArguments_2_0=ruleNavigatingArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_2_0, 
+        		"NavigatingArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedArguments_3_0=ruleNavigatingCommaArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_3_0, 
+        		"NavigatingCommaArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); 
+	    }
+		lv_ownedArguments_4_0=ruleNavigatingSemiArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_4_0, 
+        		"NavigatingSemiArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); 
+	    }
+		lv_ownedArguments_5_0=ruleNavigatingCommaArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_5_0, 
+        		"NavigatingCommaArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)?((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); 
+	    }
+		lv_ownedArguments_6_0=ruleNavigatingBarArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_6_0, 
+        		"NavigatingBarArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); 
+	    }
+		lv_ownedArguments_7_0=ruleNavigatingCommaArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_7_0, 
+        		"NavigatingCommaArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)*)?	otherlv_8=')' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSquareBracketedClauseCS
+entryRuleSquareBracketedClauseCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSquareBracketedClauseCSRule()); }
+	 iv_ruleSquareBracketedClauseCS=ruleSquareBracketedClauseCS 
+	 { $current=$iv_ruleSquareBracketedClauseCS.current; } 
+	 EOF 
+;
+
+// Rule SquareBracketedClauseCS
+ruleSquareBracketedClauseCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='[' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedTerms_1_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedTerms",
+        		lv_ownedTerms_1_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedTerms_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedTerms",
+        		lv_ownedTerms_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4=']' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingArgCS
+entryRuleNavigatingArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingArgCSRule()); }
+	 iv_ruleNavigatingArgCS=ruleNavigatingArgCS 
+	 { $current=$iv_ruleNavigatingArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingArgCS
+ruleNavigatingArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); 
+	    }
+		lv_ownedNameExpression_0_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_0_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='=' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); 
+	    }
+		lv_ownedInitExpression_4_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_4_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(	otherlv_5='in' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); 
+	    }
+		lv_ownedInitExpression_6_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_6_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+    |(	otherlv_7=':' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedType_8_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_8_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingBarArgCS
+entryRuleNavigatingBarArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingBarArgCSRule()); }
+	 iv_ruleNavigatingBarArgCS=ruleNavigatingBarArgCS 
+	 { $current=$iv_ruleNavigatingBarArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingBarArgCS
+ruleNavigatingBarArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_prefix_0_0=	'|' 
+    {
+        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, "|");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_1_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)?)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingCommaArgCS
+entryRuleNavigatingCommaArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingCommaArgCSRule()); }
+	 iv_ruleNavigatingCommaArgCS=ruleNavigatingCommaArgCS 
+	 { $current=$iv_ruleNavigatingCommaArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingCommaArgCS
+ruleNavigatingCommaArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_prefix_0_0=	',' 
+    {
+        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ",");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_1_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(	otherlv_6='in' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedInitExpression_7_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_7_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingSemiArgCS
+entryRuleNavigatingSemiArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingSemiArgCSRule()); }
+	 iv_ruleNavigatingSemiArgCS=ruleNavigatingSemiArgCS 
+	 { $current=$iv_ruleNavigatingSemiArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingSemiArgCS
+ruleNavigatingSemiArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_prefix_0_0=	';' 
+    {
+        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ";");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_1_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)?)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingArgExpCS
+entryRuleNavigatingArgExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingArgExpCSRule()); }
+	 iv_ruleNavigatingArgExpCS=ruleNavigatingArgExpCS 
+	 { $current=$iv_ruleNavigatingArgExpCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingArgExpCS
+ruleNavigatingArgExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); 
+    }
+    this_ExpCS_0=ruleExpCS
+    { 
+        $current = $this_ExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleIfExpCS
+entryRuleIfExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIfExpCSRule()); }
+	 iv_ruleIfExpCS=ruleIfExpCS 
+	 { $current=$iv_ruleIfExpCS.current; } 
+	 EOF 
+;
+
+// Rule IfExpCS
+ruleIfExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='if' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getIfExpCSAccess().getIfKeyword_0());
+    }
+(
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); 
+	    }
+		lv_ownedCondition_1_1=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCondition",
+        		lv_ownedCondition_1_1, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); 
+	    }
+		lv_ownedCondition_1_2=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCondition",
+        		lv_ownedCondition_1_2, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+
+)
+)	otherlv_2='then' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getIfExpCSAccess().getThenKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedThenExpression_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedThenExpression",
+        		lv_ownedThenExpression_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedIfThenExpressions_4_0=ruleElseIfThenExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedIfThenExpressions",
+        		lv_ownedIfThenExpressions_4_0, 
+        		"ElseIfThenExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5='else' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getIfExpCSAccess().getElseKeyword_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); 
+	    }
+		lv_ownedElseExpression_6_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedElseExpression",
+        		lv_ownedElseExpression_6_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='endif' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getIfExpCSAccess().getEndifKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleElseIfThenExpCS
+entryRuleElseIfThenExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getElseIfThenExpCSRule()); }
+	 iv_ruleElseIfThenExpCS=ruleElseIfThenExpCS 
+	 { $current=$iv_ruleElseIfThenExpCS.current; } 
+	 EOF 
+;
+
+// Rule ElseIfThenExpCS
+ruleElseIfThenExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='elseif' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedCondition_1_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCondition",
+        		lv_ownedCondition_1_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='then' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedThenExpression_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedThenExpression",
+        		lv_ownedThenExpression_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLetExpCS
+entryRuleLetExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLetExpCSRule()); }
+	 iv_ruleLetExpCS=ruleLetExpCS 
+	 { $current=$iv_ruleLetExpCS.current; } 
+	 EOF 
+;
+
+// Rule LetExpCS
+ruleLetExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='let' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLetExpCSAccess().getLetKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedVariables_1_0=ruleLetVariableCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedVariables",
+        		lv_ownedVariables_1_0, 
+        		"LetVariableCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedVariables_3_0=ruleLetVariableCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedVariables",
+        		lv_ownedVariables_3_0, 
+        		"LetVariableCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4='in' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getLetExpCSAccess().getInKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedInExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInExpression",
+        		lv_ownedInExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLetVariableCS
+entryRuleLetVariableCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLetVariableCSRule()); }
+	 iv_ruleLetVariableCS=ruleLetVariableCS 
+	 { $current=$iv_ruleLetVariableCS.current; } 
+	 EOF 
+;
+
+// Rule LetVariableCS
+ruleLetVariableCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedRoundBracketedClause_1_0=ruleRoundBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRoundBracketedClause",
+        		lv_ownedRoundBracketedClause_1_0, 
+        		"RoundBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleNestedExpCS
+entryRuleNestedExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNestedExpCSRule()); }
+	 iv_ruleNestedExpCS=ruleNestedExpCS 
+	 { $current=$iv_ruleNestedExpCS.current; } 
+	 EOF 
+;
+
+// Rule NestedExpCS
+ruleNestedExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedExpression_1_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNestedExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_1_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2=')' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSelfExpCS
+entryRuleSelfExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSelfExpCSRule()); }
+	 iv_ruleSelfExpCS=ruleSelfExpCS 
+	 { $current=$iv_ruleSelfExpCS.current; } 
+	 EOF 
+;
+
+// Rule SelfExpCS
+ruleSelfExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='self' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getSelfExpCSAccess().getSelfKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleMultiplicityBoundsCS
+entryRuleMultiplicityBoundsCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityBoundsCSRule()); }
+	 iv_ruleMultiplicityBoundsCS=ruleMultiplicityBoundsCS 
+	 { $current=$iv_ruleMultiplicityBoundsCS.current; } 
+	 EOF 
+;
+
+// Rule MultiplicityBoundsCS
+ruleMultiplicityBoundsCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); 
+	    }
+		lv_lowerBound_0_0=ruleLOWER		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());
+	        }
+       		set(
+       			$current, 
+       			"lowerBound",
+        		lv_lowerBound_0_0, 
+        		"LOWER");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='..' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); 
+	    }
+		lv_upperBound_2_0=ruleUPPER		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());
+	        }
+       		set(
+       			$current, 
+       			"upperBound",
+        		lv_upperBound_2_0, 
+        		"UPPER");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleMultiplicityCS
+entryRuleMultiplicityCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityCSRule()); }
+	 iv_ruleMultiplicityCS=ruleMultiplicityCS 
+	 { $current=$iv_ruleMultiplicityCS.current; } 
+	 EOF 
+;
+
+// Rule MultiplicityCS
+ruleMultiplicityCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='[' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0());
+    }
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); 
+    }
+    this_MultiplicityBoundsCS_1=ruleMultiplicityBoundsCS
+    { 
+        $current = $this_MultiplicityBoundsCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); 
+    }
+    this_MultiplicityStringCS_2=ruleMultiplicityStringCS
+    { 
+        $current = $this_MultiplicityStringCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)	otherlv_3=']' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleMultiplicityStringCS
+entryRuleMultiplicityStringCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityStringCSRule()); }
+	 iv_ruleMultiplicityStringCS=ruleMultiplicityStringCS 
+	 { $current=$iv_ruleMultiplicityStringCS.current; } 
+	 EOF 
+;
+
+// Rule MultiplicityStringCS
+ruleMultiplicityStringCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+(
+		lv_stringBounds_0_1=	'*' 
+    {
+        newLeafNode(lv_stringBounds_0_1, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_1, null);
+	    }
+
+    |		lv_stringBounds_0_2=	'+' 
+    {
+        newLeafNode(lv_stringBounds_0_2, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_2, null);
+	    }
+
+    |		lv_stringBounds_0_3=	'?' 
+    {
+        newLeafNode(lv_stringBounds_0_3, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_3, null);
+	    }
+
+)
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRulePathNameCS
+entryRulePathNameCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPathNameCSRule()); }
+	 iv_rulePathNameCS=rulePathNameCS 
+	 { $current=$iv_rulePathNameCS.current; } 
+	 EOF 
+;
+
+// Rule PathNameCS
+rulePathNameCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathElements_0_0=ruleFirstPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_0_0, 
+        		"FirstPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='::' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedPathElements_2_0=ruleNextPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_2_0, 
+        		"NextPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleFirstPathElementCS
+entryRuleFirstPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFirstPathElementCSRule()); }
+	 iv_ruleFirstPathElementCS=ruleFirstPathElementCS 
+	 { $current=$iv_ruleFirstPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule FirstPathElementCS
+ruleFirstPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFirstPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNextPathElementCS
+entryRuleNextPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNextPathElementCSRule()); }
+	 iv_ruleNextPathElementCS=ruleNextPathElementCS 
+	 { $current=$iv_ruleNextPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule NextPathElementCS
+ruleNextPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNextPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 
+	    }
+		ruleUnreservedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTemplateParameterSubstitutionCS
+entryRuleTemplateParameterSubstitutionCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSRule()); }
+	 iv_ruleTemplateParameterSubstitutionCS=ruleTemplateParameterSubstitutionCS 
+	 { $current=$iv_ruleTemplateParameterSubstitutionCS.current; } 
+	 EOF 
+;
+
+// Rule TemplateParameterSubstitutionCS
+ruleTemplateParameterSubstitutionCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); 
+	    }
+		lv_ownedActualParameter_0_0=ruleTypeRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateParameterSubstitutionCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedActualParameter",
+        		lv_ownedActualParameter_0_0, 
+        		"TypeRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeParameterCS
+entryRuleTypeParameterCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeParameterCSRule()); }
+	 iv_ruleTypeParameterCS=ruleTypeParameterCS 
+	 { $current=$iv_ruleTypeParameterCS.current; } 
+	 EOF 
+;
+
+// Rule TypeParameterCS
+ruleTypeParameterCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_1='extends' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); 
+	    }
+		lv_ownedExtends_2_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_2_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='&&' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); 
+	    }
+		lv_ownedExtends_4_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_4_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+    |(	otherlv_5='super' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); 
+	    }
+		lv_ownedSuper_6_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSuper",
+        		lv_ownedSuper_6_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeRefCS
+entryRuleTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeRefCSRule()); }
+	 iv_ruleTypeRefCS=ruleTypeRefCS 
+	 { $current=$iv_ruleTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypeRefCS
+ruleTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); 
+    }
+    this_TypedRefCS_0=ruleTypedRefCS
+    { 
+        $current = $this_TypedRefCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); 
+    }
+    this_WildcardTypeRefCS_1=ruleWildcardTypeRefCS
+    { 
+        $current = $this_WildcardTypeRefCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypedTypeRefCS
+entryRuleTypedTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedTypeRefCSRule()); }
+	 iv_ruleTypedTypeRefCS=ruleTypedTypeRefCS 
+	 { $current=$iv_ruleTypedTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypedTypeRefCS
+ruleTypedTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathName_0_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_0_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedBinding_1_0=ruleTemplateBindingCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedBinding",
+        		lv_ownedBinding_1_0, 
+        		"TemplateBindingCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleWildcardTypeRefCS
+entryRuleWildcardTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getWildcardTypeRefCSRule()); }
+	 iv_ruleWildcardTypeRefCS=ruleWildcardTypeRefCS 
+	 { $current=$iv_ruleWildcardTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule WildcardTypeRefCS
+ruleWildcardTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0(),
+            $current);
+    }
+)	otherlv_1='?' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1());
+    }
+((	otherlv_2='extends' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); 
+	    }
+		lv_ownedExtends_3_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_3_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(	otherlv_4='super' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedSuper_5_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSuper",
+        		lv_ownedSuper_5_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleID
+entryRuleID returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIDRule()); } 
+	 iv_ruleID=ruleID 
+	 { $current=$iv_ruleID.current.getText(); }  
+	 EOF 
+;
+
+// Rule ID
+ruleID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_SIMPLE_ID_0=RULE_SIMPLE_ID    {
+		$current.merge(this_SIMPLE_ID_0);
+    }
+
+    { 
+    newLeafNode(this_SIMPLE_ID_0, grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); 
+    }
+
+    |    this_ESCAPED_ID_1=RULE_ESCAPED_ID    {
+		$current.merge(this_ESCAPED_ID_1);
+    }
+
+    { 
+    newLeafNode(this_ESCAPED_ID_1, grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleIdentifier
+entryRuleIdentifier returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIdentifierRule()); } 
+	 iv_ruleIdentifier=ruleIdentifier 
+	 { $current=$iv_ruleIdentifier.current.getText(); }  
+	 EOF 
+;
+
+// Rule Identifier
+ruleIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getIdentifierAccess().getIDParserRuleCall()); 
+    }
+    this_ID_0=ruleID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleLOWER
+entryRuleLOWER returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLOWERRule()); } 
+	 iv_ruleLOWER=ruleLOWER 
+	 { $current=$iv_ruleLOWER.current.getText(); }  
+	 EOF 
+;
+
+// Rule LOWER
+ruleLOWER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleNUMBER_LITERAL
+entryRuleNUMBER_LITERAL returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNUMBER_LITERALRule()); } 
+	 iv_ruleNUMBER_LITERAL=ruleNUMBER_LITERAL 
+	 { $current=$iv_ruleNUMBER_LITERAL.current.getText(); }  
+	 EOF 
+;
+
+// Rule NUMBER_LITERAL
+ruleNUMBER_LITERAL returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleStringLiteral
+entryRuleStringLiteral returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStringLiteralRule()); } 
+	 iv_ruleStringLiteral=ruleStringLiteral 
+	 { $current=$iv_ruleStringLiteral.current.getText(); }  
+	 EOF 
+;
+
+// Rule StringLiteral
+ruleStringLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {
+		$current.merge(this_SINGLE_QUOTED_STRING_0);
+    }
+
+    { 
+    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleUPPER
+entryRuleUPPER returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUPPERRule()); } 
+	 iv_ruleUPPER=ruleUPPER 
+	 { $current=$iv_ruleUPPER.current.getText(); }  
+	 EOF 
+;
+
+// Rule UPPER
+ruleUPPER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); 
+    }
+
+    |
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleURI
+entryRuleURI returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getURIRule()); } 
+	 iv_ruleURI=ruleURI 
+	 { $current=$iv_ruleURI.current.getText(); }  
+	 EOF 
+;
+
+// Rule URI
+ruleURI returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {
+		$current.merge(this_SINGLE_QUOTED_STRING_0);
+    }
+
+    { 
+    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+RULE_UNQUOTED_STRING : '\u00A3$%^\u00A3$%^';
+
+fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');
+
+fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');
+
+RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';
+
+RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';
+
+RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';
+
+RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;
+
+RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;
+
+RULE_INT : ('0'..'9')+;
+
+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/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/internal/InternalOCLinEcore.tokens b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/internal/InternalOCLinEcore.tokens
index 522bd1f..842ea6d 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/internal/InternalOCLinEcore.tokens
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/parser/antlr/internal/InternalOCLinEcore.tokens
@@ -1,249 +1,249 @@
-'!composes'=78

-'!derived'=64

-'!id'=65

-'!ordered'=66

-'!readonly'=67

-'!resolve'=79

-'!serializable'=73

-'!transient'=68

-'!unique'=69

-'!unsettable'=70

-'!volatile'=71

-'#'=77

-'&&'=134

-'('=55

-')'=56

-'*'=84

-'+'=86

-'++'=114

-','=60

-'-'=18

-'->'=95

-'.'=94

-'..'=113

-'/'=85

-':'=57

-'::'=99

-'::*'=76

-';'=58

-'<'=81

-'<='=88

-'<>'=89

-'='=63

-'>'=82

-'>='=87

-'?'=133

-'?->'=97

-'?.'=96

-'@'=120

-'Bag'=109

-'Boolean'=100

-'Collection'=111

-'Integer'=101

-'Lambda'=115

-'OclAny'=105

-'OclInvalid'=106

-'OclVoid'=107

-'OrderedSet'=112

-'Real'=102

-'Sequence'=110

-'Set'=108

-'String'=103

-'Tuple'=98

-'UnlimitedNatural'=104

-'['=122

-']'=123

-'abstract'=19

-'and'=90

-'annotation'=59

-'attribute'=20

-'body'=21

-'callable'=22

-'class'=23

-'composes'=24

-'datatype'=25

-'definition'=26

-'derivation'=27

-'derived'=28

-'documentation'=74

-'else'=128

-'elseif'=130

-'endif'=129

-'enum'=29

-'extends'=30

-'false'=117

-'id'=31

-'if'=126

-'implies'=93

-'import'=32

-'in'=124

-'initial'=33

-'interface'=34

-'invalid'=118

-'invariant'=54

-'key'=35

-'let'=131

-'library'=36

-'literal'=75

-'module'=17

-'not'=83

-'null'=119

-'operation'=37

-'or'=91

-'ordered'=38

-'package'=39

-'postcondition'=40

-'pre'=121

-'precondition'=41

-'primitive'=42

-'property'=43

-'readonly'=44

-'reference'=45

-'resolve'=46

-'self'=132

-'serializable'=72

-'static'=47

-'super'=48

-'sysml'=80

-'then'=127

-'throws'=49

-'transient'=50

-'true'=116

-'unique'=51

-'unsettable'=52

-'volatile'=53

-'xor'=92

-'{'=61

-'|'=125

-'}'=62

-RULE_ANY_OTHER=16

-RULE_DOUBLE_QUOTED_STRING=12

-RULE_ESCAPED_CHARACTER=10

-RULE_ESCAPED_ID=9

-RULE_INT=4

-RULE_LETTER_CHARACTER=11

-RULE_ML_COMMENT=13

-RULE_ML_SINGLE_QUOTED_STRING=6

-RULE_SIMPLE_ID=8

-RULE_SINGLE_QUOTED_STRING=5

-RULE_SL_COMMENT=14

-RULE_UNQUOTED_STRING=7

-RULE_WS=15

-T__100=100

-T__101=101

-T__102=102

-T__103=103

-T__104=104

-T__105=105

-T__106=106

-T__107=107

-T__108=108

-T__109=109

-T__110=110

-T__111=111

-T__112=112

-T__113=113

-T__114=114

-T__115=115

-T__116=116

-T__117=117

-T__118=118

-T__119=119

-T__120=120

-T__121=121

-T__122=122

-T__123=123

-T__124=124

-T__125=125

-T__126=126

-T__127=127

-T__128=128

-T__129=129

-T__130=130

-T__131=131

-T__132=132

-T__133=133

-T__134=134

-T__17=17

-T__18=18

-T__19=19

-T__20=20

-T__21=21

-T__22=22

-T__23=23

-T__24=24

-T__25=25

-T__26=26

-T__27=27

-T__28=28

-T__29=29

-T__30=30

-T__31=31

-T__32=32

-T__33=33

-T__34=34

-T__35=35

-T__36=36

-T__37=37

-T__38=38

-T__39=39

-T__40=40

-T__41=41

-T__42=42

-T__43=43

-T__44=44

-T__45=45

-T__46=46

-T__47=47

-T__48=48

-T__49=49

-T__50=50

-T__51=51

-T__52=52

-T__53=53

-T__54=54

-T__55=55

-T__56=56

-T__57=57

-T__58=58

-T__59=59

-T__60=60

-T__61=61

-T__62=62

-T__63=63

-T__64=64

-T__65=65

-T__66=66

-T__67=67

-T__68=68

-T__69=69

-T__70=70

-T__71=71

-T__72=72

-T__73=73

-T__74=74

-T__75=75

-T__76=76

-T__77=77

-T__78=78

-T__79=79

-T__80=80

-T__81=81

-T__82=82

-T__83=83

-T__84=84

-T__85=85

-T__86=86

-T__87=87

-T__88=88

-T__89=89

-T__90=90

-T__91=91

-T__92=92

-T__93=93

-T__94=94

-T__95=95

-T__96=96

-T__97=97

-T__98=98

-T__99=99

+'!composes'=78
+'!derived'=64
+'!id'=65
+'!ordered'=66
+'!readonly'=67
+'!resolve'=79
+'!serializable'=73
+'!transient'=68
+'!unique'=69
+'!unsettable'=70
+'!volatile'=71
+'#'=77
+'&&'=134
+'('=55
+')'=56
+'*'=84
+'+'=86
+'++'=114
+','=60
+'-'=18
+'->'=95
+'.'=94
+'..'=113
+'/'=85
+':'=57
+'::'=99
+'::*'=76
+';'=58
+'<'=81
+'<='=88
+'<>'=89
+'='=63
+'>'=82
+'>='=87
+'?'=133
+'?->'=97
+'?.'=96
+'@'=120
+'Bag'=109
+'Boolean'=100
+'Collection'=111
+'Integer'=101
+'Lambda'=115
+'OclAny'=105
+'OclInvalid'=106
+'OclVoid'=107
+'OrderedSet'=112
+'Real'=102
+'Sequence'=110
+'Set'=108
+'String'=103
+'Tuple'=98
+'UnlimitedNatural'=104
+'['=122
+']'=123
+'abstract'=19
+'and'=90
+'annotation'=59
+'attribute'=20
+'body'=21
+'callable'=22
+'class'=23
+'composes'=24
+'datatype'=25
+'definition'=26
+'derivation'=27
+'derived'=28
+'documentation'=74
+'else'=128
+'elseif'=130
+'endif'=129
+'enum'=29
+'extends'=30
+'false'=117
+'id'=31
+'if'=126
+'implies'=93
+'import'=32
+'in'=124
+'initial'=33
+'interface'=34
+'invalid'=118
+'invariant'=54
+'key'=35
+'let'=131
+'library'=36
+'literal'=75
+'module'=17
+'not'=83
+'null'=119
+'operation'=37
+'or'=91
+'ordered'=38
+'package'=39
+'postcondition'=40
+'pre'=121
+'precondition'=41
+'primitive'=42
+'property'=43
+'readonly'=44
+'reference'=45
+'resolve'=46
+'self'=132
+'serializable'=72
+'static'=47
+'super'=48
+'sysml'=80
+'then'=127
+'throws'=49
+'transient'=50
+'true'=116
+'unique'=51
+'unsettable'=52
+'volatile'=53
+'xor'=92
+'{'=61
+'|'=125
+'}'=62
+RULE_ANY_OTHER=16
+RULE_DOUBLE_QUOTED_STRING=12
+RULE_ESCAPED_CHARACTER=10
+RULE_ESCAPED_ID=9
+RULE_INT=4
+RULE_LETTER_CHARACTER=11
+RULE_ML_COMMENT=13
+RULE_ML_SINGLE_QUOTED_STRING=6
+RULE_SIMPLE_ID=8
+RULE_SINGLE_QUOTED_STRING=5
+RULE_SL_COMMENT=14
+RULE_UNQUOTED_STRING=7
+RULE_WS=15
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
+T__107=107
+T__108=108
+T__109=109
+T__110=110
+T__111=111
+T__112=112
+T__113=113
+T__114=114
+T__115=115
+T__116=116
+T__117=117
+T__118=118
+T__119=119
+T__120=120
+T__121=121
+T__122=122
+T__123=123
+T__124=124
+T__125=125
+T__126=126
+T__127=127
+T__128=128
+T__129=129
+T__130=130
+T__131=131
+T__132=132
+T__133=133
+T__134=134
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/serializer/AbstractOCLinEcoreSemanticSequencer.java b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/serializer/AbstractOCLinEcoreSemanticSequencer.java
index 0763f0e..fd42ff6 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/serializer/AbstractOCLinEcoreSemanticSequencer.java
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/serializer/AbstractOCLinEcoreSemanticSequencer.java
@@ -1,3 +1,6 @@
+/*
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclinecore.serializer;
 
 import com.google.inject.Inject;
@@ -85,111 +88,54 @@
 	@Inject
 	private OCLinEcoreGrammarAccess grammarAccess;
 	
+	@Override
 	public void createSequence(EObject context, EObject semanticObject) {
 		if(semanticObject.eClass().getEPackage() == BaseCSPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
 			case BaseCSPackage.ANNOTATION_CS:
-				if(context == grammarAccess.getAnnotationCSRule() ||
-				   context == grammarAccess.getAnnotationElementCSRule()) {
-					sequence_AnnotationCS(context, (AnnotationCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_AnnotationCS(context, (AnnotationCS) semanticObject); 
+				return; 
 			case BaseCSPackage.ATTRIBUTE_CS:
-				if(context == grammarAccess.getAttributeCSRule() ||
-				   context == grammarAccess.getModelElementCSRule() ||
-				   context == grammarAccess.getStructuralFeatureCSRule()) {
-					sequence_AttributeCS(context, (AttributeCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_AttributeCS(context, (AttributeCS) semanticObject); 
+				return; 
 			case BaseCSPackage.DATA_TYPE_CS:
-				if(context == grammarAccess.getClassCSRule() ||
-				   context == grammarAccess.getDataTypeCSRule() ||
-				   context == grammarAccess.getModelElementCSRule()) {
-					sequence_DataTypeCS(context, (DataTypeCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_DataTypeCS(context, (DataTypeCS) semanticObject); 
+				return; 
 			case BaseCSPackage.DETAIL_CS:
-				if(context == grammarAccess.getDetailCSRule()) {
-					sequence_DetailCS(context, (DetailCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_DetailCS(context, (DetailCS) semanticObject); 
+				return; 
 			case BaseCSPackage.DOCUMENTATION_CS:
-				if(context == grammarAccess.getAnnotationElementCSRule() ||
-				   context == grammarAccess.getDocumentationCSRule()) {
-					sequence_DocumentationCS(context, (DocumentationCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_DocumentationCS(context, (DocumentationCS) semanticObject); 
+				return; 
 			case BaseCSPackage.ENUMERATION_CS:
-				if(context == grammarAccess.getClassCSRule() ||
-				   context == grammarAccess.getEnumerationCSRule() ||
-				   context == grammarAccess.getModelElementCSRule()) {
-					sequence_EnumerationCS(context, (EnumerationCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_EnumerationCS(context, (EnumerationCS) semanticObject); 
+				return; 
 			case BaseCSPackage.ENUMERATION_LITERAL_CS:
-				if(context == grammarAccess.getEnumerationLiteralCSRule() ||
-				   context == grammarAccess.getModelElementCSRule()) {
-					sequence_EnumerationLiteralCS(context, (EnumerationLiteralCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_EnumerationLiteralCS(context, (EnumerationLiteralCS) semanticObject); 
+				return; 
 			case BaseCSPackage.IMPORT_CS:
-				if(context == grammarAccess.getImportCSRule()) {
-					sequence_ImportCS(context, (ImportCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ImportCS(context, (ImportCS) semanticObject); 
+				return; 
 			case BaseCSPackage.LIBRARY_CS:
-				if(context == grammarAccess.getLibraryCSRule()) {
-					sequence_LibraryCS(context, (LibraryCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LibraryCS(context, (LibraryCS) semanticObject); 
+				return; 
 			case BaseCSPackage.MODEL_ELEMENT_REF_CS:
-				if(context == grammarAccess.getModelElementRefCSRule()) {
-					sequence_ModelElementRefCS(context, (ModelElementRefCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ModelElementRefCS(context, (ModelElementRefCS) semanticObject); 
+				return; 
 			case BaseCSPackage.MULTIPLICITY_BOUNDS_CS:
-				if(context == grammarAccess.getMultiplicityBoundsCSRule() ||
-				   context == grammarAccess.getMultiplicityCSRule()) {
-					sequence_MultiplicityBoundsCS(context, (MultiplicityBoundsCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_MultiplicityBoundsCS(context, (MultiplicityBoundsCS) semanticObject); 
+				return; 
 			case BaseCSPackage.MULTIPLICITY_STRING_CS:
-				if(context == grammarAccess.getMultiplicityCSRule() ||
-				   context == grammarAccess.getMultiplicityStringCSRule()) {
-					sequence_MultiplicityStringCS(context, (MultiplicityStringCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_MultiplicityStringCS(context, (MultiplicityStringCS) semanticObject); 
+				return; 
 			case BaseCSPackage.OPERATION_CS:
-				if(context == grammarAccess.getModelElementCSRule() ||
-				   context == grammarAccess.getOperationCSRule()) {
-					sequence_OperationCS(context, (OperationCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_OperationCS(context, (OperationCS) semanticObject); 
+				return; 
 			case BaseCSPackage.PACKAGE_CS:
-				if(context == grammarAccess.getModelElementCSRule() ||
-				   context == grammarAccess.getPackageCSRule()) {
-					sequence_PackageCS(context, (PackageCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PackageCS(context, (PackageCS) semanticObject); 
+				return; 
 			case BaseCSPackage.PARAMETER_CS:
-				if(context == grammarAccess.getParameterCSRule()) {
-					sequence_ParameterCS(context, (ParameterCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ParameterCS(context, (ParameterCS) semanticObject); 
+				return; 
 			case BaseCSPackage.PATH_ELEMENT_CS:
 				if(context == grammarAccess.getFirstPathElementCSRule()) {
 					sequence_FirstPathElementCS(context, (PathElementCS) semanticObject); 
@@ -205,11 +151,8 @@
 				}
 				else break;
 			case BaseCSPackage.PATH_ELEMENT_WITH_URICS:
-				if(context == grammarAccess.getURIFirstPathElementCSRule()) {
-					sequence_URIFirstPathElementCS(context, (PathElementWithURICS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_URIFirstPathElementCS(context, (PathElementWithURICS) semanticObject); 
+				return; 
 			case BaseCSPackage.PATH_NAME_CS:
 				if(context == grammarAccess.getPathNameCSRule()) {
 					sequence_PathNameCS(context, (PathNameCS) semanticObject); 
@@ -242,45 +185,23 @@
 				}
 				else break;
 			case BaseCSPackage.REFERENCE_CS:
-				if(context == grammarAccess.getModelElementCSRule() ||
-				   context == grammarAccess.getReferenceCSRule() ||
-				   context == grammarAccess.getStructuralFeatureCSRule()) {
-					sequence_ReferenceCS(context, (ReferenceCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ReferenceCS(context, (ReferenceCS) semanticObject); 
+				return; 
 			case BaseCSPackage.STRUCTURED_CLASS_CS:
-				if(context == grammarAccess.getClassCSRule() ||
-				   context == grammarAccess.getModelElementCSRule() ||
-				   context == grammarAccess.getStructuredClassCSRule()) {
-					sequence_StructuredClassCS(context, (StructuredClassCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_StructuredClassCS(context, (StructuredClassCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TEMPLATE_BINDING_CS:
-				if(context == grammarAccess.getTemplateBindingCSRule()) {
-					sequence_TemplateBindingCS(context, (TemplateBindingCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateBindingCS(context, (TemplateBindingCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TEMPLATE_PARAMETER_SUBSTITUTION_CS:
-				if(context == grammarAccess.getTemplateParameterSubstitutionCSRule()) {
-					sequence_TemplateParameterSubstitutionCS(context, (TemplateParameterSubstitutionCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateParameterSubstitutionCS(context, (TemplateParameterSubstitutionCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TEMPLATE_SIGNATURE_CS:
-				if(context == grammarAccess.getTemplateSignatureCSRule()) {
-					sequence_TemplateSignatureCS(context, (TemplateSignatureCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateSignatureCS(context, (TemplateSignatureCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TUPLE_PART_CS:
-				if(context == grammarAccess.getTuplePartCSRule()) {
-					sequence_TuplePartCS(context, (TuplePartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TuplePartCS(context, (TuplePartCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TUPLE_TYPE_CS:
 				if(context == grammarAccess.getTupleTypeCSRule() ||
 				   context == grammarAccess.getTypeLiteralCSRule() ||
@@ -303,11 +224,8 @@
 				}
 				else break;
 			case BaseCSPackage.TYPE_PARAMETER_CS:
-				if(context == grammarAccess.getTypeParameterCSRule()) {
-					sequence_TypeParameterCS(context, (TypeParameterCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TypeParameterCS(context, (TypeParameterCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TYPED_TYPE_REF_CS:
 				if(context == grammarAccess.getTypedMultiplicityRefCSRule()) {
 					sequence_TypedMultiplicityRefCS_TypedTypeRefCS(context, (TypedTypeRefCS) semanticObject); 
@@ -321,43 +239,19 @@
 				}
 				else break;
 			case BaseCSPackage.WILDCARD_TYPE_REF_CS:
-				if(context == grammarAccess.getTypeRefCSRule() ||
-				   context == grammarAccess.getWildcardTypeRefCSRule()) {
-					sequence_WildcardTypeRefCS(context, (WildcardTypeRefCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_WildcardTypeRefCS(context, (WildcardTypeRefCS) semanticObject); 
+				return; 
 			}
 		else if(semanticObject.eClass().getEPackage() == EssentialOCLCSPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
 			case EssentialOCLCSPackage.BOOLEAN_LITERAL_EXP_CS:
-				if(context == grammarAccess.getBooleanLiteralExpCSRule() ||
-				   context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_BooleanLiteralExpCS(context, (BooleanLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_BooleanLiteralExpCS(context, (BooleanLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.COLLECTION_LITERAL_EXP_CS:
-				if(context == grammarAccess.getCollectionLiteralExpCSRule() ||
-				   context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_CollectionLiteralExpCS(context, (CollectionLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CollectionLiteralExpCS(context, (CollectionLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.COLLECTION_LITERAL_PART_CS:
-				if(context == grammarAccess.getCollectionLiteralPartCSRule()) {
-					sequence_CollectionLiteralPartCS(context, (CollectionLiteralPartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CollectionLiteralPartCS(context, (CollectionLiteralPartCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.COLLECTION_PATTERN_CS:
 				if(context == grammarAccess.getCollectionPatternCSRule()) {
 					sequence_CollectionPatternCS(context, (CollectionPatternCS) semanticObject); 
@@ -390,102 +284,41 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.CONSTRUCTOR_PART_CS:
-				if(context == grammarAccess.getConstructorPartCSRule()) {
-					sequence_ConstructorPartCS(context, (ConstructorPartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ConstructorPartCS(context, (ConstructorPartCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.CONTEXT_CS:
-				if(context == grammarAccess.getModelRule()) {
-					sequence_Model(context, (ContextCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_Model(context, (ContextCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.CURLY_BRACKETED_CLAUSE_CS:
-				if(context == grammarAccess.getCurlyBracketedClauseCSRule()) {
-					sequence_CurlyBracketedClauseCS(context, (CurlyBracketedClauseCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CurlyBracketedClauseCS(context, (CurlyBracketedClauseCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.EXP_SPECIFICATION_CS:
-				if(context == grammarAccess.getSpecificationCSRule()) {
-					sequence_SpecificationCS(context, (ExpSpecificationCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_SpecificationCS(context, (ExpSpecificationCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.IF_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getIfExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_IfExpCS(context, (IfExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_IfExpCS(context, (IfExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.IF_THEN_EXP_CS:
-				if(context == grammarAccess.getElseIfThenExpCSRule()) {
-					sequence_ElseIfThenExpCS(context, (IfThenExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ElseIfThenExpCS(context, (IfThenExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.INFIX_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule()) {
-					sequence_ExpCS(context, (InfixExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ExpCS(context, (InfixExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.INVALID_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getInvalidLiteralExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_InvalidLiteralExpCS(context, (InvalidLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_InvalidLiteralExpCS(context, (InvalidLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.LAMBDA_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getLambdaLiteralExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_LambdaLiteralExpCS(context, (LambdaLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LambdaLiteralExpCS(context, (LambdaLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.LET_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getLetExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedLetExpCSRule()) {
-					sequence_LetExpCS(context, (LetExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LetExpCS(context, (LetExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.LET_VARIABLE_CS:
-				if(context == grammarAccess.getLetVariableCSRule()) {
-					sequence_LetVariableCS(context, (LetVariableCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LetVariableCS(context, (LetVariableCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NAME_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNameExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_NameExpCS(context, (NameExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NameExpCS(context, (NameExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NAVIGATING_ARG_CS:
 				if(context == grammarAccess.getNavigatingArgCSRule()) {
 					sequence_NavigatingArgCS(context, (NavigatingArgCS) semanticObject); 
@@ -505,46 +338,17 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.NESTED_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getNestedExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_NestedExpCS(context, (NestedExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NestedExpCS(context, (NestedExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NULL_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getNullLiteralExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_NullLiteralExpCS(context, (NullLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NullLiteralExpCS(context, (NullLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NUMBER_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getNumberLiteralExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_NumberLiteralExpCS(context, (NumberLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NumberLiteralExpCS(context, (NumberLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.PATTERN_EXP_CS:
-				if(context == grammarAccess.getPatternExpCSRule()) {
-					sequence_PatternExpCS(context, (PatternExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PatternExpCS(context, (PatternExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.PREFIX_EXP_CS:
 				if(context == grammarAccess.getPrefixedLetExpCSRule()) {
 					sequence_PrefixedLetExpCS(context, (PrefixExpCS) semanticObject); 
@@ -562,68 +366,26 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.ROUND_BRACKETED_CLAUSE_CS:
-				if(context == grammarAccess.getRoundBracketedClauseCSRule()) {
-					sequence_RoundBracketedClauseCS(context, (RoundBracketedClauseCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_RoundBracketedClauseCS(context, (RoundBracketedClauseCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.SELF_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getSelfExpCSRule()) {
-					sequence_SelfExpCS(context, (SelfExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_SelfExpCS(context, (SelfExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.SQUARE_BRACKETED_CLAUSE_CS:
-				if(context == grammarAccess.getSquareBracketedClauseCSRule()) {
-					sequence_SquareBracketedClauseCS(context, (SquareBracketedClauseCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_SquareBracketedClauseCS(context, (SquareBracketedClauseCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.STRING_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule() ||
-				   context == grammarAccess.getStringLiteralExpCSRule()) {
-					sequence_StringLiteralExpCS(context, (StringLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_StringLiteralExpCS(context, (StringLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TUPLE_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getTupleLiteralExpCSRule()) {
-					sequence_TupleLiteralExpCS(context, (TupleLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TupleLiteralExpCS(context, (TupleLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TUPLE_LITERAL_PART_CS:
-				if(context == grammarAccess.getTupleLiteralPartCSRule()) {
-					sequence_TupleLiteralPartCS(context, (TupleLiteralPartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TupleLiteralPartCS(context, (TupleLiteralPartCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TYPE_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getTypeLiteralExpCSRule()) {
-					sequence_TypeLiteralExpCS(context, (TypeLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TypeLiteralExpCS(context, (TypeLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TYPE_NAME_EXP_CS:
 				if(context == grammarAccess.getTypeExpCSRule()) {
 					sequence_TypeExpCS_TypeNameExpCS(context, (TypeNameExpCS) semanticObject); 
@@ -635,17 +397,8 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.UNLIMITED_NATURAL_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule() ||
-				   context == grammarAccess.getUnlimitedNaturalLiteralExpCSRule()) {
-					sequence_UnlimitedNaturalLiteralExpCS(context, (UnlimitedNaturalLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_UnlimitedNaturalLiteralExpCS(context, (UnlimitedNaturalLiteralExpCS) semanticObject); 
+				return; 
 			}
 		else if(semanticObject.eClass().getEPackage() == OCLinEcoreCSPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
 			case OCLinEcoreCSPackage.OC_LIN_ECORE_CONSTRAINT_CS:
@@ -663,18 +416,11 @@
 				}
 				else break;
 			case OCLinEcoreCSPackage.SYS_MLCS:
-				if(context == grammarAccess.getAnnotationElementCSRule() ||
-				   context == grammarAccess.getSysMLCSRule()) {
-					sequence_SysMLCS(context, (SysMLCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_SysMLCS(context, (SysMLCS) semanticObject); 
+				return; 
 			case OCLinEcoreCSPackage.TOP_LEVEL_CS:
-				if(context == grammarAccess.getTopLevelCSRule()) {
-					sequence_TopLevelCS(context, (TopLevelCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TopLevelCS(context, (TopLevelCS) semanticObject); 
+				return; 
 			}
 		if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
 	}
diff --git a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/serializer/AbstractOCLinEcoreSyntacticSequencer.java b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/serializer/AbstractOCLinEcoreSyntacticSequencer.java
index 3d7c33d..cc75557 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/serializer/AbstractOCLinEcoreSyntacticSequencer.java
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/serializer/AbstractOCLinEcoreSyntacticSequencer.java
@@ -1,3 +1,6 @@
+/*
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclinecore.serializer;
 
 import com.google.inject.Inject;
@@ -256,464 +259,3620 @@
 	}
 
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ','?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (
+	 *         qualifiers+='!derived' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!derived' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!id' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!id' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!ordered' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!ordered' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!readonly' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!readonly' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!transient' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!transient' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unique' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unique' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unsettable' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unsettable' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!volatile' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!volatile' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='derived' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='derived' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='id' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='id' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='ordered' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='ordered' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='readonly' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='readonly' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='transient' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='transient' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unique' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unique' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unsettable' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unsettable' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='volatile' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='volatile' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     qualifiers+='!derived' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!derived' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!id' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!id' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!id' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!ordered' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!ordered' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!readonly' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!readonly' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!transient' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!transient' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!unique' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!unique' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!unsettable' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!unsettable' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!volatile' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!volatile' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='derived' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='derived' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='id' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='id' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='id' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='id' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='ordered' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='ordered' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='readonly' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='readonly' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='transient' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='transient' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='unique' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='unique' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='unsettable' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='unsettable' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='volatile' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='volatile' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!id'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='id'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='volatile'
 	 */
 	protected void emit_AttributeCS_CommaKeyword_5_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     default=SINGLE_QUOTED_STRING (ambiguity) (rule end)
+	 *     name=UnrestrictedName (ambiguity) (rule end)
+	 *     ownedType=TypedMultiplicityRefCS (ambiguity) (rule end)
+	 *     qualifiers+='!derived' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!id' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!ordered' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!readonly' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!transient' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!unique' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!unsettable' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!volatile' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='derived' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='id' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='ordered' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='readonly' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='transient' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='unique' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='unsettable' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='volatile' ','? '}' (ambiguity) (rule end)
 	 */
 	protected void emit_AttributeCS_SemicolonKeyword_6_1_or___LeftCurlyBracketKeyword_6_0_0_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___or___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4____a_RightCurlyBracketKeyword_6_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     UnrestrictedName?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (
+	 *         default=SINGLE_QUOTED_STRING 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         name=UnrestrictedName 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         ownedAnnotations+=AnnotationElementCS 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         ownedType=TypedMultiplicityRefCS 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!derived' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!id' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!ordered' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!readonly' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!transient' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unique' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unsettable' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!volatile' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='derived' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='id' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='ordered' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='readonly' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='transient' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unique' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unsettable' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='volatile' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
 	 */
 	protected void emit_AttributeCS_UnrestrictedNameParserRuleCall_6_0_1_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     UnrestrictedName?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (
+	 *         default=SINGLE_QUOTED_STRING 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         name=UnrestrictedName 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         ownedAnnotations+=AnnotationElementCS 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         ownedType=TypedMultiplicityRefCS 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!derived' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!id' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!ordered' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!readonly' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!transient' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unique' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unsettable' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!volatile' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='derived' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='id' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='ordered' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='readonly' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='transient' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unique' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unsettable' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='volatile' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
 	 */
 	protected void emit_AttributeCS_UnrestrictedNameParserRuleCall_6_0_1_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('derivation' UnrestrictedName? ':' ';' ('initial' UnrestrictedName? ':' ';')*)*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedDefaultExpressions+=SpecificationCS ';' ('initial' UnrestrictedName? ':' ';')* (ambiguity) '}' (rule end)
+	 *     ownedDefaultExpressions+=SpecificationCS ';' ('initial' UnrestrictedName? ':' ';')* (ambiguity) ownedAnnotations+=AnnotationElementCS
 	 */
 	protected void emit_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('derivation' UnrestrictedName? ':' ';')*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     default=SINGLE_QUOTED_STRING '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     name=UnrestrictedName '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     ownedAnnotations+=AnnotationElementCS (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     ownedDefaultExpressions+=SpecificationCS ';' (ambiguity) ('initial' UnrestrictedName? ':' ';' (ambiguity))* '}' (rule end)
+	 *     ownedDefaultExpressions+=SpecificationCS ';' (ambiguity) ('initial' UnrestrictedName? ':' ';' (ambiguity))* ownedAnnotations+=AnnotationElementCS
+	 *     ownedType=TypedMultiplicityRefCS '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!derived' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!id' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!ordered' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!readonly' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!transient' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unique' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unsettable' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!volatile' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='derived' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='id' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='ordered' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='readonly' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='transient' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unique' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unsettable' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='volatile' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (
-	     ('derivation' UnrestrictedName? ':' (';' 'derivation' UnrestrictedName? ':')*) | 
-	     (
-	         ('derivation' UnrestrictedName? ':' (';' 'derivation' UnrestrictedName? ':')* ';')? 
-	         ('initial' UnrestrictedName? ':' ';')+ 
-	         'derivation' 
-	         UnrestrictedName? 
-	         ':' 
-	         (';' 'derivation' UnrestrictedName? ':')* 
-	         (
-	             ';' 
-	             ('initial' UnrestrictedName? ':' ';')+ 
-	             'derivation' 
-	             UnrestrictedName? 
-	             ':' 
-	             (';' 'derivation' UnrestrictedName? ':')*
-	         )*
-	     )
-	 )
+	  *         ('derivation' UnrestrictedName? ':' (';' 'derivation' UnrestrictedName? ':')*) | 
+	  *         (
+	  *             ('derivation' UnrestrictedName? ':' (';' 'derivation' UnrestrictedName? ':')* ';')? 
+	  *             ('initial' UnrestrictedName? ':' ';')+ 
+	  *             'derivation' 
+	  *             UnrestrictedName? 
+	  *             ':' 
+	  *             (';' 'derivation' UnrestrictedName? ':')* 
+	  *             (
+	  *                 ';' 
+	  *                 ('initial' UnrestrictedName? ':' ';')+ 
+	  *                 'derivation' 
+	  *                 UnrestrictedName? 
+	  *                 ':' 
+	  *                 (';' 'derivation' UnrestrictedName? ':')*
+	  *             )*
+	  *         )
+	  *     )
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedDefaultExpressions+=SpecificationCS ';' (ambiguity) ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_AttributeCS___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a___or_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a_SemicolonKeyword_6_0_1_1_4__q___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__p_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__p_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2___SemicolonKeyword_6_0_1_1_4_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a__a__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('initial' UnrestrictedName? ':' ';' ('derivation' UnrestrictedName? ':' ';')*)*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedDefaultExpressions+=SpecificationCS ';' ('derivation' UnrestrictedName? ':' ';')* (ambiguity) '}' (rule end)
+	 *     ownedDefaultExpressions+=SpecificationCS ';' ('derivation' UnrestrictedName? ':' ';')* (ambiguity) ownedAnnotations+=AnnotationElementCS
 	 */
 	protected void emit_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('initial' UnrestrictedName? ':' ';')*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     default=SINGLE_QUOTED_STRING '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     name=UnrestrictedName '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     ownedAnnotations+=AnnotationElementCS (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     ownedDefaultExpressions+=SpecificationCS ';' (ambiguity) ('derivation' UnrestrictedName? ':' ';' (ambiguity))* '}' (rule end)
+	 *     ownedDefaultExpressions+=SpecificationCS ';' (ambiguity) ('derivation' UnrestrictedName? ':' ';' (ambiguity))* ownedAnnotations+=AnnotationElementCS
+	 *     ownedType=TypedMultiplicityRefCS '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!derived' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!id' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!ordered' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!readonly' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!transient' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unique' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unsettable' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!volatile' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='derived' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='id' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='ordered' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='readonly' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='transient' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unique' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unsettable' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='volatile' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (
-	     ('initial' UnrestrictedName? ':' (';' 'initial' UnrestrictedName? ':')*) | 
-	     (
-	         ('initial' UnrestrictedName? ':' (';' 'initial' UnrestrictedName? ':')* ';')? 
-	         ('derivation' UnrestrictedName? ':' ';')+ 
-	         'initial' 
-	         UnrestrictedName? 
-	         ':' 
-	         (';' 'initial' UnrestrictedName? ':')* 
-	         (
-	             ';' 
-	             ('derivation' UnrestrictedName? ':' ';')+ 
-	             'initial' 
-	             UnrestrictedName? 
-	             ':' 
-	             (';' 'initial' UnrestrictedName? ':')*
-	         )*
-	     )
-	 )
+	  *         ('initial' UnrestrictedName? ':' (';' 'initial' UnrestrictedName? ':')*) | 
+	  *         (
+	  *             ('initial' UnrestrictedName? ':' (';' 'initial' UnrestrictedName? ':')* ';')? 
+	  *             ('derivation' UnrestrictedName? ':' ';')+ 
+	  *             'initial' 
+	  *             UnrestrictedName? 
+	  *             ':' 
+	  *             (';' 'initial' UnrestrictedName? ':')* 
+	  *             (
+	  *                 ';' 
+	  *                 ('derivation' UnrestrictedName? ':' ';')+ 
+	  *                 'initial' 
+	  *                 UnrestrictedName? 
+	  *                 ':' 
+	  *                 (';' 'initial' UnrestrictedName? ':')*
+	  *             )*
+	  *         )
+	  *     )
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedDefaultExpressions+=SpecificationCS ';' (ambiguity) ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_AttributeCS___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a___or_____InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a_SemicolonKeyword_6_0_1_2_4__q___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__p_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__p_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2___SemicolonKeyword_6_0_1_2_4_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a__a__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     default=SINGLE_QUOTED_STRING '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     name=UnrestrictedName '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     ownedAnnotations+=AnnotationElementCS ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     ownedType=TypedMultiplicityRefCS '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!derived' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!id' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!ordered' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!readonly' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!transient' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unique' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unsettable' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!volatile' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='derived' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='id' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='ordered' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='readonly' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='transient' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unique' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unsettable' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='volatile' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_AttributeCS___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')+
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedDefaultExpressions+=SpecificationCS (ambiguity) ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_AttributeCS___SemicolonKeyword_6_0_1_1_4___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4__a_DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     default=SINGLE_QUOTED_STRING '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     name=UnrestrictedName '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     ownedAnnotations+=AnnotationElementCS ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     ownedType=TypedMultiplicityRefCS '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!derived' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!id' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!ordered' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!readonly' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!transient' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unique' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unsettable' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!volatile' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='derived' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='id' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='ordered' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='readonly' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='transient' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unique' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unsettable' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='volatile' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_AttributeCS___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')+
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedDefaultExpressions+=SpecificationCS (ambiguity) ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_AttributeCS___SemicolonKeyword_6_0_1_2_4___DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4__a_InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     default=SINGLE_QUOTED_STRING '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     name=UnrestrictedName '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     ownedAnnotations+=AnnotationElementCS (ambiguity) '}' (rule end)
+	 *     ownedAnnotations+=AnnotationElementCS (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     ownedType=TypedMultiplicityRefCS '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!derived' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!id' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!ordered' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!readonly' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!transient' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!unique' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!unsettable' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!volatile' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='derived' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='id' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='ordered' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='readonly' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='transient' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='unique' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='unsettable' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='volatile' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
 	 */
 	protected void emit_AttributeCS_____DerivationKeyword_6_0_1_1_0_UnrestrictedNameParserRuleCall_6_0_1_1_1_q_ColonKeyword_6_0_1_1_2_SemicolonKeyword_6_0_1_1_4___or___InitialKeyword_6_0_1_2_0_UnrestrictedNameParserRuleCall_6_0_1_2_1_q_ColonKeyword_6_0_1_2_2_SemicolonKeyword_6_0_1_2_4____a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';' | ('{' '}')
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     instanceClassName=SINGLE_QUOTED_STRING ('{' '!serializable'? '}')? (ambiguity) (rule end)
+	 *     isSerializable?='serializable' '}' (ambiguity) (rule end)
+	 *     name=UnrestrictedName ('{' '!serializable'? '}')? (ambiguity) (rule end)
+	 *     ownedSignature=TemplateSignatureCS ('{' '!serializable'? '}')? (ambiguity) (rule end)
 	 */
 	protected void emit_DataTypeCS_SemicolonKeyword_6_1_or___LeftCurlyBracketKeyword_6_0_0_RightCurlyBracketKeyword_6_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('{' '!serializable'? '}')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     instanceClassName=SINGLE_QUOTED_STRING (ambiguity) '{' ownedAnnotations+=AnnotationElementCS
+	 *     instanceClassName=SINGLE_QUOTED_STRING (ambiguity) '{' ownedConstraints+=InvariantConstraintCS
+	 *     instanceClassName=SINGLE_QUOTED_STRING (ambiguity) (';' | ('{' '}')) (rule end)
+	 *     name=UnrestrictedName (ambiguity) '{' ownedAnnotations+=AnnotationElementCS
+	 *     name=UnrestrictedName (ambiguity) '{' ownedConstraints+=InvariantConstraintCS
+	 *     name=UnrestrictedName (ambiguity) (';' | ('{' '}')) (rule end)
+	 *     ownedSignature=TemplateSignatureCS (ambiguity) '{' ownedAnnotations+=AnnotationElementCS
+	 *     ownedSignature=TemplateSignatureCS (ambiguity) '{' ownedConstraints+=InvariantConstraintCS
+	 *     ownedSignature=TemplateSignatureCS (ambiguity) (';' | ('{' '}')) (rule end)
 	 */
 	protected void emit_DataTypeCS___LeftCurlyBracketKeyword_5_0_SerializableKeyword_5_1_1_q_RightCurlyBracketKeyword_5_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';' | ('{' '}')
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     instanceClassName=SINGLE_QUOTED_STRING ('{' '!serializable'? '}')? (ambiguity) (rule end)
+	 *     isSerializable?='serializable' '}' (ambiguity) (rule end)
+	 *     name=UnrestrictedName ('{' '!serializable'? '}')? (ambiguity) (rule end)
+	 *     ownedSignature=TemplateSignatureCS ('{' '!serializable'? '}')? (ambiguity) (rule end)
 	 */
 	protected void emit_EnumerationCS_SemicolonKeyword_5_1_or___LeftCurlyBracketKeyword_5_0_0_RightCurlyBracketKeyword_5_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('{' '!serializable'? '}')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     instanceClassName=SINGLE_QUOTED_STRING (ambiguity) '{' ownedAnnotations+=AnnotationElementCS
+	 *     instanceClassName=SINGLE_QUOTED_STRING (ambiguity) '{' ownedConstraints+=InvariantConstraintCS
+	 *     instanceClassName=SINGLE_QUOTED_STRING (ambiguity) '{' ownedLiterals+=EnumerationLiteralCS
+	 *     instanceClassName=SINGLE_QUOTED_STRING (ambiguity) (';' | ('{' '}')) (rule end)
+	 *     name=UnrestrictedName (ambiguity) '{' ownedAnnotations+=AnnotationElementCS
+	 *     name=UnrestrictedName (ambiguity) '{' ownedConstraints+=InvariantConstraintCS
+	 *     name=UnrestrictedName (ambiguity) '{' ownedLiterals+=EnumerationLiteralCS
+	 *     name=UnrestrictedName (ambiguity) (';' | ('{' '}')) (rule end)
+	 *     ownedSignature=TemplateSignatureCS (ambiguity) '{' ownedAnnotations+=AnnotationElementCS
+	 *     ownedSignature=TemplateSignatureCS (ambiguity) '{' ownedConstraints+=InvariantConstraintCS
+	 *     ownedSignature=TemplateSignatureCS (ambiguity) '{' ownedLiterals+=EnumerationLiteralCS
+	 *     ownedSignature=TemplateSignatureCS (ambiguity) (';' | ('{' '}')) (rule end)
 	 */
 	protected void emit_EnumerationCS___LeftCurlyBracketKeyword_4_0_SerializableKeyword_4_1_1_q_RightCurlyBracketKeyword_4_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';' | ('{' '}')
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name=EnumerationLiteralName (ambiguity) (rule end)
+	 *     name=UnrestrictedName (ambiguity) (rule end)
+	 *     value=SIGNED (ambiguity) (rule end)
 	 */
 	protected void emit_EnumerationLiteralCS_SemicolonKeyword_2_1_or___LeftCurlyBracketKeyword_2_0_0_RightCurlyBracketKeyword_2_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';' | (':' ';')
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name=UnrestrictedName (ambiguity) (rule end)
+	 *     ownedMessageSpecification=SpecificationCS ')' (ambiguity) (rule end)
+	 *     stereotype='invariant' (ambiguity) (rule end)
 	 */
 	protected void emit_InvariantConstraintCS_SemicolonKeyword_3_1_or___ColonKeyword_3_0_0_SemicolonKeyword_3_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ','?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     qualifiers+='!derived' (ambiguity) '}' '{' 'body' UnrestrictedName? ':' (';' 'body' UnrestrictedName? ':')* ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='!derived' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!derived' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedPostconditions+=PostconditionConstraintCS
+	 *     qualifiers+='!derived' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedPreconditions+=PreconditionConstraintCS
+	 *     qualifiers+='!derived' (ambiguity) '}' (';' | ('{' ('body' UnrestrictedName? ':' ';')* '}')) (rule end)
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!ordered' (ambiguity) '}' '{' 'body' UnrestrictedName? ':' (';' 'body' UnrestrictedName? ':')* ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='!ordered' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!ordered' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedPostconditions+=PostconditionConstraintCS
+	 *     qualifiers+='!ordered' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedPreconditions+=PreconditionConstraintCS
+	 *     qualifiers+='!ordered' (ambiguity) '}' (';' | ('{' ('body' UnrestrictedName? ':' ';')* '}')) (rule end)
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!unique' (ambiguity) '}' '{' 'body' UnrestrictedName? ':' (';' 'body' UnrestrictedName? ':')* ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='!unique' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!unique' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedPostconditions+=PostconditionConstraintCS
+	 *     qualifiers+='!unique' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedPreconditions+=PreconditionConstraintCS
+	 *     qualifiers+='!unique' (ambiguity) '}' (';' | ('{' ('body' UnrestrictedName? ':' ';')* '}')) (rule end)
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='derived' (ambiguity) '}' '{' 'body' UnrestrictedName? ':' (';' 'body' UnrestrictedName? ':')* ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='derived' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='derived' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedPostconditions+=PostconditionConstraintCS
+	 *     qualifiers+='derived' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedPreconditions+=PreconditionConstraintCS
+	 *     qualifiers+='derived' (ambiguity) '}' (';' | ('{' ('body' UnrestrictedName? ':' ';')* '}')) (rule end)
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='ordered' (ambiguity) '}' '{' 'body' UnrestrictedName? ':' (';' 'body' UnrestrictedName? ':')* ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='ordered' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='ordered' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedPostconditions+=PostconditionConstraintCS
+	 *     qualifiers+='ordered' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedPreconditions+=PreconditionConstraintCS
+	 *     qualifiers+='ordered' (ambiguity) '}' (';' | ('{' ('body' UnrestrictedName? ':' ';')* '}')) (rule end)
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='unique' (ambiguity) '}' '{' 'body' UnrestrictedName? ':' (';' 'body' UnrestrictedName? ':')* ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='unique' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='unique' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedPostconditions+=PostconditionConstraintCS
+	 *     qualifiers+='unique' (ambiguity) '}' '{' ('body' UnrestrictedName? ':' ';')* ownedPreconditions+=PreconditionConstraintCS
+	 *     qualifiers+='unique' (ambiguity) '}' (';' | ('{' ('body' UnrestrictedName? ':' ';')* '}')) (rule end)
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='unique'
 	 */
 	protected void emit_OperationCS_CommaKeyword_9_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';' | ('{' ('body' UnrestrictedName? ':' ';')* '}')
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name=UnrestrictedName '(' ')' (ambiguity) (rule end)
+	 *     ownedExceptions+=TypedRefCS (ambiguity) (rule end)
+	 *     ownedParameters+=ParameterCS ')' (ambiguity) (rule end)
+	 *     ownedType=TypedMultiplicityRefCS (ambiguity) (rule end)
+	 *     qualifiers+='!derived' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!ordered' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!unique' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='derived' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='ordered' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='unique' ','? '}' (ambiguity) (rule end)
 	 */
 	protected void emit_OperationCS_SemicolonKeyword_10_1_or___LeftCurlyBracketKeyword_10_0_0___BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2_SemicolonKeyword_10_0_1_2_4__a_RightCurlyBracketKeyword_10_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     UnrestrictedName?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name=UnrestrictedName '(' ')' '{' 'body' (ambiguity) ':' (';' 'body' (ambiguity) ':')* ownedBodyExpressions+=SpecificationCS
+	 *     ownedAnnotations+=AnnotationElementCS 'body' (ambiguity) ':' (';' 'body' (ambiguity) ':')* ownedBodyExpressions+=SpecificationCS
+	 *     ownedExceptions+=TypedRefCS '{' 'body' (ambiguity) ':' (';' 'body' (ambiguity) ':')* ownedBodyExpressions+=SpecificationCS
+	 *     ownedParameters+=ParameterCS ')' '{' 'body' (ambiguity) ':' (';' 'body' (ambiguity) ':')* ownedBodyExpressions+=SpecificationCS
+	 *     ownedPostconditions+=PostconditionConstraintCS 'body' (ambiguity) ':' (';' 'body' (ambiguity) ':')* ownedBodyExpressions+=SpecificationCS
+	 *     ownedPreconditions+=PreconditionConstraintCS 'body' (ambiguity) ':' (';' 'body' (ambiguity) ':')* ownedBodyExpressions+=SpecificationCS
+	 *     ownedType=TypedMultiplicityRefCS '{' 'body' (ambiguity) ':' (';' 'body' (ambiguity) ':')* ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='!derived' ','? '}' '{' 'body' (ambiguity) ':' (';' 'body' (ambiguity) ':')* ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='!ordered' ','? '}' '{' 'body' (ambiguity) ':' (';' 'body' (ambiguity) ':')* ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='!unique' ','? '}' '{' 'body' (ambiguity) ':' (';' 'body' (ambiguity) ':')* ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='derived' ','? '}' '{' 'body' (ambiguity) ':' (';' 'body' (ambiguity) ':')* ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='ordered' ','? '}' '{' 'body' (ambiguity) ':' (';' 'body' (ambiguity) ':')* ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='unique' ','? '}' '{' 'body' (ambiguity) ':' (';' 'body' (ambiguity) ':')* ownedBodyExpressions+=SpecificationCS
 	 */
 	protected void emit_OperationCS_UnrestrictedNameParserRuleCall_10_0_1_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('body' UnrestrictedName? ':' ';')*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name=UnrestrictedName '(' ')' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     name=UnrestrictedName '(' ')' '{' (ambiguity) ownedPostconditions+=PostconditionConstraintCS
+	 *     name=UnrestrictedName '(' ')' '{' (ambiguity) ownedPreconditions+=PreconditionConstraintCS
+	 *     ownedAnnotations+=AnnotationElementCS (ambiguity) '}' (rule end)
+	 *     ownedAnnotations+=AnnotationElementCS (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     ownedAnnotations+=AnnotationElementCS (ambiguity) ownedPostconditions+=PostconditionConstraintCS
+	 *     ownedAnnotations+=AnnotationElementCS (ambiguity) ownedPreconditions+=PreconditionConstraintCS
+	 *     ownedBodyExpressions+=SpecificationCS ';' (ambiguity) '}' (rule end)
+	 *     ownedBodyExpressions+=SpecificationCS ';' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     ownedBodyExpressions+=SpecificationCS ';' (ambiguity) ownedPostconditions+=PostconditionConstraintCS
+	 *     ownedBodyExpressions+=SpecificationCS ';' (ambiguity) ownedPreconditions+=PreconditionConstraintCS
+	 *     ownedExceptions+=TypedRefCS '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     ownedExceptions+=TypedRefCS '{' (ambiguity) ownedPostconditions+=PostconditionConstraintCS
+	 *     ownedExceptions+=TypedRefCS '{' (ambiguity) ownedPreconditions+=PreconditionConstraintCS
+	 *     ownedParameters+=ParameterCS ')' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     ownedParameters+=ParameterCS ')' '{' (ambiguity) ownedPostconditions+=PostconditionConstraintCS
+	 *     ownedParameters+=ParameterCS ')' '{' (ambiguity) ownedPreconditions+=PreconditionConstraintCS
+	 *     ownedPostconditions+=PostconditionConstraintCS (ambiguity) '}' (rule end)
+	 *     ownedPostconditions+=PostconditionConstraintCS (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     ownedPostconditions+=PostconditionConstraintCS (ambiguity) ownedPostconditions+=PostconditionConstraintCS
+	 *     ownedPostconditions+=PostconditionConstraintCS (ambiguity) ownedPreconditions+=PreconditionConstraintCS
+	 *     ownedPreconditions+=PreconditionConstraintCS (ambiguity) '}' (rule end)
+	 *     ownedPreconditions+=PreconditionConstraintCS (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     ownedPreconditions+=PreconditionConstraintCS (ambiguity) ownedPostconditions+=PostconditionConstraintCS
+	 *     ownedPreconditions+=PreconditionConstraintCS (ambiguity) ownedPreconditions+=PreconditionConstraintCS
+	 *     ownedType=TypedMultiplicityRefCS '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     ownedType=TypedMultiplicityRefCS '{' (ambiguity) ownedPostconditions+=PostconditionConstraintCS
+	 *     ownedType=TypedMultiplicityRefCS '{' (ambiguity) ownedPreconditions+=PreconditionConstraintCS
+	 *     qualifiers+='!derived' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!derived' ','? '}' '{' (ambiguity) ownedPostconditions+=PostconditionConstraintCS
+	 *     qualifiers+='!derived' ','? '}' '{' (ambiguity) ownedPreconditions+=PreconditionConstraintCS
+	 *     qualifiers+='!ordered' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!ordered' ','? '}' '{' (ambiguity) ownedPostconditions+=PostconditionConstraintCS
+	 *     qualifiers+='!ordered' ','? '}' '{' (ambiguity) ownedPreconditions+=PreconditionConstraintCS
+	 *     qualifiers+='!unique' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!unique' ','? '}' '{' (ambiguity) ownedPostconditions+=PostconditionConstraintCS
+	 *     qualifiers+='!unique' ','? '}' '{' (ambiguity) ownedPreconditions+=PreconditionConstraintCS
+	 *     qualifiers+='derived' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='derived' ','? '}' '{' (ambiguity) ownedPostconditions+=PostconditionConstraintCS
+	 *     qualifiers+='derived' ','? '}' '{' (ambiguity) ownedPreconditions+=PreconditionConstraintCS
+	 *     qualifiers+='ordered' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='ordered' ','? '}' '{' (ambiguity) ownedPostconditions+=PostconditionConstraintCS
+	 *     qualifiers+='ordered' ','? '}' '{' (ambiguity) ownedPreconditions+=PreconditionConstraintCS
+	 *     qualifiers+='unique' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='unique' ','? '}' '{' (ambiguity) ownedPostconditions+=PostconditionConstraintCS
+	 *     qualifiers+='unique' ','? '}' '{' (ambiguity) ownedPreconditions+=PreconditionConstraintCS
 	 */
 	protected void emit_OperationCS___BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2_SemicolonKeyword_10_0_1_2_4__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (';' 'body' UnrestrictedName? ':')*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name=UnrestrictedName '(' ')' '{' 'body' UnrestrictedName? ':' (ambiguity) ownedBodyExpressions+=SpecificationCS
+	 *     ownedAnnotations+=AnnotationElementCS 'body' UnrestrictedName? ':' (ambiguity) ownedBodyExpressions+=SpecificationCS
+	 *     ownedExceptions+=TypedRefCS '{' 'body' UnrestrictedName? ':' (ambiguity) ownedBodyExpressions+=SpecificationCS
+	 *     ownedParameters+=ParameterCS ')' '{' 'body' UnrestrictedName? ':' (ambiguity) ownedBodyExpressions+=SpecificationCS
+	 *     ownedPostconditions+=PostconditionConstraintCS 'body' UnrestrictedName? ':' (ambiguity) ownedBodyExpressions+=SpecificationCS
+	 *     ownedPreconditions+=PreconditionConstraintCS 'body' UnrestrictedName? ':' (ambiguity) ownedBodyExpressions+=SpecificationCS
+	 *     ownedType=TypedMultiplicityRefCS '{' 'body' UnrestrictedName? ':' (ambiguity) ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='!derived' ','? '}' '{' 'body' UnrestrictedName? ':' (ambiguity) ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='!ordered' ','? '}' '{' 'body' UnrestrictedName? ':' (ambiguity) ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='!unique' ','? '}' '{' 'body' UnrestrictedName? ':' (ambiguity) ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='derived' ','? '}' '{' 'body' UnrestrictedName? ':' (ambiguity) ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='ordered' ','? '}' '{' 'body' UnrestrictedName? ':' (ambiguity) ownedBodyExpressions+=SpecificationCS
+	 *     qualifiers+='unique' ','? '}' '{' 'body' UnrestrictedName? ':' (ambiguity) ownedBodyExpressions+=SpecificationCS
 	 */
 	protected void emit_OperationCS___SemicolonKeyword_10_0_1_2_4_BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (';' 'body' UnrestrictedName? ':')+
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedBodyExpressions+=SpecificationCS (ambiguity) ownedBodyExpressions+=SpecificationCS
 	 */
 	protected void emit_OperationCS___SemicolonKeyword_10_0_1_2_4_BodyKeyword_10_0_1_2_0_UnrestrictedNameParserRuleCall_10_0_1_2_1_q_ColonKeyword_10_0_1_2_2__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';' | ('{' '}')
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name=UnrestrictedName (ambiguity) (rule end)
+	 *     nsPrefix=UnrestrictedName (ambiguity) (rule end)
+	 *     nsURI=URI (ambiguity) (rule end)
 	 */
 	protected void emit_PackageCS_SemicolonKeyword_4_1_or___LeftCurlyBracketKeyword_4_0_0_RightCurlyBracketKeyword_4_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ','?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     qualifiers+='!ordered' (ambiguity) '}' '{' ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!ordered' (ambiguity) '}' ('{' '}')? (rule end)
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!unique' (ambiguity) '}' '{' ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!unique' (ambiguity) '}' ('{' '}')? (rule end)
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='ordered' (ambiguity) '}' '{' ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='ordered' (ambiguity) '}' ('{' '}')? (rule end)
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='unique' (ambiguity) '}' '{' ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='unique' (ambiguity) '}' ('{' '}')? (rule end)
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='unique'
 	 */
 	protected void emit_ParameterCS_CommaKeyword_2_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('{' '}')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name=UnrestrictedName (ambiguity) (rule end)
+	 *     ownedType=TypedMultiplicityRefCS (ambiguity) (rule end)
+	 *     qualifiers+='!ordered' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!unique' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='ordered' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='unique' ','? '}' (ambiguity) (rule end)
 	 */
 	protected void emit_ParameterCS___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ','?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (
+	 *         qualifiers+='!composes' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!composes' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!derived' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!derived' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!ordered' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!ordered' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!readonly' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!readonly' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!resolve' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!resolve' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!transient' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!transient' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unique' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unique' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unsettable' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unsettable' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!volatile' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!volatile' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='composes' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='composes' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='derived' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='derived' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='ordered' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='ordered' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='readonly' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='readonly' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='resolve' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='resolve' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='transient' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='transient' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unique' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unique' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unsettable' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unsettable' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='volatile' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='volatile' 
+	 *         (ambiguity) 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         UnrestrictedName? 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     qualifiers+='!composes' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!composes' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!composes' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!composes' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!derived' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!derived' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!derived' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!derived' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!ordered' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!ordered' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!ordered' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!ordered' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!readonly' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!readonly' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!readonly' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!readonly' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!resolve' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!resolve' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!resolve' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!resolve' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!transient' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!transient' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!transient' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!transient' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!unique' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!unique' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!unique' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!unique' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!unsettable' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!unsettable' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!unsettable' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!unsettable' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='!volatile' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!volatile' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!volatile' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='!volatile' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='composes' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='composes' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='composes' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='composes' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='derived' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='derived' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='derived' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='derived' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='ordered' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='ordered' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='ordered' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='ordered' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='readonly' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='readonly' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='readonly' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='readonly' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='resolve' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='resolve' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='resolve' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='resolve' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='transient' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='transient' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='transient' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='transient' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='unique' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='unique' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='unique' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='unique' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='unsettable' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='unsettable' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='unsettable' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='unsettable' (ambiguity) qualifiers+='volatile'
+	 *     qualifiers+='volatile' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='volatile' (ambiguity) '}' '{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='volatile' (ambiguity) '}' (';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')) (rule end)
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!composes'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!derived'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!ordered'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!readonly'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!resolve'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!transient'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!unique'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!unsettable'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='!volatile'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='composes'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='derived'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='ordered'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='readonly'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='resolve'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='transient'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='unique'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='unsettable'
+	 *     qualifiers+='volatile' (ambiguity) qualifiers+='volatile'
 	 */
 	protected void emit_ReferenceCS_CommaKeyword_6_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';' | ('{' (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))* '}')
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     default=SINGLE_QUOTED_STRING (ambiguity) (rule end)
+	 *     name=UnrestrictedName (ambiguity) (rule end)
+	 *     ownedType=TypedMultiplicityRefCS (ambiguity) (rule end)
+	 *     qualifiers+='!composes' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!derived' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!ordered' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!readonly' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!resolve' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!transient' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!unique' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!unsettable' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='!volatile' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='composes' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='derived' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='ordered' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='readonly' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='resolve' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='transient' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='unique' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='unsettable' ','? '}' (ambiguity) (rule end)
+	 *     qualifiers+='volatile' ','? '}' (ambiguity) (rule end)
+	 *     referredOpposite=[Property|UnrestrictedName] (ambiguity) (rule end)
 	 */
 	protected void emit_ReferenceCS_SemicolonKeyword_7_1_or___LeftCurlyBracketKeyword_7_0_0_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___or___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4____a_RightCurlyBracketKeyword_7_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     UnrestrictedName?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (
+	 *         default=SINGLE_QUOTED_STRING 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         name=UnrestrictedName 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         ownedAnnotations+=AnnotationElementCS 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         ownedType=TypedMultiplicityRefCS 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!composes' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!derived' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!ordered' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!readonly' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!resolve' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!transient' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unique' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unsettable' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!volatile' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='composes' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='derived' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='ordered' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='readonly' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='resolve' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='transient' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unique' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unsettable' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='volatile' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         referredKeys+=[Property|UnrestrictedName] 
+	 *         ';' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         referredOpposite=[Property|UnrestrictedName] 
+	 *         '{' 
+	 *         ('initial' UnrestrictedName? ':' ';')* 
+	 *         'derivation' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
 	 */
 	protected void emit_ReferenceCS_UnrestrictedNameParserRuleCall_7_0_1_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     UnrestrictedName?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (
+	 *         default=SINGLE_QUOTED_STRING 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         name=UnrestrictedName 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         ownedAnnotations+=AnnotationElementCS 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         ownedType=TypedMultiplicityRefCS 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!composes' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!derived' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!ordered' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!readonly' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!resolve' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!transient' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unique' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!unsettable' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='!volatile' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='composes' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='derived' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='ordered' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='readonly' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='resolve' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='transient' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unique' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='unsettable' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         qualifiers+='volatile' 
+	 *         ','? 
+	 *         '}' 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         referredKeys+=[Property|UnrestrictedName] 
+	 *         ';' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
+	 *     (
+	 *         referredOpposite=[Property|UnrestrictedName] 
+	 *         '{' 
+	 *         ('derivation' UnrestrictedName? ':' ';')* 
+	 *         'initial' 
+	 *         (ambiguity) 
+	 *         ':' 
+	 *         (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' (ambiguity) ':')* 
+	 *         ownedDefaultExpressions+=SpecificationCS
+	 *     )
 	 */
 	protected void emit_ReferenceCS_UnrestrictedNameParserRuleCall_7_0_1_3_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('derivation' UnrestrictedName? ':' ';' ('initial' UnrestrictedName? ':' ';')*)*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedDefaultExpressions+=SpecificationCS ';' ('initial' UnrestrictedName? ':' ';')* (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     ownedDefaultExpressions+=SpecificationCS ';' ('initial' UnrestrictedName? ':' ';')* (ambiguity) '}' (rule end)
+	 *     ownedDefaultExpressions+=SpecificationCS ';' ('initial' UnrestrictedName? ':' ';')* (ambiguity) ownedAnnotations+=AnnotationElementCS
 	 */
 	protected void emit_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('derivation' UnrestrictedName? ':' ';')*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     default=SINGLE_QUOTED_STRING '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     name=UnrestrictedName '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     ownedAnnotations+=AnnotationElementCS (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     ownedDefaultExpressions+=SpecificationCS ';' (ambiguity) ('initial' UnrestrictedName? ':' ';' (ambiguity))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     ownedDefaultExpressions+=SpecificationCS ';' (ambiguity) ('initial' UnrestrictedName? ':' ';' (ambiguity))* '}' (rule end)
+	 *     ownedDefaultExpressions+=SpecificationCS ';' (ambiguity) ('initial' UnrestrictedName? ':' ';' (ambiguity))* ownedAnnotations+=AnnotationElementCS
+	 *     ownedType=TypedMultiplicityRefCS '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!composes' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!derived' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!ordered' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!readonly' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!resolve' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!transient' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unique' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unsettable' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!volatile' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='composes' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='derived' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='ordered' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='readonly' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='resolve' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='transient' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unique' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unsettable' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='volatile' ','? '}' '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     referredKeys+=[Property|UnrestrictedName] ';' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     referredOpposite=[Property|UnrestrictedName] '{' (ambiguity) 'initial' UnrestrictedName? ':' (';' (ambiguity) 'initial' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (
-	     ('derivation' UnrestrictedName? ':' (';' 'derivation' UnrestrictedName? ':')*) | 
-	     (
-	         ('derivation' UnrestrictedName? ':' (';' 'derivation' UnrestrictedName? ':')* ';')? 
-	         ('initial' UnrestrictedName? ':' ';')+ 
-	         'derivation' 
-	         UnrestrictedName? 
-	         ':' 
-	         (';' 'derivation' UnrestrictedName? ':')* 
-	         (
-	             ';' 
-	             ('initial' UnrestrictedName? ':' ';')+ 
-	             'derivation' 
-	             UnrestrictedName? 
-	             ':' 
-	             (';' 'derivation' UnrestrictedName? ':')*
-	         )*
-	     )
-	 )
+	  *         ('derivation' UnrestrictedName? ':' (';' 'derivation' UnrestrictedName? ':')*) | 
+	  *         (
+	  *             ('derivation' UnrestrictedName? ':' (';' 'derivation' UnrestrictedName? ':')* ';')? 
+	  *             ('initial' UnrestrictedName? ':' ';')+ 
+	  *             'derivation' 
+	  *             UnrestrictedName? 
+	  *             ':' 
+	  *             (';' 'derivation' UnrestrictedName? ':')* 
+	  *             (
+	  *                 ';' 
+	  *                 ('initial' UnrestrictedName? ':' ';')+ 
+	  *                 'derivation' 
+	  *                 UnrestrictedName? 
+	  *                 ':' 
+	  *                 (';' 'derivation' UnrestrictedName? ':')*
+	  *             )*
+	  *         )
+	  *     )
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedDefaultExpressions+=SpecificationCS ';' (ambiguity) ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_ReferenceCS___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a___or_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a_SemicolonKeyword_7_0_1_2_4__q___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__p_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__p_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2___SemicolonKeyword_7_0_1_2_4_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a__a__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('initial' UnrestrictedName? ':' ';' ('derivation' UnrestrictedName? ':' ';')*)*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedDefaultExpressions+=SpecificationCS ';' ('derivation' UnrestrictedName? ':' ';')* (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     ownedDefaultExpressions+=SpecificationCS ';' ('derivation' UnrestrictedName? ':' ';')* (ambiguity) '}' (rule end)
+	 *     ownedDefaultExpressions+=SpecificationCS ';' ('derivation' UnrestrictedName? ':' ';')* (ambiguity) ownedAnnotations+=AnnotationElementCS
 	 */
 	protected void emit_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('initial' UnrestrictedName? ':' ';')*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     default=SINGLE_QUOTED_STRING '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     name=UnrestrictedName '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     ownedAnnotations+=AnnotationElementCS (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     ownedDefaultExpressions+=SpecificationCS ';' (ambiguity) ('derivation' UnrestrictedName? ':' ';' (ambiguity))* 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     ownedDefaultExpressions+=SpecificationCS ';' (ambiguity) ('derivation' UnrestrictedName? ':' ';' (ambiguity))* '}' (rule end)
+	 *     ownedDefaultExpressions+=SpecificationCS ';' (ambiguity) ('derivation' UnrestrictedName? ':' ';' (ambiguity))* ownedAnnotations+=AnnotationElementCS
+	 *     ownedType=TypedMultiplicityRefCS '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!composes' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!derived' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!ordered' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!readonly' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!resolve' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!transient' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unique' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unsettable' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!volatile' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='composes' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='derived' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='ordered' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='readonly' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='resolve' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='transient' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unique' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unsettable' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='volatile' ','? '}' '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     referredKeys+=[Property|UnrestrictedName] ';' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
+	 *     referredOpposite=[Property|UnrestrictedName] '{' (ambiguity) 'derivation' UnrestrictedName? ':' (';' (ambiguity) 'derivation' UnrestrictedName? ':')* ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (
-	     ('initial' UnrestrictedName? ':' (';' 'initial' UnrestrictedName? ':')*) | 
-	     (
-	         ('initial' UnrestrictedName? ':' (';' 'initial' UnrestrictedName? ':')* ';')? 
-	         ('derivation' UnrestrictedName? ':' ';')+ 
-	         'initial' 
-	         UnrestrictedName? 
-	         ':' 
-	         (';' 'initial' UnrestrictedName? ':')* 
-	         (
-	             ';' 
-	             ('derivation' UnrestrictedName? ':' ';')+ 
-	             'initial' 
-	             UnrestrictedName? 
-	             ':' 
-	             (';' 'initial' UnrestrictedName? ':')*
-	         )*
-	     )
-	 )
+	  *         ('initial' UnrestrictedName? ':' (';' 'initial' UnrestrictedName? ':')*) | 
+	  *         (
+	  *             ('initial' UnrestrictedName? ':' (';' 'initial' UnrestrictedName? ':')* ';')? 
+	  *             ('derivation' UnrestrictedName? ':' ';')+ 
+	  *             'initial' 
+	  *             UnrestrictedName? 
+	  *             ':' 
+	  *             (';' 'initial' UnrestrictedName? ':')* 
+	  *             (
+	  *                 ';' 
+	  *                 ('derivation' UnrestrictedName? ':' ';')+ 
+	  *                 'initial' 
+	  *                 UnrestrictedName? 
+	  *                 ':' 
+	  *                 (';' 'initial' UnrestrictedName? ':')*
+	  *             )*
+	  *         )
+	  *     )
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedDefaultExpressions+=SpecificationCS ';' (ambiguity) ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_ReferenceCS___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a___or_____InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a_SemicolonKeyword_7_0_1_3_4__q___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__p_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__p_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2___SemicolonKeyword_7_0_1_3_4_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a__a__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     default=SINGLE_QUOTED_STRING '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     name=UnrestrictedName '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     ownedAnnotations+=AnnotationElementCS ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     ownedType=TypedMultiplicityRefCS '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!composes' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!derived' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!ordered' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!readonly' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!resolve' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!transient' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unique' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unsettable' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!volatile' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='composes' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='derived' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='ordered' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='readonly' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='resolve' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='transient' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unique' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unsettable' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='volatile' ','? '}' '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     referredKeys+=[Property|UnrestrictedName] ';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     referredOpposite=[Property|UnrestrictedName] '{' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_ReferenceCS___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (';' ('initial' UnrestrictedName? ':' ';')* 'derivation' UnrestrictedName? ':')+
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedDefaultExpressions+=SpecificationCS (ambiguity) ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_ReferenceCS___SemicolonKeyword_7_0_1_2_4___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4__a_DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     default=SINGLE_QUOTED_STRING '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     name=UnrestrictedName '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     ownedAnnotations+=AnnotationElementCS ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     ownedType=TypedMultiplicityRefCS '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!composes' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!derived' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!ordered' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!readonly' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!resolve' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!transient' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unique' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!unsettable' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='!volatile' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='composes' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='derived' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='ordered' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='readonly' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='resolve' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='transient' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unique' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='unsettable' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     qualifiers+='volatile' ','? '}' '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     referredKeys+=[Property|UnrestrictedName] ';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
+	 *     referredOpposite=[Property|UnrestrictedName] '{' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':' (ambiguity) ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_ReferenceCS___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (';' ('derivation' UnrestrictedName? ':' ';')* 'initial' UnrestrictedName? ':')+
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedDefaultExpressions+=SpecificationCS (ambiguity) ownedDefaultExpressions+=SpecificationCS
 	 */
 	protected void emit_ReferenceCS___SemicolonKeyword_7_0_1_3_4___DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4__a_InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (('derivation' UnrestrictedName? ':' ';') | ('initial' UnrestrictedName? ':' ';'))*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     default=SINGLE_QUOTED_STRING '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     default=SINGLE_QUOTED_STRING '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     name=UnrestrictedName '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     name=UnrestrictedName '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     ownedAnnotations+=AnnotationElementCS (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     ownedAnnotations+=AnnotationElementCS (ambiguity) '}' (rule end)
+	 *     ownedAnnotations+=AnnotationElementCS (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     ownedType=TypedMultiplicityRefCS '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     ownedType=TypedMultiplicityRefCS '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!composes' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!composes' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!derived' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!derived' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!ordered' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!ordered' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!readonly' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!readonly' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!resolve' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!resolve' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!transient' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!transient' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!unique' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!unique' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!unsettable' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!unsettable' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='!volatile' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='!volatile' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='composes' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='composes' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='derived' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='derived' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='ordered' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='ordered' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='readonly' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='readonly' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='resolve' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='resolve' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='transient' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='transient' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='unique' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='unique' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='unsettable' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='unsettable' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     qualifiers+='volatile' ','? '}' '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     qualifiers+='volatile' ','? '}' '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     referredKeys+=[Property|UnrestrictedName] ';' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     referredKeys+=[Property|UnrestrictedName] ';' (ambiguity) '}' (rule end)
+	 *     referredKeys+=[Property|UnrestrictedName] ';' (ambiguity) ownedAnnotations+=AnnotationElementCS
+	 *     referredOpposite=[Property|UnrestrictedName] '{' (ambiguity) 'key' referredKeys+=[Property|UnrestrictedName]
+	 *     referredOpposite=[Property|UnrestrictedName] '{' (ambiguity) ownedAnnotations+=AnnotationElementCS
 	 */
 	protected void emit_ReferenceCS_____DerivationKeyword_7_0_1_2_0_UnrestrictedNameParserRuleCall_7_0_1_2_1_q_ColonKeyword_7_0_1_2_2_SemicolonKeyword_7_0_1_2_4___or___InitialKeyword_7_0_1_3_0_UnrestrictedNameParserRuleCall_7_0_1_3_1_q_ColonKeyword_7_0_1_3_2_SemicolonKeyword_7_0_1_3_4____a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';' | ('{' '}')
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     instanceClassName=SINGLE_QUOTED_STRING ('{' '}')? (ambiguity) (rule end)
+	 *     isInterface?='interface' '}' (ambiguity) (rule end)
+	 *     name=UnrestrictedName ('{' '}')? (ambiguity) (rule end)
+	 *     ownedSignature=TemplateSignatureCS ('{' '}')? (ambiguity) (rule end)
+	 *     ownedSuperTypes+=TypedRefCS ('{' '}')? (ambiguity) (rule end)
 	 */
 	protected void emit_StructuredClassCS_SemicolonKeyword_7_1_or___LeftCurlyBracketKeyword_7_0_0_RightCurlyBracketKeyword_7_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('{' '}')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     instanceClassName=SINGLE_QUOTED_STRING (ambiguity) '{' ownedAnnotations+=AnnotationElementCS
+	 *     instanceClassName=SINGLE_QUOTED_STRING (ambiguity) '{' ownedConstraints+=InvariantConstraintCS
+	 *     instanceClassName=SINGLE_QUOTED_STRING (ambiguity) '{' ownedOperations+=OperationCS
+	 *     instanceClassName=SINGLE_QUOTED_STRING (ambiguity) '{' ownedProperties+=StructuralFeatureCS
+	 *     instanceClassName=SINGLE_QUOTED_STRING (ambiguity) (';' | ('{' '}')) (rule end)
+	 *     name=UnrestrictedName (ambiguity) '{' ownedAnnotations+=AnnotationElementCS
+	 *     name=UnrestrictedName (ambiguity) '{' ownedConstraints+=InvariantConstraintCS
+	 *     name=UnrestrictedName (ambiguity) '{' ownedOperations+=OperationCS
+	 *     name=UnrestrictedName (ambiguity) '{' ownedProperties+=StructuralFeatureCS
+	 *     name=UnrestrictedName (ambiguity) (';' | ('{' '}')) (rule end)
+	 *     ownedSignature=TemplateSignatureCS (ambiguity) '{' ownedAnnotations+=AnnotationElementCS
+	 *     ownedSignature=TemplateSignatureCS (ambiguity) '{' ownedConstraints+=InvariantConstraintCS
+	 *     ownedSignature=TemplateSignatureCS (ambiguity) '{' ownedOperations+=OperationCS
+	 *     ownedSignature=TemplateSignatureCS (ambiguity) '{' ownedProperties+=StructuralFeatureCS
+	 *     ownedSignature=TemplateSignatureCS (ambiguity) (';' | ('{' '}')) (rule end)
+	 *     ownedSuperTypes+=TypedRefCS (ambiguity) '{' ownedAnnotations+=AnnotationElementCS
+	 *     ownedSuperTypes+=TypedRefCS (ambiguity) '{' ownedConstraints+=InvariantConstraintCS
+	 *     ownedSuperTypes+=TypedRefCS (ambiguity) '{' ownedOperations+=OperationCS
+	 *     ownedSuperTypes+=TypedRefCS (ambiguity) '{' ownedProperties+=StructuralFeatureCS
+	 *     ownedSuperTypes+=TypedRefCS (ambiguity) (';' | ('{' '}')) (rule end)
 	 */
 	protected void emit_StructuredClassCS___LeftCurlyBracketKeyword_6_0_RightCurlyBracketKeyword_6_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('module' UnrestrictedName)?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (rule start) (ambiguity) (rule start)
+	 *     (rule start) (ambiguity) ownedImports+=ImportCS
+	 *     (rule start) (ambiguity) ownedLibraries+=LibraryCS
+	 *     (rule start) (ambiguity) ownedPackages+=PackageCS
 	 */
 	protected void emit_TopLevelCS___ModuleKeyword_1_0_UnrestrictedNameParserRuleCall_1_1__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('(' ')')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name='Tuple' (ambiguity) (rule end)
+	 *     name='Tuple' (ambiguity) ownedMultiplicity=MultiplicityCS
 	 */
 	protected void emit_TupleTypeCS___LeftParenthesisKeyword_1_0_RightParenthesisKeyword_1_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
diff --git a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/services/OCLinEcoreGrammarAccess.java b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/services/OCLinEcoreGrammarAccess.java
index ca3d127..7d773f8 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/services/OCLinEcoreGrammarAccess.java
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/services/OCLinEcoreGrammarAccess.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclinecore.services;
 
 import com.google.inject.Singleton;
@@ -37,8 +37,7 @@
 		// TopLevelCS:
 		//	{TopLevelCS} ("module" UnrestrictedName)? ownedLibraries+=LibraryCS* ownedImports+=ImportCS*
 		//	ownedPackages+=PackageCS*;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{TopLevelCS} ("module" UnrestrictedName)? ownedLibraries+=LibraryCS* ownedImports+=ImportCS* ownedPackages+=PackageCS*
 		public Group getGroup() { return cGroup; }
@@ -80,8 +79,7 @@
 		
 		//INTEGER returns ecore::EInt:
 		//	INT;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//INT
 		public RuleCall getINTTerminalRuleCall() { return cINTTerminalRuleCall; }
@@ -95,8 +93,7 @@
 		
 		//SIGNED returns ecore::EInt:
 		//	"-"? INT;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"-"? INT
 		public Group getGroup() { return cGroup; }
@@ -155,8 +152,7 @@
 		//	"library" | "module" | "operation" | "ordered" | "package" | "postcondition" | "precondition" | "primitive" |
 		//	"property" | "readonly" | "reference" | "resolve" | "static" | "super" | "throws" | "transient" | "unique" |
 		//	"unsettable" | "volatile";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//EssentialOCLUnrestrictedName | "abstract" | "attribute" | "body" | "callable" | "class" | "composes" | "datatype" |
 		//"definition" | "derivation" | "derived" | "enum" | "extends" | "id" | "import" | "initial" | "interface" | "key" |
@@ -303,8 +299,7 @@
 		//InvariantConstraintCS returns OCLinEcoreConstraintCS:
 		//	isCallable?="callable"? stereotype="invariant" (name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS
 		//	")")?)? (":" ownedSpecification=SpecificationCS? ";" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//isCallable?="callable"? stereotype="invariant" (name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS
 		//")")?)? (":" ownedSpecification=SpecificationCS? ";" | ";")
@@ -389,8 +384,7 @@
 		//PostconditionConstraintCS returns OCLinEcoreConstraintCS:
 		//	stereotype="postcondition" (name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS ")")?)? ":"
 		//	ownedSpecification=SpecificationCS? ";";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//stereotype="postcondition" (name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS ")")?)? ":"
 		//ownedSpecification=SpecificationCS? ";"
@@ -460,8 +454,7 @@
 		//PreconditionConstraintCS returns OCLinEcoreConstraintCS:
 		//	stereotype="precondition" (name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS ")")?)? ":"
 		//	ownedSpecification=SpecificationCS? ";";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//stereotype="precondition" (name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS ")")?)? ":"
 		//ownedSpecification=SpecificationCS? ";"
@@ -545,8 +538,7 @@
 		//	{base::AnnotationCS} "annotation" name=(UnrestrictedName | SINGLE_QUOTED_STRING)? ("(" ownedDetails+=DetailCS (","
 		//	ownedDetails+=DetailCS)* ")")? ("{" (ownedAnnotations+=AnnotationElementCS | ownedContents+=ModelElementCS |
 		//	ownedReferences+=ModelElementRefCS)+ "}" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{base::AnnotationCS} "annotation" name=(UnrestrictedName | SINGLE_QUOTED_STRING)? ("(" ownedDetails+=DetailCS (","
 		//ownedDetails+=DetailCS)* ")")? ("{" (ownedAnnotations+=AnnotationElementCS | ownedContents+=ModelElementCS |
@@ -645,8 +637,7 @@
 		
 		//AnnotationElementCS returns base::AnnotationElementCS:
 		//	AnnotationCS | DocumentationCS | SysMLCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//AnnotationCS | DocumentationCS | SysMLCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -756,8 +747,7 @@
 		//	qualifiers+="!unsettable" | qualifiers+="volatile" | qualifiers+="!volatile") ","?)+ "}")? ("{"
 		//	(ownedAnnotations+=AnnotationElementCS | "derivation" UnrestrictedName? ":" ownedDefaultExpressions+=SpecificationCS?
 		//	";" | "initial" UnrestrictedName? ":" ownedDefaultExpressions+=SpecificationCS? ";")* "}" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//(qualifiers+="static" qualifiers+="definition"? | qualifiers+="definition" qualifiers+="static"?)? "attribute"
 		//name=UnrestrictedName (":" ownedType=TypedMultiplicityRefCS)? ("=" default=SINGLE_QUOTED_STRING)? ("{"
@@ -1039,8 +1029,7 @@
 		
 		//ClassCS returns base::ClassCS:
 		//	StructuredClassCS | DataTypeCS | EnumerationCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//StructuredClassCS | DataTypeCS | EnumerationCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -1091,8 +1080,7 @@
 		//	isPrimitive?="primitive"? "datatype" name=UnrestrictedName ownedSignature=TemplateSignatureCS? (":"
 		//	instanceClassName=SINGLE_QUOTED_STRING)? ("{" (isSerializable?="serializable" | "!serializable")? "}")? ("{"
 		//	(ownedAnnotations+=AnnotationElementCS | ownedConstraints+=InvariantConstraintCS)* "}" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//isPrimitive?="primitive"? "datatype" name=UnrestrictedName ownedSignature=TemplateSignatureCS? (":"
 		//instanceClassName=SINGLE_QUOTED_STRING)? ("{" (isSerializable?="serializable" | "!serializable")? "}")? ("{"
@@ -1199,8 +1187,7 @@
 		
 		//DetailCS returns base::DetailCS:
 		//	name=(UnrestrictedName | SINGLE_QUOTED_STRING) "=" values+=(SINGLE_QUOTED_STRING | ML_SINGLE_QUOTED_STRING)*;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name=(UnrestrictedName | SINGLE_QUOTED_STRING) "=" values+=(SINGLE_QUOTED_STRING | ML_SINGLE_QUOTED_STRING)*
 		public Group getGroup() { return cGroup; }
@@ -1254,8 +1241,7 @@
 		//DocumentationCS returns base::DocumentationCS:
 		//	{base::DocumentationCS} "documentation" value=SINGLE_QUOTED_STRING? ("(" ownedDetails+=DetailCS (","
 		//	ownedDetails+=DetailCS)* ")")? ";";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{base::DocumentationCS} "documentation" value=SINGLE_QUOTED_STRING? ("(" ownedDetails+=DetailCS (","
 		//ownedDetails+=DetailCS)* ")")? ";"
@@ -1340,8 +1326,7 @@
 		//	"enum" name=UnrestrictedName ownedSignature=TemplateSignatureCS? (":" instanceClassName=SINGLE_QUOTED_STRING)? ("{"
 		//	(isSerializable?="serializable" | "!serializable")? "}")? ("{" (ownedAnnotations+=AnnotationElementCS |
 		//	ownedLiterals+=EnumerationLiteralCS | ownedConstraints+=InvariantConstraintCS)* "}" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"enum" name=UnrestrictedName ownedSignature=TemplateSignatureCS? (":" instanceClassName=SINGLE_QUOTED_STRING)? ("{"
 		//(isSerializable?="serializable" | "!serializable")? "}")? ("{" (ownedAnnotations+=AnnotationElementCS |
@@ -1460,8 +1445,7 @@
 		//EnumerationLiteralCS returns base::EnumerationLiteralCS:
 		//	("literal" name=UnrestrictedName | name=EnumerationLiteralName) ("=" value=SIGNED)? ("{"
 		//	ownedAnnotations+=AnnotationElementCS* "}" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//("literal" name=UnrestrictedName | name=EnumerationLiteralName) ("=" value=SIGNED)? ("{"
 		//ownedAnnotations+=AnnotationElementCS* "}" | ";")
@@ -1538,8 +1522,7 @@
 		
 		//ImportCS returns base::ImportCS:
 		//	"import" (name=UnrestrictedName ":")? ownedPathName=URIPathNameCS isAll?="::*"? ";";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"import" (name=UnrestrictedName ":")? ownedPathName=URIPathNameCS isAll?="::*"? ";"
 		public Group getGroup() { return cGroup; }
@@ -1590,8 +1573,7 @@
 		
 		//LibraryCS returns base::LibraryCS:
 		//	"library" (name=UnrestrictedName ":")? referredPackage=[pivot::Package|URI] ";";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"library" (name=UnrestrictedName ":")? referredPackage=[pivot::Package|URI] ";"
 		public Group getGroup() { return cGroup; }
@@ -1635,8 +1617,7 @@
 		
 		//ModelElementCS returns base::ModelElementCS:
 		//	ClassCS | EnumerationLiteralCS | OperationCS | PackageCS | StructuralFeatureCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ClassCS | EnumerationLiteralCS | OperationCS | PackageCS | StructuralFeatureCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -1667,8 +1648,7 @@
 		
 		//ModelElementRefCS returns base::ModelElementRefCS:
 		//	"reference" ownedPathName=PathNameCS ";";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"reference" ownedPathName=PathNameCS ";"
 		public Group getGroup() { return cGroup; }
@@ -1772,8 +1752,7 @@
 		//	qualifiers+="!ordered" | qualifiers+="unique" | qualifiers+="!unique") ","?)+ "}")? ("{"
 		//	(ownedAnnotations+=AnnotationElementCS | ownedPreconditions+=PreconditionConstraintCS | "body" UnrestrictedName? ":"
 		//	ownedBodyExpressions+=SpecificationCS? ";" | ownedPostconditions+=PostconditionConstraintCS)* "}" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//(qualifiers+="static" qualifiers+="definition"? | qualifiers+="definition" qualifiers+="static"?)? "operation"
 		//ownedSignature=TemplateSignatureCS? name=UnrestrictedName "(" (ownedParameters+=ParameterCS (","
@@ -2043,8 +2022,7 @@
 		//PackageCS returns base::PackageCS:
 		//	"package" name=UnrestrictedName (":" nsPrefix=UnrestrictedName)? ("=" nsURI=URI)? ("{"
 		//	(ownedAnnotations+=AnnotationElementCS | ownedPackages+=PackageCS | ownedClasses+=ClassCS)* "}" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"package" name=UnrestrictedName (":" nsPrefix=UnrestrictedName)? ("=" nsURI=URI)? ("{"
 		//(ownedAnnotations+=AnnotationElementCS | ownedPackages+=PackageCS | ownedClasses+=ClassCS)* "}" | ";")
@@ -2152,8 +2130,7 @@
 		//ParameterCS returns base::ParameterCS:
 		//	name=UnrestrictedName (":" ownedType=TypedMultiplicityRefCS)? ("{" ((qualifiers+="ordered" | qualifiers+="!ordered" |
 		//	qualifiers+="unique" | qualifiers+="!unique") ","?)+ "}")? ("{" ownedAnnotations+=AnnotationElementCS* "}")?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name=UnrestrictedName (":" ownedType=TypedMultiplicityRefCS)? ("{" ((qualifiers+="ordered" | qualifiers+="!ordered" |
 		//qualifiers+="unique" | qualifiers+="!unique") ","?)+ "}")? ("{" ownedAnnotations+=AnnotationElementCS* "}")?
@@ -2353,8 +2330,7 @@
 		//	referredKeys+=[pivot::Property|UnrestrictedName] ("," referredKeys+=[pivot::Property|UnrestrictedName])* ";" |
 		//	"derivation" UnrestrictedName? ":" ownedDefaultExpressions+=SpecificationCS? ";" | "initial" UnrestrictedName? ":"
 		//	ownedDefaultExpressions+=SpecificationCS? ";")* "}" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//(qualifiers+="static" qualifiers+="definition"? | qualifiers+="definition" qualifiers+="static"?)? "property"
 		//name=UnrestrictedName ("#" referredOpposite=[pivot::Property|UnrestrictedName])? (":"
@@ -2707,8 +2683,7 @@
 		
 		//SpecificationCS returns essentialocl::ExpSpecificationCS:
 		//	ownedExpression=ExpCS | exprString=UNQUOTED_STRING;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedExpression=ExpCS | exprString=UNQUOTED_STRING
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -2773,8 +2748,7 @@
 		//	ownedSuperTypes+=TypedRefCS ("," ownedSuperTypes+=TypedRefCS)*)? (":" instanceClassName=SINGLE_QUOTED_STRING)? ("{"
 		//	isInterface?="interface"? "}")? ("{" (ownedAnnotations+=AnnotationElementCS | ownedOperations+=OperationCS |
 		//	ownedProperties+=StructuralFeatureCS | ownedConstraints+=InvariantConstraintCS)* "}" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//isAbstract?="abstract"? "class" name=UnrestrictedName ownedSignature=TemplateSignatureCS? ("extends"
 		//ownedSuperTypes+=TypedRefCS ("," ownedSuperTypes+=TypedRefCS)*)? (":" instanceClassName=SINGLE_QUOTED_STRING)? ("{"
@@ -2908,8 +2882,7 @@
 		
 		//StructuralFeatureCS returns base::StructuralFeatureCS:
 		//	AttributeCS | ReferenceCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//AttributeCS | ReferenceCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -2941,8 +2914,7 @@
 		
 		//SysMLCS:
 		//	{SysMLCS} "sysml" (ownedDetails+=DetailCS ";" | "{" (ownedDetails+=DetailCS ";")* "}");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{SysMLCS} "sysml" (ownedDetails+=DetailCS ";" | "{" (ownedDetails+=DetailCS ";")* "}")
 		public Group getGroup() { return cGroup; }
@@ -2998,8 +2970,7 @@
 		
 		//TypeIdentifier:
 		//	UnrestrictedName | PrimitiveTypeIdentifier;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//UnrestrictedName | PrimitiveTypeIdentifier
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -3020,8 +2991,7 @@
 		
 		//TypedMultiplicityRefCS returns base::TypedRefCS:
 		//	TypedRefCS ownedMultiplicity=MultiplicityCS?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//TypedRefCS ownedMultiplicity=MultiplicityCS?
 		public Group getGroup() { return cGroup; }
@@ -3067,8 +3037,7 @@
 		//	"(" ownedSubstitutions+=TemplateParameterSubstitutionCS ("," ownedSubstitutions+=TemplateParameterSubstitutionCS)*
 		//	")" | "<" ownedSubstitutions+=TemplateParameterSubstitutionCS (","
 		//	ownedSubstitutions+=TemplateParameterSubstitutionCS)* ">";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"(" ownedSubstitutions+=TemplateParameterSubstitutionCS ("," ownedSubstitutions+=TemplateParameterSubstitutionCS)* ")" |
 		//"<" ownedSubstitutions+=TemplateParameterSubstitutionCS ("," ownedSubstitutions+=TemplateParameterSubstitutionCS)* ">"
@@ -3154,8 +3123,7 @@
 		//TemplateSignatureCS returns base::TemplateSignatureCS:
 		//	"(" ownedParameters+=TypeParameterCS ("," ownedParameters+=TypeParameterCS)* ")" | "<"
 		//	ownedParameters+=TypeParameterCS ("," ownedParameters+=TypeParameterCS)* ">";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"(" ownedParameters+=TypeParameterCS ("," ownedParameters+=TypeParameterCS)* ")" | "<" ownedParameters+=TypeParameterCS
 		//("," ownedParameters+=TypeParameterCS)* ">"
@@ -3224,8 +3192,7 @@
 		
 		//TypedRefCS returns base::TypedRefCS:
 		//	TypeLiteralCS | TypedTypeRefCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//TypeLiteralCS | TypedTypeRefCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -3250,8 +3217,7 @@
 		
 		//UnrestrictedName returns ecore::EString:
 		//	EnumerationLiteralName | "annotation" | "documentation" | "invariant" | "literal" | "serializable" | "sysml";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//EnumerationLiteralName | "annotation" | "documentation" | "invariant" | "literal" | "serializable" | "sysml"
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -3377,7 +3343,6 @@
 		return grammar;
 	}
 	
-	
 	@Override
 	public Grammar getGrammar() {
 		return grammar;
diff --git a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/validation/AbstractOCLinEcoreJavaValidator.java b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/validation/AbstractOCLinEcoreJavaValidator.java
index 3b2a436..a27c433 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/validation/AbstractOCLinEcoreJavaValidator.java
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore/src-gen/org/eclipse/ocl/xtext/oclinecore/validation/AbstractOCLinEcoreJavaValidator.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclinecore.validation;
  
 import java.util.ArrayList;
diff --git a/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/AbstractOCLstdlibUiModule.java b/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/AbstractOCLstdlibUiModule.java
index 208db2c..a1f76b9 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/AbstractOCLstdlibUiModule.java
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/AbstractOCLstdlibUiModule.java
@@ -4,14 +4,13 @@
  */
 package org.eclipse.ocl.xtext.oclstdlib.ui;
 
-import org.eclipse.xtext.ui.DefaultUiModule;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
  * Manual modifications go to {org.eclipse.ocl.xtext.oclstdlib.ui.OCLstdlibUiModule}
  */
 @SuppressWarnings("all")
-public abstract class AbstractOCLstdlibUiModule extends DefaultUiModule {
+public abstract class AbstractOCLstdlibUiModule extends org.eclipse.xtext.ui.DefaultUiModule {
 	
 	public AbstractOCLstdlibUiModule(AbstractUIPlugin plugin) {
 		super(plugin);
diff --git a/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/AbstractOCLstdlibProposalProvider.java b/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/AbstractOCLstdlibProposalProvider.java
index ff09c8a..1b31b05 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/AbstractOCLstdlibProposalProvider.java
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/AbstractOCLstdlibProposalProvider.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclstdlib.ui.contentassist;
 
 import org.eclipse.emf.ecore.EObject;
diff --git a/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/antlr/OCLstdlibParser.java b/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/antlr/OCLstdlibParser.java
index 9fa0269..842d556 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/antlr/OCLstdlibParser.java
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/antlr/OCLstdlibParser.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclstdlib.ui.contentassist.antlr;
 
 import java.util.Collection;
diff --git a/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/antlr/internal/InternalOCLstdlib.g b/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/antlr/internal/InternalOCLstdlib.g
index 552a029..469f1a2 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/antlr/internal/InternalOCLstdlib.g
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/antlr/internal/InternalOCLstdlib.g
@@ -1,23014 +1,23014 @@
-/*

-* generated by Xtext

-*/

-grammar InternalOCLstdlib;

-

-options {

-	superClass=AbstractInternalContentAssistParser;

-	backtrack=true;

-	

-}

-

-@lexer::header {

-package org.eclipse.ocl.xtext.oclstdlib.ui.contentassist.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.ui.editor.contentassist.antlr.internal.Lexer;

-}

-

-@parser::header {

-package org.eclipse.ocl.xtext.oclstdlib.ui.contentassist.antlr.internal; 

-

-import java.io.InputStream;

-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.XtextTokenStream;

-import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;

-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;

-import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;

-import org.eclipse.ocl.xtext.oclstdlib.services.OCLstdlibGrammarAccess;

-

-}

-

-@parser::members {

- 

- 	private OCLstdlibGrammarAccess grammarAccess;

- 	

-    public void setGrammarAccess(OCLstdlibGrammarAccess grammarAccess) {

-    	this.grammarAccess = grammarAccess;

-    }

-    

-    @Override

-    protected Grammar getGrammar() {

-    	return grammarAccess.getGrammar();

-    }

-    

-    @Override

-    protected String getValueForTokenName(String tokenName) {

-    	return tokenName;

-    }

-

-}

-

-

-

-

-// Entry rule entryRuleLibrary

-entryRuleLibrary 

-:

-{ before(grammarAccess.getLibraryRule()); }

-	 ruleLibrary

-{ after(grammarAccess.getLibraryRule()); } 

-	 EOF 

-;

-

-// Rule Library

-ruleLibrary

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLibraryAccess().getGroup()); }

-(rule__Library__Group__0)

-{ after(grammarAccess.getLibraryAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleIdentifier

-entryRuleIdentifier 

-:

-{ before(grammarAccess.getIdentifierRule()); }

-	 ruleIdentifier

-{ after(grammarAccess.getIdentifierRule()); } 

-	 EOF 

-;

-

-// Rule Identifier

-ruleIdentifier

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIdentifierAccess().getAlternatives()); }

-(rule__Identifier__Alternatives)

-{ after(grammarAccess.getIdentifierAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleRestrictedKeywords

-entryRuleRestrictedKeywords 

-:

-{ before(grammarAccess.getRestrictedKeywordsRule()); }

-	 ruleRestrictedKeywords

-{ after(grammarAccess.getRestrictedKeywordsRule()); } 

-	 EOF 

-;

-

-// Rule RestrictedKeywords

-ruleRestrictedKeywords

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getAlternatives()); }

-(rule__RestrictedKeywords__Alternatives)

-{ after(grammarAccess.getRestrictedKeywordsAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleName

-entryRuleName 

-:

-{ before(grammarAccess.getNameRule()); }

-	 ruleName

-{ after(grammarAccess.getNameRule()); } 

-	 EOF 

-;

-

-// Rule Name

-ruleName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNameAccess().getAlternatives()); }

-(rule__Name__Alternatives)

-{ after(grammarAccess.getNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleAnyName

-entryRuleAnyName 

-:

-{ before(grammarAccess.getAnyNameRule()); }

-	 ruleAnyName

-{ after(grammarAccess.getAnyNameRule()); } 

-	 EOF 

-;

-

-// Rule AnyName

-ruleAnyName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getAnyNameAccess().getAlternatives()); }

-(rule__AnyName__Alternatives)

-{ after(grammarAccess.getAnyNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLibPathNameCS

-entryRuleLibPathNameCS 

-:

-{ before(grammarAccess.getLibPathNameCSRule()); }

-	 ruleLibPathNameCS

-{ after(grammarAccess.getLibPathNameCSRule()); } 

-	 EOF 

-;

-

-// Rule LibPathNameCS

-ruleLibPathNameCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLibPathNameCSAccess().getGroup()); }

-(rule__LibPathNameCS__Group__0)

-{ after(grammarAccess.getLibPathNameCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLibPathElementCS

-entryRuleLibPathElementCS 

-:

-{ before(grammarAccess.getLibPathElementCSRule()); }

-	 ruleLibPathElementCS

-{ after(grammarAccess.getLibPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule LibPathElementCS

-ruleLibPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLibPathElementCSAccess().getReferredElementAssignment()); }

-(rule__LibPathElementCS__ReferredElementAssignment)

-{ after(grammarAccess.getLibPathElementCSAccess().getReferredElementAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleAccumulatorCS

-entryRuleAccumulatorCS 

-:

-{ before(grammarAccess.getAccumulatorCSRule()); }

-	 ruleAccumulatorCS

-{ after(grammarAccess.getAccumulatorCSRule()); } 

-	 EOF 

-;

-

-// Rule AccumulatorCS

-ruleAccumulatorCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getAccumulatorCSAccess().getGroup()); }

-(rule__AccumulatorCS__Group__0)

-{ after(grammarAccess.getAccumulatorCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleAnnotationCS

-entryRuleAnnotationCS 

-:

-{ before(grammarAccess.getAnnotationCSRule()); }

-	 ruleAnnotationCS

-{ after(grammarAccess.getAnnotationCSRule()); } 

-	 EOF 

-;

-

-// Rule AnnotationCS

-ruleAnnotationCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getGroup()); }

-(rule__AnnotationCS__Group__0)

-{ after(grammarAccess.getAnnotationCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleAnnotationElementCS

-entryRuleAnnotationElementCS 

-:

-{ before(grammarAccess.getAnnotationElementCSRule()); }

-	 ruleAnnotationElementCS

-{ after(grammarAccess.getAnnotationElementCSRule()); } 

-	 EOF 

-;

-

-// Rule AnnotationElementCS

-ruleAnnotationElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getAnnotationElementCSAccess().getAlternatives()); }

-(rule__AnnotationElementCS__Alternatives)

-{ after(grammarAccess.getAnnotationElementCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLibClassCS

-entryRuleLibClassCS 

-:

-{ before(grammarAccess.getLibClassCSRule()); }

-	 ruleLibClassCS

-{ after(grammarAccess.getLibClassCSRule()); } 

-	 EOF 

-;

-

-// Rule LibClassCS

-ruleLibClassCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLibClassCSAccess().getGroup()); }

-(rule__LibClassCS__Group__0)

-{ after(grammarAccess.getLibClassCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleClassCS

-entryRuleClassCS 

-:

-{ before(grammarAccess.getClassCSRule()); }

-	 ruleClassCS

-{ after(grammarAccess.getClassCSRule()); } 

-	 EOF 

-;

-

-// Rule ClassCS

-ruleClassCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getClassCSAccess().getLibClassCSParserRuleCall()); }

-	ruleLibClassCS

-{ after(grammarAccess.getClassCSAccess().getLibClassCSParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleDetailCS

-entryRuleDetailCS 

-:

-{ before(grammarAccess.getDetailCSRule()); }

-	 ruleDetailCS

-{ after(grammarAccess.getDetailCSRule()); } 

-	 EOF 

-;

-

-// Rule DetailCS

-ruleDetailCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getDetailCSAccess().getGroup()); }

-(rule__DetailCS__Group__0)

-{ after(grammarAccess.getDetailCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleDocumentationCS

-entryRuleDocumentationCS 

-:

-{ before(grammarAccess.getDocumentationCSRule()); }

-	 ruleDocumentationCS

-{ after(grammarAccess.getDocumentationCSRule()); } 

-	 EOF 

-;

-

-// Rule DocumentationCS

-ruleDocumentationCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getGroup()); }

-(rule__DocumentationCS__Group__0)

-{ after(grammarAccess.getDocumentationCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleInvCS

-entryRuleInvCS 

-:

-{ before(grammarAccess.getInvCSRule()); }

-	 ruleInvCS

-{ after(grammarAccess.getInvCSRule()); } 

-	 EOF 

-;

-

-// Rule InvCS

-ruleInvCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getInvCSAccess().getGroup()); }

-(rule__InvCS__Group__0)

-{ after(grammarAccess.getInvCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLibCoercionCS

-entryRuleLibCoercionCS 

-:

-{ before(grammarAccess.getLibCoercionCSRule()); }

-	 ruleLibCoercionCS

-{ after(grammarAccess.getLibCoercionCSRule()); } 

-	 EOF 

-;

-

-// Rule LibCoercionCS

-ruleLibCoercionCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getGroup()); }

-(rule__LibCoercionCS__Group__0)

-{ after(grammarAccess.getLibCoercionCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLibIterationCS

-entryRuleLibIterationCS 

-:

-{ before(grammarAccess.getLibIterationCSRule()); }

-	 ruleLibIterationCS

-{ after(grammarAccess.getLibIterationCSRule()); } 

-	 EOF 

-;

-

-// Rule LibIterationCS

-ruleLibIterationCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getGroup()); }

-(rule__LibIterationCS__Group__0)

-{ after(grammarAccess.getLibIterationCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleIteratorCS

-entryRuleIteratorCS 

-:

-{ before(grammarAccess.getIteratorCSRule()); }

-	 ruleIteratorCS

-{ after(grammarAccess.getIteratorCSRule()); } 

-	 EOF 

-;

-

-// Rule IteratorCS

-ruleIteratorCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIteratorCSAccess().getGroup()); }

-(rule__IteratorCS__Group__0)

-{ after(grammarAccess.getIteratorCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLambdaTypeCS

-entryRuleLambdaTypeCS 

-:

-{ before(grammarAccess.getLambdaTypeCSRule()); }

-	 ruleLambdaTypeCS

-{ after(grammarAccess.getLambdaTypeCSRule()); } 

-	 EOF 

-;

-

-// Rule LambdaTypeCS

-ruleLambdaTypeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getGroup()); }

-(rule__LambdaTypeCS__Group__0)

-{ after(grammarAccess.getLambdaTypeCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLambdaContextTypeRefCS

-entryRuleLambdaContextTypeRefCS 

-:

-{ before(grammarAccess.getLambdaContextTypeRefCSRule()); }

-	 ruleLambdaContextTypeRefCS

-{ after(grammarAccess.getLambdaContextTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule LambdaContextTypeRefCS

-ruleLambdaContextTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLambdaContextTypeRefCSAccess().getOwnedPathNameAssignment()); }

-(rule__LambdaContextTypeRefCS__OwnedPathNameAssignment)

-{ after(grammarAccess.getLambdaContextTypeRefCSAccess().getOwnedPathNameAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLibraryCS

-entryRuleLibraryCS 

-:

-{ before(grammarAccess.getLibraryCSRule()); }

-	 ruleLibraryCS

-{ after(grammarAccess.getLibraryCSRule()); } 

-	 EOF 

-;

-

-// Rule LibraryCS

-ruleLibraryCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLibraryCSAccess().getGroup()); }

-(rule__LibraryCS__Group__0)

-{ after(grammarAccess.getLibraryCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleOperationCS

-entryRuleOperationCS 

-:

-{ before(grammarAccess.getOperationCSRule()); }

-	 ruleOperationCS

-{ after(grammarAccess.getOperationCSRule()); } 

-	 EOF 

-;

-

-// Rule OperationCS

-ruleOperationCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getOperationCSAccess().getAlternatives()); }

-(rule__OperationCS__Alternatives)

-{ after(grammarAccess.getOperationCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLibOperationCS

-entryRuleLibOperationCS 

-:

-{ before(grammarAccess.getLibOperationCSRule()); }

-	 ruleLibOperationCS

-{ after(grammarAccess.getLibOperationCSRule()); } 

-	 EOF 

-;

-

-// Rule LibOperationCS

-ruleLibOperationCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getGroup()); }

-(rule__LibOperationCS__Group__0)

-{ after(grammarAccess.getLibOperationCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLibPackageCS

-entryRuleLibPackageCS 

-:

-{ before(grammarAccess.getLibPackageCSRule()); }

-	 ruleLibPackageCS

-{ after(grammarAccess.getLibPackageCSRule()); } 

-	 EOF 

-;

-

-// Rule LibPackageCS

-ruleLibPackageCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getGroup()); }

-(rule__LibPackageCS__Group__0)

-{ after(grammarAccess.getLibPackageCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePackageCS

-entryRulePackageCS 

-:

-{ before(grammarAccess.getPackageCSRule()); }

-	 rulePackageCS

-{ after(grammarAccess.getPackageCSRule()); } 

-	 EOF 

-;

-

-// Rule PackageCS

-rulePackageCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPackageCSAccess().getGroup()); }

-(rule__PackageCS__Group__0)

-{ after(grammarAccess.getPackageCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleParameterCS

-entryRuleParameterCS 

-:

-{ before(grammarAccess.getParameterCSRule()); }

-	 ruleParameterCS

-{ after(grammarAccess.getParameterCSRule()); } 

-	 EOF 

-;

-

-// Rule ParameterCS

-ruleParameterCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getParameterCSAccess().getGroup()); }

-(rule__ParameterCS__Group__0)

-{ after(grammarAccess.getParameterCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLibPropertyCS

-entryRuleLibPropertyCS 

-:

-{ before(grammarAccess.getLibPropertyCSRule()); }

-	 ruleLibPropertyCS

-{ after(grammarAccess.getLibPropertyCSRule()); } 

-	 EOF 

-;

-

-// Rule LibPropertyCS

-ruleLibPropertyCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getGroup()); }

-(rule__LibPropertyCS__Group__0)

-{ after(grammarAccess.getLibPropertyCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePostCS

-entryRulePostCS 

-:

-{ before(grammarAccess.getPostCSRule()); }

-	 rulePostCS

-{ after(grammarAccess.getPostCSRule()); } 

-	 EOF 

-;

-

-// Rule PostCS

-rulePostCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPostCSAccess().getGroup()); }

-(rule__PostCS__Group__0)

-{ after(grammarAccess.getPostCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePreCS

-entryRulePreCS 

-:

-{ before(grammarAccess.getPreCSRule()); }

-	 rulePreCS

-{ after(grammarAccess.getPreCSRule()); } 

-	 EOF 

-;

-

-// Rule PreCS

-rulePreCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPreCSAccess().getGroup()); }

-(rule__PreCS__Group__0)

-{ after(grammarAccess.getPreCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrecedenceCS

-entryRulePrecedenceCS 

-:

-{ before(grammarAccess.getPrecedenceCSRule()); }

-	 rulePrecedenceCS

-{ after(grammarAccess.getPrecedenceCSRule()); } 

-	 EOF 

-;

-

-// Rule PrecedenceCS

-rulePrecedenceCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrecedenceCSAccess().getGroup()); }

-(rule__PrecedenceCS__Group__0)

-{ after(grammarAccess.getPrecedenceCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleSpecificationCS

-entryRuleSpecificationCS 

-:

-{ before(grammarAccess.getSpecificationCSRule()); }

-	 ruleSpecificationCS

-{ after(grammarAccess.getSpecificationCSRule()); } 

-	 EOF 

-;

-

-// Rule SpecificationCS

-ruleSpecificationCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getSpecificationCSAccess().getOwnedExpressionAssignment()); }

-(rule__SpecificationCS__OwnedExpressionAssignment)

-{ after(grammarAccess.getSpecificationCSAccess().getOwnedExpressionAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypedMultiplicityRefCS

-entryRuleTypedMultiplicityRefCS 

-:

-{ before(grammarAccess.getTypedMultiplicityRefCSRule()); }

-	 ruleTypedMultiplicityRefCS

-{ after(grammarAccess.getTypedMultiplicityRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypedMultiplicityRefCS

-ruleTypedMultiplicityRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getGroup()); }

-(rule__TypedMultiplicityRefCS__Group__0)

-{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypedRefCS

-entryRuleTypedRefCS 

-:

-{ before(grammarAccess.getTypedRefCSRule()); }

-	 ruleTypedRefCS

-{ after(grammarAccess.getTypedRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypedRefCS

-ruleTypedRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypedRefCSAccess().getAlternatives()); }

-(rule__TypedRefCS__Alternatives)

-{ after(grammarAccess.getTypedRefCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypedTypeRefCS

-entryRuleTypedTypeRefCS 

-:

-{ before(grammarAccess.getTypedTypeRefCSRule()); }

-	 ruleTypedTypeRefCS

-{ after(grammarAccess.getTypedTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypedTypeRefCS

-ruleTypedTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getAlternatives()); }

-(rule__TypedTypeRefCS__Alternatives)

-{ after(grammarAccess.getTypedTypeRefCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTuplePartCS

-entryRuleTuplePartCS 

-:

-{ before(grammarAccess.getTuplePartCSRule()); }

-	 ruleTuplePartCS

-{ after(grammarAccess.getTuplePartCSRule()); } 

-	 EOF 

-;

-

-// Rule TuplePartCS

-ruleTuplePartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getGroup()); }

-(rule__TuplePartCS__Group__0)

-{ after(grammarAccess.getTuplePartCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLReservedKeyword

-entryRuleEssentialOCLReservedKeyword 

-:

-{ before(grammarAccess.getEssentialOCLReservedKeywordRule()); }

-	 ruleEssentialOCLReservedKeyword

-{ after(grammarAccess.getEssentialOCLReservedKeywordRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLReservedKeyword

-ruleEssentialOCLReservedKeyword

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getAlternatives()); }

-(rule__EssentialOCLReservedKeyword__Alternatives)

-{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLUnaryOperatorName

-entryRuleEssentialOCLUnaryOperatorName 

-:

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); }

-	 ruleEssentialOCLUnaryOperatorName

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLUnaryOperatorName

-ruleEssentialOCLUnaryOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }

-(rule__EssentialOCLUnaryOperatorName__Alternatives)

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLInfixOperatorName

-entryRuleEssentialOCLInfixOperatorName 

-:

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameRule()); }

-	 ruleEssentialOCLInfixOperatorName

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLInfixOperatorName

-ruleEssentialOCLInfixOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }

-(rule__EssentialOCLInfixOperatorName__Alternatives)

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLNavigationOperatorName

-entryRuleEssentialOCLNavigationOperatorName 

-:

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); }

-	 ruleEssentialOCLNavigationOperatorName

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLNavigationOperatorName

-ruleEssentialOCLNavigationOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }

-(rule__EssentialOCLNavigationOperatorName__Alternatives)

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleBinaryOperatorName

-entryRuleBinaryOperatorName 

-:

-{ before(grammarAccess.getBinaryOperatorNameRule()); }

-	 ruleBinaryOperatorName

-{ after(grammarAccess.getBinaryOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule BinaryOperatorName

-ruleBinaryOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }

-(rule__BinaryOperatorName__Alternatives)

-{ after(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleInfixOperatorName

-entryRuleInfixOperatorName 

-:

-{ before(grammarAccess.getInfixOperatorNameRule()); }

-	 ruleInfixOperatorName

-{ after(grammarAccess.getInfixOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule InfixOperatorName

-ruleInfixOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }

-	ruleEssentialOCLInfixOperatorName

-{ after(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigationOperatorName

-entryRuleNavigationOperatorName 

-:

-{ before(grammarAccess.getNavigationOperatorNameRule()); }

-	 ruleNavigationOperatorName

-{ after(grammarAccess.getNavigationOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule NavigationOperatorName

-ruleNavigationOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); }

-	ruleEssentialOCLNavigationOperatorName

-{ after(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnaryOperatorName

-entryRuleUnaryOperatorName 

-:

-{ before(grammarAccess.getUnaryOperatorNameRule()); }

-	 ruleUnaryOperatorName

-{ after(grammarAccess.getUnaryOperatorNameRule()); } 

-	 EOF 

-;

-

-// Rule UnaryOperatorName

-ruleUnaryOperatorName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }

-	ruleEssentialOCLUnaryOperatorName

-{ after(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLUnrestrictedName

-entryRuleEssentialOCLUnrestrictedName 

-:

-{ before(grammarAccess.getEssentialOCLUnrestrictedNameRule()); }

-	 ruleEssentialOCLUnrestrictedName

-{ after(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLUnrestrictedName

-ruleEssentialOCLUnrestrictedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }

-	ruleIdentifier

-{ after(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnrestrictedName

-entryRuleUnrestrictedName 

-:

-{ before(grammarAccess.getUnrestrictedNameRule()); }

-	 ruleUnrestrictedName

-{ after(grammarAccess.getUnrestrictedNameRule()); } 

-	 EOF 

-;

-

-// Rule UnrestrictedName

-ruleUnrestrictedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall()); }

-	ruleEssentialOCLUnrestrictedName

-{ after(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleEssentialOCLUnreservedName

-entryRuleEssentialOCLUnreservedName 

-:

-{ before(grammarAccess.getEssentialOCLUnreservedNameRule()); }

-	 ruleEssentialOCLUnreservedName

-{ after(grammarAccess.getEssentialOCLUnreservedNameRule()); } 

-	 EOF 

-;

-

-// Rule EssentialOCLUnreservedName

-ruleEssentialOCLUnreservedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }

-(rule__EssentialOCLUnreservedName__Alternatives)

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnreservedName

-entryRuleUnreservedName 

-:

-{ before(grammarAccess.getUnreservedNameRule()); }

-	 ruleUnreservedName

-{ after(grammarAccess.getUnreservedNameRule()); } 

-	 EOF 

-;

-

-// Rule UnreservedName

-ruleUnreservedName

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }

-	ruleEssentialOCLUnreservedName

-{ after(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-// Entry rule entryRuleURIFirstPathElementCS

-entryRuleURIFirstPathElementCS 

-:

-{ before(grammarAccess.getURIFirstPathElementCSRule()); }

-	 ruleURIFirstPathElementCS

-{ after(grammarAccess.getURIFirstPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule URIFirstPathElementCS

-ruleURIFirstPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }

-(rule__URIFirstPathElementCS__Alternatives)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimitiveTypeIdentifier

-entryRulePrimitiveTypeIdentifier 

-:

-{ before(grammarAccess.getPrimitiveTypeIdentifierRule()); }

-	 rulePrimitiveTypeIdentifier

-{ after(grammarAccess.getPrimitiveTypeIdentifierRule()); } 

-	 EOF 

-;

-

-// Rule PrimitiveTypeIdentifier

-rulePrimitiveTypeIdentifier

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }

-(rule__PrimitiveTypeIdentifier__Alternatives)

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimitiveTypeCS

-entryRulePrimitiveTypeCS 

-:

-{ before(grammarAccess.getPrimitiveTypeCSRule()); }

-	 rulePrimitiveTypeCS

-{ after(grammarAccess.getPrimitiveTypeCSRule()); } 

-	 EOF 

-;

-

-// Rule PrimitiveTypeCS

-rulePrimitiveTypeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }

-(rule__PrimitiveTypeCS__NameAssignment)

-{ after(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionTypeIdentifier

-entryRuleCollectionTypeIdentifier 

-:

-{ before(grammarAccess.getCollectionTypeIdentifierRule()); }

-	 ruleCollectionTypeIdentifier

-{ after(grammarAccess.getCollectionTypeIdentifierRule()); } 

-	 EOF 

-;

-

-// Rule CollectionTypeIdentifier

-ruleCollectionTypeIdentifier

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }

-(rule__CollectionTypeIdentifier__Alternatives)

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionTypeCS

-entryRuleCollectionTypeCS 

-:

-{ before(grammarAccess.getCollectionTypeCSRule()); }

-	 ruleCollectionTypeCS

-{ after(grammarAccess.getCollectionTypeCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionTypeCS

-ruleCollectionTypeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getGroup()); }

-(rule__CollectionTypeCS__Group__0)

-{ after(grammarAccess.getCollectionTypeCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTupleTypeCS

-entryRuleTupleTypeCS 

-:

-{ before(grammarAccess.getTupleTypeCSRule()); }

-	 ruleTupleTypeCS

-{ after(grammarAccess.getTupleTypeCSRule()); } 

-	 EOF 

-;

-

-// Rule TupleTypeCS

-ruleTupleTypeCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup()); }

-(rule__TupleTypeCS__Group__0)

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionLiteralExpCS

-entryRuleCollectionLiteralExpCS 

-:

-{ before(grammarAccess.getCollectionLiteralExpCSRule()); }

-	 ruleCollectionLiteralExpCS

-{ after(grammarAccess.getCollectionLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionLiteralExpCS

-ruleCollectionLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }

-(rule__CollectionLiteralExpCS__Group__0)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionLiteralPartCS

-entryRuleCollectionLiteralPartCS 

-:

-{ before(grammarAccess.getCollectionLiteralPartCSRule()); }

-	 ruleCollectionLiteralPartCS

-{ after(grammarAccess.getCollectionLiteralPartCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionLiteralPartCS

-ruleCollectionLiteralPartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }

-(rule__CollectionLiteralPartCS__Alternatives)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCollectionPatternCS

-entryRuleCollectionPatternCS 

-:

-{ before(grammarAccess.getCollectionPatternCSRule()); }

-	 ruleCollectionPatternCS

-{ after(grammarAccess.getCollectionPatternCSRule()); } 

-	 EOF 

-;

-

-// Rule CollectionPatternCS

-ruleCollectionPatternCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup()); }

-(rule__CollectionPatternCS__Group__0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleConstructorPartCS

-entryRuleConstructorPartCS 

-:

-{ before(grammarAccess.getConstructorPartCSRule()); }

-	 ruleConstructorPartCS

-{ after(grammarAccess.getConstructorPartCSRule()); } 

-	 EOF 

-;

-

-// Rule ConstructorPartCS

-ruleConstructorPartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getGroup()); }

-(rule__ConstructorPartCS__Group__0)

-{ after(grammarAccess.getConstructorPartCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePatternExpCS

-entryRulePatternExpCS 

-:

-{ before(grammarAccess.getPatternExpCSRule()); }

-	 rulePatternExpCS

-{ after(grammarAccess.getPatternExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PatternExpCS

-rulePatternExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getGroup()); }

-(rule__PatternExpCS__Group__0)

-{ after(grammarAccess.getPatternExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLambdaLiteralExpCS

-entryRuleLambdaLiteralExpCS 

-:

-{ before(grammarAccess.getLambdaLiteralExpCSRule()); }

-	 ruleLambdaLiteralExpCS

-{ after(grammarAccess.getLambdaLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule LambdaLiteralExpCS

-ruleLambdaLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }

-(rule__LambdaLiteralExpCS__Group__0)

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimitiveLiteralExpCS

-entryRulePrimitiveLiteralExpCS 

-:

-{ before(grammarAccess.getPrimitiveLiteralExpCSRule()); }

-	 rulePrimitiveLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrimitiveLiteralExpCS

-rulePrimitiveLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }

-(rule__PrimitiveLiteralExpCS__Alternatives)

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTupleLiteralExpCS

-entryRuleTupleLiteralExpCS 

-:

-{ before(grammarAccess.getTupleLiteralExpCSRule()); }

-	 ruleTupleLiteralExpCS

-{ after(grammarAccess.getTupleLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TupleLiteralExpCS

-ruleTupleLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }

-(rule__TupleLiteralExpCS__Group__0)

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTupleLiteralPartCS

-entryRuleTupleLiteralPartCS 

-:

-{ before(grammarAccess.getTupleLiteralPartCSRule()); }

-	 ruleTupleLiteralPartCS

-{ after(grammarAccess.getTupleLiteralPartCSRule()); } 

-	 EOF 

-;

-

-// Rule TupleLiteralPartCS

-ruleTupleLiteralPartCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }

-(rule__TupleLiteralPartCS__Group__0)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNumberLiteralExpCS

-entryRuleNumberLiteralExpCS 

-:

-{ before(grammarAccess.getNumberLiteralExpCSRule()); }

-	 ruleNumberLiteralExpCS

-{ after(grammarAccess.getNumberLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NumberLiteralExpCS

-ruleNumberLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }

-(rule__NumberLiteralExpCS__SymbolAssignment)

-{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleStringLiteralExpCS

-entryRuleStringLiteralExpCS 

-:

-{ before(grammarAccess.getStringLiteralExpCSRule()); }

-	 ruleStringLiteralExpCS

-{ after(grammarAccess.getStringLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule StringLiteralExpCS

-ruleStringLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-(

-{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-(rule__StringLiteralExpCS__SegmentsAssignment)

-{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-)

-(

-{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-(rule__StringLiteralExpCS__SegmentsAssignment)*

-{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }

-)

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleBooleanLiteralExpCS

-entryRuleBooleanLiteralExpCS 

-:

-{ before(grammarAccess.getBooleanLiteralExpCSRule()); }

-	 ruleBooleanLiteralExpCS

-{ after(grammarAccess.getBooleanLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule BooleanLiteralExpCS

-ruleBooleanLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }

-(rule__BooleanLiteralExpCS__Alternatives)

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUnlimitedNaturalLiteralExpCS

-entryRuleUnlimitedNaturalLiteralExpCS 

-:

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }

-	 ruleUnlimitedNaturalLiteralExpCS

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule UnlimitedNaturalLiteralExpCS

-ruleUnlimitedNaturalLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }

-(rule__UnlimitedNaturalLiteralExpCS__Group__0)

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleInvalidLiteralExpCS

-entryRuleInvalidLiteralExpCS 

-:

-{ before(grammarAccess.getInvalidLiteralExpCSRule()); }

-	 ruleInvalidLiteralExpCS

-{ after(grammarAccess.getInvalidLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule InvalidLiteralExpCS

-ruleInvalidLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }

-(rule__InvalidLiteralExpCS__Group__0)

-{ after(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNullLiteralExpCS

-entryRuleNullLiteralExpCS 

-:

-{ before(grammarAccess.getNullLiteralExpCSRule()); }

-	 ruleNullLiteralExpCS

-{ after(grammarAccess.getNullLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NullLiteralExpCS

-ruleNullLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }

-(rule__NullLiteralExpCS__Group__0)

-{ after(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeLiteralCS

-entryRuleTypeLiteralCS 

-:

-{ before(grammarAccess.getTypeLiteralCSRule()); }

-	 ruleTypeLiteralCS

-{ after(grammarAccess.getTypeLiteralCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeLiteralCS

-ruleTypeLiteralCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }

-(rule__TypeLiteralCS__Alternatives)

-{ after(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeLiteralWithMultiplicityCS

-entryRuleTypeLiteralWithMultiplicityCS 

-:

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }

-	 ruleTypeLiteralWithMultiplicityCS

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeLiteralWithMultiplicityCS

-ruleTypeLiteralWithMultiplicityCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }

-(rule__TypeLiteralWithMultiplicityCS__Group__0)

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeLiteralExpCS

-entryRuleTypeLiteralExpCS 

-:

-{ before(grammarAccess.getTypeLiteralExpCSRule()); }

-	 ruleTypeLiteralExpCS

-{ after(grammarAccess.getTypeLiteralExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeLiteralExpCS

-ruleTypeLiteralExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }

-(rule__TypeLiteralExpCS__OwnedTypeAssignment)

-{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeNameExpCS

-entryRuleTypeNameExpCS 

-:

-{ before(grammarAccess.getTypeNameExpCSRule()); }

-	 ruleTypeNameExpCS

-{ after(grammarAccess.getTypeNameExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeNameExpCS

-ruleTypeNameExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getGroup()); }

-(rule__TypeNameExpCS__Group__0)

-{ after(grammarAccess.getTypeNameExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeExpCS

-entryRuleTypeExpCS 

-:

-{ before(grammarAccess.getTypeExpCSRule()); }

-	 ruleTypeExpCS

-{ after(grammarAccess.getTypeExpCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeExpCS

-ruleTypeExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getGroup()); }

-(rule__TypeExpCS__Group__0)

-{ after(grammarAccess.getTypeExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleExpCS

-entryRuleExpCS 

-:

-{ before(grammarAccess.getExpCSRule()); }

-	 ruleExpCS

-{ after(grammarAccess.getExpCSRule()); } 

-	 EOF 

-;

-

-// Rule ExpCS

-ruleExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getExpCSAccess().getAlternatives()); }

-(rule__ExpCS__Alternatives)

-{ after(grammarAccess.getExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrefixedLetExpCS

-entryRulePrefixedLetExpCS 

-:

-{ before(grammarAccess.getPrefixedLetExpCSRule()); }

-	 rulePrefixedLetExpCS

-{ after(grammarAccess.getPrefixedLetExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrefixedLetExpCS

-rulePrefixedLetExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }

-(rule__PrefixedLetExpCS__Alternatives)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrefixedPrimaryExpCS

-entryRulePrefixedPrimaryExpCS 

-:

-{ before(grammarAccess.getPrefixedPrimaryExpCSRule()); }

-	 rulePrefixedPrimaryExpCS

-{ after(grammarAccess.getPrefixedPrimaryExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrefixedPrimaryExpCS

-rulePrefixedPrimaryExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }

-(rule__PrefixedPrimaryExpCS__Alternatives)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePrimaryExpCS

-entryRulePrimaryExpCS 

-:

-{ before(grammarAccess.getPrimaryExpCSRule()); }

-	 rulePrimaryExpCS

-{ after(grammarAccess.getPrimaryExpCSRule()); } 

-	 EOF 

-;

-

-// Rule PrimaryExpCS

-rulePrimaryExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }

-(rule__PrimaryExpCS__Alternatives)

-{ after(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNameExpCS

-entryRuleNameExpCS 

-:

-{ before(grammarAccess.getNameExpCSRule()); }

-	 ruleNameExpCS

-{ after(grammarAccess.getNameExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NameExpCS

-ruleNameExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNameExpCSAccess().getGroup()); }

-(rule__NameExpCS__Group__0)

-{ after(grammarAccess.getNameExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleCurlyBracketedClauseCS

-entryRuleCurlyBracketedClauseCS 

-:

-{ before(grammarAccess.getCurlyBracketedClauseCSRule()); }

-	 ruleCurlyBracketedClauseCS

-{ after(grammarAccess.getCurlyBracketedClauseCSRule()); } 

-	 EOF 

-;

-

-// Rule CurlyBracketedClauseCS

-ruleCurlyBracketedClauseCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }

-(rule__CurlyBracketedClauseCS__Group__0)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleRoundBracketedClauseCS

-entryRuleRoundBracketedClauseCS 

-:

-{ before(grammarAccess.getRoundBracketedClauseCSRule()); }

-	 ruleRoundBracketedClauseCS

-{ after(grammarAccess.getRoundBracketedClauseCSRule()); } 

-	 EOF 

-;

-

-// Rule RoundBracketedClauseCS

-ruleRoundBracketedClauseCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }

-(rule__RoundBracketedClauseCS__Group__0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleSquareBracketedClauseCS

-entryRuleSquareBracketedClauseCS 

-:

-{ before(grammarAccess.getSquareBracketedClauseCSRule()); }

-	 ruleSquareBracketedClauseCS

-{ after(grammarAccess.getSquareBracketedClauseCSRule()); } 

-	 EOF 

-;

-

-// Rule SquareBracketedClauseCS

-ruleSquareBracketedClauseCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }

-(rule__SquareBracketedClauseCS__Group__0)

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingArgCS

-entryRuleNavigatingArgCS 

-:

-{ before(grammarAccess.getNavigatingArgCSRule()); }

-	 ruleNavigatingArgCS

-{ after(grammarAccess.getNavigatingArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingArgCS

-ruleNavigatingArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }

-(rule__NavigatingArgCS__Alternatives)

-{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingBarArgCS

-entryRuleNavigatingBarArgCS 

-:

-{ before(grammarAccess.getNavigatingBarArgCSRule()); }

-	 ruleNavigatingBarArgCS

-{ after(grammarAccess.getNavigatingBarArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingBarArgCS

-ruleNavigatingBarArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }

-(rule__NavigatingBarArgCS__Group__0)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingCommaArgCS

-entryRuleNavigatingCommaArgCS 

-:

-{ before(grammarAccess.getNavigatingCommaArgCSRule()); }

-	 ruleNavigatingCommaArgCS

-{ after(grammarAccess.getNavigatingCommaArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingCommaArgCS

-ruleNavigatingCommaArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }

-(rule__NavigatingCommaArgCS__Group__0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingSemiArgCS

-entryRuleNavigatingSemiArgCS 

-:

-{ before(grammarAccess.getNavigatingSemiArgCSRule()); }

-	 ruleNavigatingSemiArgCS

-{ after(grammarAccess.getNavigatingSemiArgCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingSemiArgCS

-ruleNavigatingSemiArgCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }

-(rule__NavigatingSemiArgCS__Group__0)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNavigatingArgExpCS

-entryRuleNavigatingArgExpCS 

-:

-{ before(grammarAccess.getNavigatingArgExpCSRule()); }

-	 ruleNavigatingArgExpCS

-{ after(grammarAccess.getNavigatingArgExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NavigatingArgExpCS

-ruleNavigatingArgExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); }

-	ruleExpCS

-{ after(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleIfExpCS

-entryRuleIfExpCS 

-:

-{ before(grammarAccess.getIfExpCSRule()); }

-	 ruleIfExpCS

-{ after(grammarAccess.getIfExpCSRule()); } 

-	 EOF 

-;

-

-// Rule IfExpCS

-ruleIfExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIfExpCSAccess().getGroup()); }

-(rule__IfExpCS__Group__0)

-{ after(grammarAccess.getIfExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleElseIfThenExpCS

-entryRuleElseIfThenExpCS 

-:

-{ before(grammarAccess.getElseIfThenExpCSRule()); }

-	 ruleElseIfThenExpCS

-{ after(grammarAccess.getElseIfThenExpCSRule()); } 

-	 EOF 

-;

-

-// Rule ElseIfThenExpCS

-ruleElseIfThenExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }

-(rule__ElseIfThenExpCS__Group__0)

-{ after(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLetExpCS

-entryRuleLetExpCS 

-:

-{ before(grammarAccess.getLetExpCSRule()); }

-	 ruleLetExpCS

-{ after(grammarAccess.getLetExpCSRule()); } 

-	 EOF 

-;

-

-// Rule LetExpCS

-ruleLetExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLetExpCSAccess().getGroup()); }

-(rule__LetExpCS__Group__0)

-{ after(grammarAccess.getLetExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLetVariableCS

-entryRuleLetVariableCS 

-:

-{ before(grammarAccess.getLetVariableCSRule()); }

-	 ruleLetVariableCS

-{ after(grammarAccess.getLetVariableCSRule()); } 

-	 EOF 

-;

-

-// Rule LetVariableCS

-ruleLetVariableCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getGroup()); }

-(rule__LetVariableCS__Group__0)

-{ after(grammarAccess.getLetVariableCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNestedExpCS

-entryRuleNestedExpCS 

-:

-{ before(grammarAccess.getNestedExpCSRule()); }

-	 ruleNestedExpCS

-{ after(grammarAccess.getNestedExpCSRule()); } 

-	 EOF 

-;

-

-// Rule NestedExpCS

-ruleNestedExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getGroup()); }

-(rule__NestedExpCS__Group__0)

-{ after(grammarAccess.getNestedExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleSelfExpCS

-entryRuleSelfExpCS 

-:

-{ before(grammarAccess.getSelfExpCSRule()); }

-	 ruleSelfExpCS

-{ after(grammarAccess.getSelfExpCSRule()); } 

-	 EOF 

-;

-

-// Rule SelfExpCS

-ruleSelfExpCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getSelfExpCSAccess().getGroup()); }

-(rule__SelfExpCS__Group__0)

-{ after(grammarAccess.getSelfExpCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleMultiplicityBoundsCS

-entryRuleMultiplicityBoundsCS 

-:

-{ before(grammarAccess.getMultiplicityBoundsCSRule()); }

-	 ruleMultiplicityBoundsCS

-{ after(grammarAccess.getMultiplicityBoundsCSRule()); } 

-	 EOF 

-;

-

-// Rule MultiplicityBoundsCS

-ruleMultiplicityBoundsCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }

-(rule__MultiplicityBoundsCS__Group__0)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleMultiplicityCS

-entryRuleMultiplicityCS 

-:

-{ before(grammarAccess.getMultiplicityCSRule()); }

-	 ruleMultiplicityCS

-{ after(grammarAccess.getMultiplicityCSRule()); } 

-	 EOF 

-;

-

-// Rule MultiplicityCS

-ruleMultiplicityCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getGroup()); }

-(rule__MultiplicityCS__Group__0)

-{ after(grammarAccess.getMultiplicityCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleMultiplicityStringCS

-entryRuleMultiplicityStringCS 

-:

-{ before(grammarAccess.getMultiplicityStringCSRule()); }

-	 ruleMultiplicityStringCS

-{ after(grammarAccess.getMultiplicityStringCSRule()); } 

-	 EOF 

-;

-

-// Rule MultiplicityStringCS

-ruleMultiplicityStringCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }

-(rule__MultiplicityStringCS__StringBoundsAssignment)

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRulePathNameCS

-entryRulePathNameCS 

-:

-{ before(grammarAccess.getPathNameCSRule()); }

-	 rulePathNameCS

-{ after(grammarAccess.getPathNameCSRule()); } 

-	 EOF 

-;

-

-// Rule PathNameCS

-rulePathNameCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getPathNameCSAccess().getGroup()); }

-(rule__PathNameCS__Group__0)

-{ after(grammarAccess.getPathNameCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleFirstPathElementCS

-entryRuleFirstPathElementCS 

-:

-{ before(grammarAccess.getFirstPathElementCSRule()); }

-	 ruleFirstPathElementCS

-{ after(grammarAccess.getFirstPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule FirstPathElementCS

-ruleFirstPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }

-(rule__FirstPathElementCS__ReferredElementAssignment)

-{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNextPathElementCS

-entryRuleNextPathElementCS 

-:

-{ before(grammarAccess.getNextPathElementCSRule()); }

-	 ruleNextPathElementCS

-{ after(grammarAccess.getNextPathElementCSRule()); } 

-	 EOF 

-;

-

-// Rule NextPathElementCS

-ruleNextPathElementCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }

-(rule__NextPathElementCS__ReferredElementAssignment)

-{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTemplateBindingCS

-entryRuleTemplateBindingCS 

-:

-{ before(grammarAccess.getTemplateBindingCSRule()); }

-	 ruleTemplateBindingCS

-{ after(grammarAccess.getTemplateBindingCSRule()); } 

-	 EOF 

-;

-

-// Rule TemplateBindingCS

-ruleTemplateBindingCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getGroup()); }

-(rule__TemplateBindingCS__Group__0)

-{ after(grammarAccess.getTemplateBindingCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTemplateParameterSubstitutionCS

-entryRuleTemplateParameterSubstitutionCS 

-:

-{ before(grammarAccess.getTemplateParameterSubstitutionCSRule()); }

-	 ruleTemplateParameterSubstitutionCS

-{ after(grammarAccess.getTemplateParameterSubstitutionCSRule()); } 

-	 EOF 

-;

-

-// Rule TemplateParameterSubstitutionCS

-ruleTemplateParameterSubstitutionCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }

-(rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment)

-{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTemplateSignatureCS

-entryRuleTemplateSignatureCS 

-:

-{ before(grammarAccess.getTemplateSignatureCSRule()); }

-	 ruleTemplateSignatureCS

-{ after(grammarAccess.getTemplateSignatureCSRule()); } 

-	 EOF 

-;

-

-// Rule TemplateSignatureCS

-ruleTemplateSignatureCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup()); }

-(rule__TemplateSignatureCS__Group__0)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeParameterCS

-entryRuleTypeParameterCS 

-:

-{ before(grammarAccess.getTypeParameterCSRule()); }

-	 ruleTypeParameterCS

-{ after(grammarAccess.getTypeParameterCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeParameterCS

-ruleTypeParameterCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup()); }

-(rule__TypeParameterCS__Group__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleTypeRefCS

-entryRuleTypeRefCS 

-:

-{ before(grammarAccess.getTypeRefCSRule()); }

-	 ruleTypeRefCS

-{ after(grammarAccess.getTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule TypeRefCS

-ruleTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getTypeRefCSAccess().getAlternatives()); }

-(rule__TypeRefCS__Alternatives)

-{ after(grammarAccess.getTypeRefCSAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleWildcardTypeRefCS

-entryRuleWildcardTypeRefCS 

-:

-{ before(grammarAccess.getWildcardTypeRefCSRule()); }

-	 ruleWildcardTypeRefCS

-{ after(grammarAccess.getWildcardTypeRefCSRule()); } 

-	 EOF 

-;

-

-// Rule WildcardTypeRefCS

-ruleWildcardTypeRefCS

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }

-(rule__WildcardTypeRefCS__Group__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleID

-entryRuleID 

-:

-{ before(grammarAccess.getIDRule()); }

-	 ruleID

-{ after(grammarAccess.getIDRule()); } 

-	 EOF 

-;

-

-// Rule ID

-ruleID

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getIDAccess().getAlternatives()); }

-(rule__ID__Alternatives)

-{ after(grammarAccess.getIDAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleLOWER

-entryRuleLOWER 

-:

-{ before(grammarAccess.getLOWERRule()); }

-	 ruleLOWER

-{ after(grammarAccess.getLOWERRule()); } 

-	 EOF 

-;

-

-// Rule LOWER

-ruleLOWER

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }

-	RULE_INT

-{ after(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleNUMBER_LITERAL

-entryRuleNUMBER_LITERAL 

-:

-{ before(grammarAccess.getNUMBER_LITERALRule()); }

-	 ruleNUMBER_LITERAL

-{ after(grammarAccess.getNUMBER_LITERALRule()); } 

-	 EOF 

-;

-

-// Rule NUMBER_LITERAL

-ruleNUMBER_LITERAL

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }

-	RULE_INT

-{ after(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleStringLiteral

-entryRuleStringLiteral 

-:

-{ before(grammarAccess.getStringLiteralRule()); }

-	 ruleStringLiteral

-{ after(grammarAccess.getStringLiteralRule()); } 

-	 EOF 

-;

-

-// Rule StringLiteral

-ruleStringLiteral

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-	RULE_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleUPPER

-entryRuleUPPER 

-:

-{ before(grammarAccess.getUPPERRule()); }

-	 ruleUPPER

-{ after(grammarAccess.getUPPERRule()); } 

-	 EOF 

-;

-

-// Rule UPPER

-ruleUPPER

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getUPPERAccess().getAlternatives()); }

-(rule__UPPER__Alternatives)

-{ after(grammarAccess.getUPPERAccess().getAlternatives()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-// Entry rule entryRuleURI

-entryRuleURI 

-:

-{ before(grammarAccess.getURIRule()); }

-	 ruleURI

-{ after(grammarAccess.getURIRule()); } 

-	 EOF 

-;

-

-// Rule URI

-ruleURI

-    @init {

-		int stackSize = keepStackSize();

-    }

-	:

-(

-{ before(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-	RULE_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-rule__Identifier__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIdentifierAccess().getIDParserRuleCall_0()); }

-	ruleID

-{ after(grammarAccess.getIdentifierAccess().getIDParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getIdentifierAccess().getRestrictedKeywordsParserRuleCall_1()); }

-	ruleRestrictedKeywords

-{ after(grammarAccess.getIdentifierAccess().getRestrictedKeywordsParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RestrictedKeywords__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getAnnotationKeyword_0()); }

-

-	'annotation' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getAnnotationKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getConformsToKeyword_1()); }

-

-	'conformsTo' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getConformsToKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getDocumentationKeyword_2()); }

-

-	'documentation' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getDocumentationKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getExtendsKeyword_3()); }

-

-	'extends' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getExtendsKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getImportKeyword_4()); }

-

-	'import' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getImportKeyword_4()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getInvKeyword_5()); }

-

-	'inv' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getInvKeyword_5()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getInvalidatingKeyword_6()); }

-

-	'invalidating' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getInvalidatingKeyword_6()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getIterationKeyword_7()); }

-

-	'iteration' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getIterationKeyword_7()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getLeftKeyword_8()); }

-

-	'left' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getLeftKeyword_8()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getLibraryKeyword_9()); }

-

-	'library' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getLibraryKeyword_9()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getOperationKeyword_10()); }

-

-	'operation' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getOperationKeyword_10()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getPackageKeyword_11()); }

-

-	'package' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getPackageKeyword_11()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getPostKeyword_12()); }

-

-	'post' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getPostKeyword_12()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getPreKeyword_13()); }

-

-	'pre' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getPreKeyword_13()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getPrecedenceKeyword_14()); }

-

-	'precedence' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getPrecedenceKeyword_14()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getPropertyKeyword_15()); }

-

-	'property' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getPropertyKeyword_15()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getRightKeyword_16()); }

-

-	'right' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getRightKeyword_16()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getStaticKeyword_17()); }

-

-	'static' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getStaticKeyword_17()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getSuperKeyword_18()); }

-

-	'super' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getSuperKeyword_18()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getTypeKeyword_19()); }

-

-	'type' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getTypeKeyword_19()); }

-)

-

-    |(

-{ before(grammarAccess.getRestrictedKeywordsAccess().getValidatingKeyword_20()); }

-

-	'validating' 

-

-{ after(grammarAccess.getRestrictedKeywordsAccess().getValidatingKeyword_20()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__Name__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameAccess().getIdentifierParserRuleCall_0()); }

-	ruleIdentifier

-{ after(grammarAccess.getNameAccess().getIdentifierParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNameAccess().getDOUBLE_QUOTED_STRINGTerminalRuleCall_1()); }

-	RULE_DOUBLE_QUOTED_STRING

-{ after(grammarAccess.getNameAccess().getDOUBLE_QUOTED_STRINGTerminalRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getNameAccess().getEssentialOCLReservedKeywordParserRuleCall_2()); }

-	ruleEssentialOCLReservedKeyword

-{ after(grammarAccess.getNameAccess().getEssentialOCLReservedKeywordParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getNameAccess().getPrimitiveTypeIdentifierParserRuleCall_3()); }

-	rulePrimitiveTypeIdentifier

-{ after(grammarAccess.getNameAccess().getPrimitiveTypeIdentifierParserRuleCall_3()); }

-)

-

-    |(

-{ before(grammarAccess.getNameAccess().getCollectionTypeIdentifierParserRuleCall_4()); }

-	ruleCollectionTypeIdentifier

-{ after(grammarAccess.getNameAccess().getCollectionTypeIdentifierParserRuleCall_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnyName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnyNameAccess().getNameParserRuleCall_0()); }

-	ruleName

-{ after(grammarAccess.getAnyNameAccess().getNameParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getAnyNameAccess().getLambdaKeyword_1()); }

-

-	'Lambda' 

-

-{ after(grammarAccess.getAnyNameAccess().getLambdaKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getAnyNameAccess().getTupleKeyword_2()); }

-

-	'Tuple' 

-

-{ after(grammarAccess.getAnyNameAccess().getTupleKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__NameAlternatives_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getNameIdentifierParserRuleCall_1_0_0()); }

-	ruleIdentifier

-{ after(grammarAccess.getAnnotationCSAccess().getNameIdentifierParserRuleCall_1_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getAnnotationCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_1_0_1()); }

-	RULE_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getAnnotationCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_1_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Alternatives_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getGroup_3_0()); }

-(rule__AnnotationCS__Group_3_0__0)

-{ after(grammarAccess.getAnnotationCSAccess().getGroup_3_0()); }

-)

-

-    |(

-{ before(grammarAccess.getAnnotationCSAccess().getSemicolonKeyword_3_1()); }

-

-	';' 

-

-{ after(grammarAccess.getAnnotationCSAccess().getSemicolonKeyword_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationElementCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationElementCSAccess().getAnnotationCSParserRuleCall_0()); }

-	ruleAnnotationCS

-{ after(grammarAccess.getAnnotationElementCSAccess().getAnnotationCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getAnnotationElementCSAccess().getDocumentationCSParserRuleCall_1()); }

-	ruleDocumentationCS

-{ after(grammarAccess.getAnnotationElementCSAccess().getDocumentationCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Alternatives_6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getOwnedOperationsAssignment_6_0()); }

-(rule__LibClassCS__OwnedOperationsAssignment_6_0)

-{ after(grammarAccess.getLibClassCSAccess().getOwnedOperationsAssignment_6_0()); }

-)

-

-    |(

-{ before(grammarAccess.getLibClassCSAccess().getOwnedPropertiesAssignment_6_1()); }

-(rule__LibClassCS__OwnedPropertiesAssignment_6_1)

-{ after(grammarAccess.getLibClassCSAccess().getOwnedPropertiesAssignment_6_1()); }

-)

-

-    |(

-{ before(grammarAccess.getLibClassCSAccess().getOwnedConstraintsAssignment_6_2()); }

-(rule__LibClassCS__OwnedConstraintsAssignment_6_2)

-{ after(grammarAccess.getLibClassCSAccess().getOwnedConstraintsAssignment_6_2()); }

-)

-

-    |(

-{ before(grammarAccess.getLibClassCSAccess().getOwnedAnnotationsAssignment_6_3()); }

-(rule__LibClassCS__OwnedAnnotationsAssignment_6_3)

-{ after(grammarAccess.getLibClassCSAccess().getOwnedAnnotationsAssignment_6_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DetailCS__NameAlternatives_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDetailCSAccess().getNameNameParserRuleCall_0_0_0()); }

-	ruleName

-{ after(grammarAccess.getDetailCSAccess().getNameNameParserRuleCall_0_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getDetailCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_0_0_1()); }

-	RULE_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getDetailCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_0_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DetailCS__ValuesAlternatives_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDetailCSAccess().getValuesSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_0()); }

-	RULE_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getDetailCSAccess().getValuesSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getDetailCSAccess().getValuesML_SINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); }

-	RULE_ML_SINGLE_QUOTED_STRING

-{ after(grammarAccess.getDetailCSAccess().getValuesML_SINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Alternatives_7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getGroup_7_0()); }

-(rule__LibCoercionCS__Group_7_0__0)

-{ after(grammarAccess.getLibCoercionCSAccess().getGroup_7_0()); }

-)

-

-    |(

-{ before(grammarAccess.getLibCoercionCSAccess().getSemicolonKeyword_7_1()); }

-

-	';' 

-

-{ after(grammarAccess.getLibCoercionCSAccess().getSemicolonKeyword_7_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Alternatives_7_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getOwnedAnnotationsAssignment_7_0_1_0()); }

-(rule__LibCoercionCS__OwnedAnnotationsAssignment_7_0_1_0)

-{ after(grammarAccess.getLibCoercionCSAccess().getOwnedAnnotationsAssignment_7_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getLibCoercionCSAccess().getOwnedPreconditionsAssignment_7_0_1_1()); }

-(rule__LibCoercionCS__OwnedPreconditionsAssignment_7_0_1_1)

-{ after(grammarAccess.getLibCoercionCSAccess().getOwnedPreconditionsAssignment_7_0_1_1()); }

-)

-

-    |(

-{ before(grammarAccess.getLibCoercionCSAccess().getOwnedPostconditionsAssignment_7_0_1_2()); }

-(rule__LibCoercionCS__OwnedPostconditionsAssignment_7_0_1_2)

-{ after(grammarAccess.getLibCoercionCSAccess().getOwnedPostconditionsAssignment_7_0_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Alternatives_14

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getGroup_14_0()); }

-(rule__LibIterationCS__Group_14_0__0)

-{ after(grammarAccess.getLibIterationCSAccess().getGroup_14_0()); }

-)

-

-    |(

-{ before(grammarAccess.getLibIterationCSAccess().getSemicolonKeyword_14_1()); }

-

-	';' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getSemicolonKeyword_14_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Alternatives_14_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedAnnotationsAssignment_14_0_1_0()); }

-(rule__LibIterationCS__OwnedAnnotationsAssignment_14_0_1_0)

-{ after(grammarAccess.getLibIterationCSAccess().getOwnedAnnotationsAssignment_14_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedPreconditionsAssignment_14_0_1_1()); }

-(rule__LibIterationCS__OwnedPreconditionsAssignment_14_0_1_1)

-{ after(grammarAccess.getLibIterationCSAccess().getOwnedPreconditionsAssignment_14_0_1_1()); }

-)

-

-    |(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedPostconditionsAssignment_14_0_1_2()); }

-(rule__LibIterationCS__OwnedPostconditionsAssignment_14_0_1_2)

-{ after(grammarAccess.getLibIterationCSAccess().getOwnedPostconditionsAssignment_14_0_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__OperationCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getOperationCSAccess().getLibCoercionCSParserRuleCall_0()); }

-	ruleLibCoercionCS

-{ after(grammarAccess.getOperationCSAccess().getLibCoercionCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getOperationCSAccess().getLibIterationCSParserRuleCall_1()); }

-	ruleLibIterationCS

-{ after(grammarAccess.getOperationCSAccess().getLibIterationCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getOperationCSAccess().getLibOperationCSParserRuleCall_2()); }

-	ruleLibOperationCS

-{ after(grammarAccess.getOperationCSAccess().getLibOperationCSParserRuleCall_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Alternatives_13

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getGroup_13_0()); }

-(rule__LibOperationCS__Group_13_0__0)

-{ after(grammarAccess.getLibOperationCSAccess().getGroup_13_0()); }

-)

-

-    |(

-{ before(grammarAccess.getLibOperationCSAccess().getSemicolonKeyword_13_1()); }

-

-	';' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getSemicolonKeyword_13_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Alternatives_13_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedAnnotationsAssignment_13_0_1_0()); }

-(rule__LibOperationCS__OwnedAnnotationsAssignment_13_0_1_0)

-{ after(grammarAccess.getLibOperationCSAccess().getOwnedAnnotationsAssignment_13_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getLibOperationCSAccess().getGroup_13_0_1_1()); }

-(rule__LibOperationCS__Group_13_0_1_1__0)

-{ after(grammarAccess.getLibOperationCSAccess().getGroup_13_0_1_1()); }

-)

-

-    |(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedPostconditionsAssignment_13_0_1_2()); }

-(rule__LibOperationCS__OwnedPostconditionsAssignment_13_0_1_2)

-{ after(grammarAccess.getLibOperationCSAccess().getOwnedPostconditionsAssignment_13_0_1_2()); }

-)

-

-    |(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedPreconditionsAssignment_13_0_1_3()); }

-(rule__LibOperationCS__OwnedPreconditionsAssignment_13_0_1_3)

-{ after(grammarAccess.getLibOperationCSAccess().getOwnedPreconditionsAssignment_13_0_1_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__Alternatives_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getOwnedPackagesAssignment_4_0()); }

-(rule__LibPackageCS__OwnedPackagesAssignment_4_0)

-{ after(grammarAccess.getLibPackageCSAccess().getOwnedPackagesAssignment_4_0()); }

-)

-

-    |(

-{ before(grammarAccess.getLibPackageCSAccess().getGroup_4_1()); }

-(rule__LibPackageCS__Group_4_1__0)

-{ after(grammarAccess.getLibPackageCSAccess().getGroup_4_1()); }

-)

-

-    |(

-{ before(grammarAccess.getLibPackageCSAccess().getOwnedClassesAssignment_4_2()); }

-(rule__LibPackageCS__OwnedClassesAssignment_4_2)

-{ after(grammarAccess.getLibPackageCSAccess().getOwnedClassesAssignment_4_2()); }

-)

-

-    |(

-{ before(grammarAccess.getLibPackageCSAccess().getOwnedAnnotationsAssignment_4_3()); }

-(rule__LibPackageCS__OwnedAnnotationsAssignment_4_3)

-{ after(grammarAccess.getLibPackageCSAccess().getOwnedAnnotationsAssignment_4_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Alternatives_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getOwnedPackagesAssignment_4_0()); }

-(rule__PackageCS__OwnedPackagesAssignment_4_0)

-{ after(grammarAccess.getPackageCSAccess().getOwnedPackagesAssignment_4_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPackageCSAccess().getOwnedClassesAssignment_4_1()); }

-(rule__PackageCS__OwnedClassesAssignment_4_1)

-{ after(grammarAccess.getPackageCSAccess().getOwnedClassesAssignment_4_1()); }

-)

-

-    |(

-{ before(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAssignment_4_2()); }

-(rule__PackageCS__OwnedAnnotationsAssignment_4_2)

-{ after(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAssignment_4_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__Alternatives_6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getGroup_6_0()); }

-(rule__LibPropertyCS__Group_6_0__0)

-{ after(grammarAccess.getLibPropertyCSAccess().getGroup_6_0()); }

-)

-

-    |(

-{ before(grammarAccess.getLibPropertyCSAccess().getSemicolonKeyword_6_1()); }

-

-	';' 

-

-{ after(grammarAccess.getLibPropertyCSAccess().getSemicolonKeyword_6_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrecedenceCS__Alternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrecedenceCSAccess().getLeftKeyword_0_0()); }

-

-	'left' 

-

-{ after(grammarAccess.getPrecedenceCSAccess().getLeftKeyword_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrecedenceCSAccess().getIsRightAssociativeAssignment_0_1()); }

-(rule__PrecedenceCS__IsRightAssociativeAssignment_0_1)

-{ after(grammarAccess.getPrecedenceCSAccess().getIsRightAssociativeAssignment_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedMultiplicityRefCS__Alternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getTupleTypeCSParserRuleCall_0_0()); }

-	ruleTupleTypeCS

-{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getTupleTypeCSParserRuleCall_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getTypedTypeRefCSParserRuleCall_0_1()); }

-	ruleTypedTypeRefCS

-{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getTypedTypeRefCSParserRuleCall_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getLambdaTypeCSParserRuleCall_0_2()); }

-	ruleLambdaTypeCS

-{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getLambdaTypeCSParserRuleCall_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedRefCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedRefCSAccess().getTupleTypeCSParserRuleCall_0()); }

-	ruleTupleTypeCS

-{ after(grammarAccess.getTypedRefCSAccess().getTupleTypeCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); }

-	ruleTypedTypeRefCS

-{ after(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getTypedRefCSAccess().getLambdaTypeCSParserRuleCall_2()); }

-	ruleLambdaTypeCS

-{ after(grammarAccess.getTypedRefCSAccess().getLambdaTypeCSParserRuleCall_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getGroup_0()); }

-(rule__TypedTypeRefCS__Group_0__0)

-{ after(grammarAccess.getTypedTypeRefCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getGroup_1()); }

-(rule__TypedTypeRefCS__Group_1__0)

-{ after(grammarAccess.getTypedTypeRefCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EssentialOCLReservedKeyword__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getAndKeyword_0()); }

-

-	'and' 

-

-{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getAndKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getElseKeyword_1()); }

-

-	'else' 

-

-{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getElseKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getEndifKeyword_2()); }

-

-	'endif' 

-

-{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getEndifKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getIfKeyword_3()); }

-

-	'if' 

-

-{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getIfKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getImpliesKeyword_4()); }

-

-	'implies' 

-

-{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getImpliesKeyword_4()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getInKeyword_5()); }

-

-	'in' 

-

-{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getInKeyword_5()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getLetKeyword_6()); }

-

-	'let' 

-

-{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getLetKeyword_6()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getNotKeyword_7()); }

-

-	'not' 

-

-{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getNotKeyword_7()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getOrKeyword_8()); }

-

-	'or' 

-

-{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getOrKeyword_8()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getThenKeyword_9()); }

-

-	'then' 

-

-{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getThenKeyword_9()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getXorKeyword_10()); }

-

-	'xor' 

-

-{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getXorKeyword_10()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EssentialOCLUnaryOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }

-

-	'-' 

-

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }

-

-	'not' 

-

-{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EssentialOCLInfixOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }

-

-	'*' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }

-

-	'/' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }

-

-	'+' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }

-

-	'-' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }

-

-	'>' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }

-

-	'<' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }

-

-	'>=' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }

-

-	'<=' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }

-

-	'=' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }

-

-	'<>' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }

-

-	'and' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }

-

-	'or' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }

-

-	'xor' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }

-

-	'implies' 

-

-{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EssentialOCLNavigationOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }

-

-	'.' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }

-

-	'->' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }

-

-	'?.' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }

-

-	'?->' 

-

-{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BinaryOperatorName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }

-	ruleInfixOperatorName

-{ after(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }

-	ruleNavigationOperatorName

-{ after(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__EssentialOCLUnreservedName__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }

-	ruleUnrestrictedName

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }

-	ruleCollectionTypeIdentifier

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }

-	rulePrimitiveTypeIdentifier

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }

-

-	'Tuple' 

-

-{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }

-(rule__URIFirstPathElementCS__ReferredElementAssignment_0)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }

-)

-

-    |(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }

-(rule__URIFirstPathElementCS__Group_1__0)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimitiveTypeIdentifier__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }

-

-	'Boolean' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }

-

-	'Integer' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }

-

-	'Real' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }

-

-	'String' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }

-

-	'UnlimitedNatural' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }

-

-	'OclAny' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }

-

-	'OclInvalid' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); }

-

-	'OclVoid' 

-

-{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeIdentifier__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }

-

-	'Set' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }

-

-	'Bag' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }

-

-	'Sequence' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }

-

-	'Collection' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }

-

-	'OrderedSet' 

-

-{ after(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }

-(rule__CollectionLiteralPartCS__Group_0__0)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }

-(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }

-	ruleExpCS

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }

-	rulePatternExpCS

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimitiveLiteralExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }

-	ruleNumberLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }

-	ruleStringLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }

-	ruleBooleanLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }

-	ruleUnlimitedNaturalLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }

-	ruleInvalidLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }

-	ruleNullLiteralExpCS

-{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BooleanLiteralExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }

-(rule__BooleanLiteralExpCS__SymbolAssignment_0)

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }

-)

-

-    |(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }

-(rule__BooleanLiteralExpCS__SymbolAssignment_1)

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }

-	rulePrimitiveTypeCS

-{ after(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }

-	ruleCollectionTypeCS

-{ after(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }

-	ruleTupleTypeCS

-{ after(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__Alternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }

-	ruleTypeNameExpCS

-{ after(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }

-	ruleTypeLiteralCS

-{ after(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }

-	ruleCollectionPatternCS

-{ after(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getGroup_0()); }

-(rule__ExpCS__Group_0__0)

-{ after(grammarAccess.getExpCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }

-	rulePrefixedLetExpCS

-{ after(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }

-(rule__PrefixedLetExpCS__Group_0__0)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }

-	ruleLetExpCS

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }

-(rule__PrefixedPrimaryExpCS__Group_0__0)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }

-	rulePrimaryExpCS

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimaryExpCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }

-	ruleNestedExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }

-	ruleIfExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }

-	ruleSelfExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }

-	rulePrimitiveLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }

-	ruleTupleLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }

-	ruleCollectionLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }

-	ruleLambdaLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }

-	ruleTypeLiteralExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }

-)

-

-    |(

-{ before(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }

-	ruleNameExpCS

-{ after(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }

-(rule__CurlyBracketedClauseCS__Group_2_0__0)?

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }

-(rule__CurlyBracketedClauseCS__ValueAssignment_2_1)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }

-(rule__NavigatingArgCS__Group_0__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }

-(rule__NavigatingArgCS__Group_1__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Alternatives_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }

-(rule__NavigatingArgCS__Group_0_1_0__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }

-(rule__NavigatingArgCS__Group_0_1_1__0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }

-(rule__NavigatingCommaArgCS__Group_2_0__0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }

-(rule__NavigatingCommaArgCS__Group_2_1__0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedConditionAlternatives_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }

-	ruleExpCS

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }

-	rulePatternExpCS

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Alternatives_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }

-	ruleMultiplicityBoundsCS

-{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }

-	ruleMultiplicityStringCS

-{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityStringCS__StringBoundsAlternatives_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }

-

-	'*' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }

-)

-

-    |(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }

-

-	'+' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }

-)

-

-    |(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }

-

-	'?' 

-

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Alternatives_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }

-(rule__TypeParameterCS__Group_1_0__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }

-(rule__TypeParameterCS__Group_1_1__0)

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeRefCS__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }

-	ruleTypedRefCS

-{ after(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }

-	ruleWildcardTypeRefCS

-{ after(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Alternatives_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }

-(rule__WildcardTypeRefCS__Group_2_0__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }

-)

-

-    |(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }

-(rule__WildcardTypeRefCS__Group_2_1__0)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ID__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }

-	RULE_SIMPLE_ID

-{ after(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }

-	RULE_ESCAPED_ID

-{ after(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UPPER__Alternatives

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }

-	RULE_INT

-{ after(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }

-)

-

-    |(

-{ before(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }

-

-	'*' 

-

-{ after(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-rule__Library__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__Library__Group__0__Impl

-	rule__Library__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__Library__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryAccess().getGroup_0()); }

-(rule__Library__Group_0__0)*

-{ after(grammarAccess.getLibraryAccess().getGroup_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__Library__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__Library__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__Library__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryAccess().getOwnedPackagesAssignment_1()); }

-(rule__Library__OwnedPackagesAssignment_1)*

-{ after(grammarAccess.getLibraryAccess().getOwnedPackagesAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__Library__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__Library__Group_0__0__Impl

-	rule__Library__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__Library__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryAccess().getOwnedLibrariesAssignment_0_0()); }

-(rule__Library__OwnedLibrariesAssignment_0_0)

-{ after(grammarAccess.getLibraryAccess().getOwnedLibrariesAssignment_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__Library__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__Library__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__Library__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryAccess().getSemicolonKeyword_0_1()); }

-

-	';' 

-

-{ after(grammarAccess.getLibraryAccess().getSemicolonKeyword_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibPathNameCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPathNameCS__Group__0__Impl

-	rule__LibPathNameCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPathNameCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-(rule__LibPathNameCS__OwnedPathElementsAssignment_0)

-{ after(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPathNameCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPathNameCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPathNameCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPathNameCSAccess().getGroup_1()); }

-(rule__LibPathNameCS__Group_1__0)*

-{ after(grammarAccess.getLibPathNameCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibPathNameCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPathNameCS__Group_1__0__Impl

-	rule__LibPathNameCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPathNameCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPathNameCSAccess().getColonColonKeyword_1_0()); }

-

-	'::' 

-

-{ after(grammarAccess.getLibPathNameCSAccess().getColonColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPathNameCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPathNameCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPathNameCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-(rule__LibPathNameCS__OwnedPathElementsAssignment_1_1)

-{ after(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__AccumulatorCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AccumulatorCS__Group__0__Impl

-	rule__AccumulatorCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AccumulatorCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAccumulatorCSAccess().getNameAssignment_0()); }

-(rule__AccumulatorCS__NameAssignment_0)

-{ after(grammarAccess.getAccumulatorCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AccumulatorCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AccumulatorCS__Group__1__Impl

-	rule__AccumulatorCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AccumulatorCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAccumulatorCSAccess().getColonKeyword_1()); }

-

-	':' 

-

-{ after(grammarAccess.getAccumulatorCSAccess().getColonKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AccumulatorCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AccumulatorCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AccumulatorCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAccumulatorCSAccess().getOwnedTypeAssignment_2()); }

-(rule__AccumulatorCS__OwnedTypeAssignment_2)

-{ after(grammarAccess.getAccumulatorCSAccess().getOwnedTypeAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__AnnotationCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group__0__Impl

-	rule__AnnotationCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getAnnotationKeyword_0()); }

-

-	'annotation' 

-

-{ after(grammarAccess.getAnnotationCSAccess().getAnnotationKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group__1__Impl

-	rule__AnnotationCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getNameAssignment_1()); }

-(rule__AnnotationCS__NameAssignment_1)

-{ after(grammarAccess.getAnnotationCSAccess().getNameAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group__2__Impl

-	rule__AnnotationCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getGroup_2()); }

-(rule__AnnotationCS__Group_2__0)?

-{ after(grammarAccess.getAnnotationCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getAlternatives_3()); }

-(rule__AnnotationCS__Alternatives_3)

-{ after(grammarAccess.getAnnotationCSAccess().getAlternatives_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__AnnotationCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_2__0__Impl

-	rule__AnnotationCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getLeftParenthesisKeyword_2_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getAnnotationCSAccess().getLeftParenthesisKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_2__1__Impl

-	rule__AnnotationCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_2_1()); }

-(rule__AnnotationCS__OwnedDetailsAssignment_2_1)

-{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_2__2__Impl

-	rule__AnnotationCS__Group_2__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getGroup_2_2()); }

-(rule__AnnotationCS__Group_2_2__0)*

-{ after(grammarAccess.getAnnotationCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group_2__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_2__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_2__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getRightParenthesisKeyword_2_3()); }

-

-	')' 

-

-{ after(grammarAccess.getAnnotationCSAccess().getRightParenthesisKeyword_2_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__AnnotationCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_2_2__0__Impl

-	rule__AnnotationCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getCommaKeyword_2_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getAnnotationCSAccess().getCommaKeyword_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_2_2_1()); }

-(rule__AnnotationCS__OwnedDetailsAssignment_2_2_1)

-{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__AnnotationCS__Group_3_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_3_0__0__Impl

-	rule__AnnotationCS__Group_3_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_3_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getLeftCurlyBracketKeyword_3_0_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getAnnotationCSAccess().getLeftCurlyBracketKeyword_3_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group_3_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_3_0__1__Impl

-	rule__AnnotationCS__Group_3_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_3_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAssignment_3_0_1()); }

-(rule__AnnotationCS__OwnedAnnotationsAssignment_3_0_1)

-{ after(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAssignment_3_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__AnnotationCS__Group_3_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__AnnotationCS__Group_3_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__Group_3_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getRightCurlyBracketKeyword_3_0_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getAnnotationCSAccess().getRightCurlyBracketKeyword_3_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__LibClassCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group__0__Impl

-	rule__LibClassCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getTypeKeyword_0()); }

-

-	'type' 

-

-{ after(grammarAccess.getLibClassCSAccess().getTypeKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibClassCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group__1__Impl

-	rule__LibClassCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getNameAssignment_1()); }

-(rule__LibClassCS__NameAssignment_1)

-{ after(grammarAccess.getLibClassCSAccess().getNameAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibClassCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group__2__Impl

-	rule__LibClassCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getOwnedSignatureAssignment_2()); }

-(rule__LibClassCS__OwnedSignatureAssignment_2)?

-{ after(grammarAccess.getLibClassCSAccess().getOwnedSignatureAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibClassCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group__3__Impl

-	rule__LibClassCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getGroup_3()); }

-(rule__LibClassCS__Group_3__0)?

-{ after(grammarAccess.getLibClassCSAccess().getGroup_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibClassCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group__4__Impl

-	rule__LibClassCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getGroup_4()); }

-(rule__LibClassCS__Group_4__0)?

-{ after(grammarAccess.getLibClassCSAccess().getGroup_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibClassCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group__5__Impl

-	rule__LibClassCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getLeftCurlyBracketKeyword_5()); }

-

-	'{' 

-

-{ after(grammarAccess.getLibClassCSAccess().getLeftCurlyBracketKeyword_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibClassCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group__6__Impl

-	rule__LibClassCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getAlternatives_6()); }

-(rule__LibClassCS__Alternatives_6)*

-{ after(grammarAccess.getLibClassCSAccess().getAlternatives_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibClassCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group__7__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getRightCurlyBracketKeyword_7()); }

-

-	'}' 

-

-{ after(grammarAccess.getLibClassCSAccess().getRightCurlyBracketKeyword_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LibClassCS__Group_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group_3__0__Impl

-	rule__LibClassCS__Group_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getColonKeyword_3_0()); }

-

-	':' 

-

-{ after(grammarAccess.getLibClassCSAccess().getColonKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibClassCS__Group_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group_3__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getMetaclassNameAssignment_3_1()); }

-(rule__LibClassCS__MetaclassNameAssignment_3_1)

-{ after(grammarAccess.getLibClassCSAccess().getMetaclassNameAssignment_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibClassCS__Group_4__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group_4__0__Impl

-	rule__LibClassCS__Group_4__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group_4__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getConformsToKeyword_4_0()); }

-

-	'conformsTo' 

-

-{ after(grammarAccess.getLibClassCSAccess().getConformsToKeyword_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibClassCS__Group_4__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group_4__1__Impl

-	rule__LibClassCS__Group_4__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group_4__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesAssignment_4_1()); }

-(rule__LibClassCS__OwnedSuperTypesAssignment_4_1)

-{ after(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesAssignment_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibClassCS__Group_4__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group_4__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group_4__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getGroup_4_2()); }

-(rule__LibClassCS__Group_4_2__0)*

-{ after(grammarAccess.getLibClassCSAccess().getGroup_4_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__LibClassCS__Group_4_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group_4_2__0__Impl

-	rule__LibClassCS__Group_4_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group_4_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getCommaKeyword_4_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getLibClassCSAccess().getCommaKeyword_4_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibClassCS__Group_4_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibClassCS__Group_4_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__Group_4_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesAssignment_4_2_1()); }

-(rule__LibClassCS__OwnedSuperTypesAssignment_4_2_1)

-{ after(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesAssignment_4_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__DetailCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DetailCS__Group__0__Impl

-	rule__DetailCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DetailCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDetailCSAccess().getNameAssignment_0()); }

-(rule__DetailCS__NameAssignment_0)

-{ after(grammarAccess.getDetailCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DetailCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DetailCS__Group__1__Impl

-	rule__DetailCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DetailCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDetailCSAccess().getEqualsSignKeyword_1()); }

-

-	'=' 

-

-{ after(grammarAccess.getDetailCSAccess().getEqualsSignKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DetailCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DetailCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DetailCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDetailCSAccess().getValuesAssignment_2()); }

-(rule__DetailCS__ValuesAssignment_2)*

-{ after(grammarAccess.getDetailCSAccess().getValuesAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__DocumentationCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group__0__Impl

-	rule__DocumentationCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getDocumentationCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getDocumentationCSAccess().getDocumentationCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group__1__Impl

-	rule__DocumentationCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getDocumentationKeyword_1()); }

-

-	'documentation' 

-

-{ after(grammarAccess.getDocumentationCSAccess().getDocumentationKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group__2__Impl

-	rule__DocumentationCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getValueAssignment_2()); }

-(rule__DocumentationCS__ValueAssignment_2)?

-{ after(grammarAccess.getDocumentationCSAccess().getValueAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group__3__Impl

-	rule__DocumentationCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getGroup_3()); }

-(rule__DocumentationCS__Group_3__0)?

-{ after(grammarAccess.getDocumentationCSAccess().getGroup_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getSemicolonKeyword_4()); }

-

-	';' 

-

-{ after(grammarAccess.getDocumentationCSAccess().getSemicolonKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__DocumentationCS__Group_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group_3__0__Impl

-	rule__DocumentationCS__Group_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getLeftParenthesisKeyword_3_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getDocumentationCSAccess().getLeftParenthesisKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group_3__1__Impl

-	rule__DocumentationCS__Group_3__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_1()); }

-(rule__DocumentationCS__OwnedDetailsAssignment_3_1)

-{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group_3__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group_3__2__Impl

-	rule__DocumentationCS__Group_3__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group_3__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getGroup_3_2()); }

-(rule__DocumentationCS__Group_3_2__0)*

-{ after(grammarAccess.getDocumentationCSAccess().getGroup_3_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group_3__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group_3__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group_3__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getRightParenthesisKeyword_3_3()); }

-

-	')' 

-

-{ after(grammarAccess.getDocumentationCSAccess().getRightParenthesisKeyword_3_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__DocumentationCS__Group_3_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group_3_2__0__Impl

-	rule__DocumentationCS__Group_3_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group_3_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getCommaKeyword_3_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getDocumentationCSAccess().getCommaKeyword_3_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__DocumentationCS__Group_3_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__DocumentationCS__Group_3_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__Group_3_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_2_1()); }

-(rule__DocumentationCS__OwnedDetailsAssignment_3_2_1)

-{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__InvCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvCS__Group__0__Impl

-	rule__InvCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvCSAccess().getStereotypeAssignment_0()); }

-(rule__InvCS__StereotypeAssignment_0)

-{ after(grammarAccess.getInvCSAccess().getStereotypeAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvCS__Group__1__Impl

-	rule__InvCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvCSAccess().getGroup_1()); }

-(rule__InvCS__Group_1__0)?

-{ after(grammarAccess.getInvCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvCS__Group__2__Impl

-	rule__InvCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvCSAccess().getColonKeyword_2()); }

-

-	':' 

-

-{ after(grammarAccess.getInvCSAccess().getColonKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvCS__Group__3__Impl

-	rule__InvCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvCSAccess().getOwnedSpecificationAssignment_3()); }

-(rule__InvCS__OwnedSpecificationAssignment_3)

-{ after(grammarAccess.getInvCSAccess().getOwnedSpecificationAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvCSAccess().getSemicolonKeyword_4()); }

-

-	';' 

-

-{ after(grammarAccess.getInvCSAccess().getSemicolonKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__InvCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvCS__Group_1__0__Impl

-	rule__InvCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvCSAccess().getNameAssignment_1_0()); }

-(rule__InvCS__NameAssignment_1_0)

-{ after(grammarAccess.getInvCSAccess().getNameAssignment_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvCSAccess().getGroup_1_1()); }

-(rule__InvCS__Group_1_1__0)?

-{ after(grammarAccess.getInvCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__InvCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvCS__Group_1_1__0__Impl

-	rule__InvCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvCSAccess().getLeftParenthesisKeyword_1_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getInvCSAccess().getLeftParenthesisKeyword_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvCS__Group_1_1__1__Impl

-	rule__InvCS__Group_1_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }

-(rule__InvCS__OwnedMessageSpecificationAssignment_1_1_1)

-{ after(grammarAccess.getInvCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvCS__Group_1_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvCS__Group_1_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvCS__Group_1_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvCSAccess().getRightParenthesisKeyword_1_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getInvCSAccess().getRightParenthesisKeyword_1_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__LibCoercionCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibCoercionCS__Group__0__Impl

-	rule__LibCoercionCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getCoercionKeyword_0()); }

-

-	'coercion' 

-

-{ after(grammarAccess.getLibCoercionCSAccess().getCoercionKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibCoercionCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibCoercionCS__Group__1__Impl

-	rule__LibCoercionCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getNameAssignment_1()); }

-(rule__LibCoercionCS__NameAssignment_1)

-{ after(grammarAccess.getLibCoercionCSAccess().getNameAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibCoercionCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibCoercionCS__Group__2__Impl

-	rule__LibCoercionCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getLeftParenthesisKeyword_2()); }

-

-	'(' 

-

-{ after(grammarAccess.getLibCoercionCSAccess().getLeftParenthesisKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibCoercionCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibCoercionCS__Group__3__Impl

-	rule__LibCoercionCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getRightParenthesisKeyword_3()); }

-

-	')' 

-

-{ after(grammarAccess.getLibCoercionCSAccess().getRightParenthesisKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibCoercionCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibCoercionCS__Group__4__Impl

-	rule__LibCoercionCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getColonKeyword_4()); }

-

-	':' 

-

-{ after(grammarAccess.getLibCoercionCSAccess().getColonKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibCoercionCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibCoercionCS__Group__5__Impl

-	rule__LibCoercionCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getOwnedTypeAssignment_5()); }

-(rule__LibCoercionCS__OwnedTypeAssignment_5)

-{ after(grammarAccess.getLibCoercionCSAccess().getOwnedTypeAssignment_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibCoercionCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibCoercionCS__Group__6__Impl

-	rule__LibCoercionCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getGroup_6()); }

-(rule__LibCoercionCS__Group_6__0)?

-{ after(grammarAccess.getLibCoercionCSAccess().getGroup_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibCoercionCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibCoercionCS__Group__7__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getAlternatives_7()); }

-(rule__LibCoercionCS__Alternatives_7)

-{ after(grammarAccess.getLibCoercionCSAccess().getAlternatives_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LibCoercionCS__Group_6__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibCoercionCS__Group_6__0__Impl

-	rule__LibCoercionCS__Group_6__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Group_6__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getEqualsSignGreaterThanSignKeyword_6_0()); }

-

-	'=>' 

-

-{ after(grammarAccess.getLibCoercionCSAccess().getEqualsSignGreaterThanSignKeyword_6_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibCoercionCS__Group_6__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibCoercionCS__Group_6__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Group_6__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getImplementationAssignment_6_1()); }

-(rule__LibCoercionCS__ImplementationAssignment_6_1)

-{ after(grammarAccess.getLibCoercionCSAccess().getImplementationAssignment_6_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibCoercionCS__Group_7_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibCoercionCS__Group_7_0__0__Impl

-	rule__LibCoercionCS__Group_7_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Group_7_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getLeftCurlyBracketKeyword_7_0_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getLibCoercionCSAccess().getLeftCurlyBracketKeyword_7_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibCoercionCS__Group_7_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibCoercionCS__Group_7_0__1__Impl

-	rule__LibCoercionCS__Group_7_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Group_7_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getAlternatives_7_0_1()); }

-(rule__LibCoercionCS__Alternatives_7_0_1)*

-{ after(grammarAccess.getLibCoercionCSAccess().getAlternatives_7_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibCoercionCS__Group_7_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibCoercionCS__Group_7_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__Group_7_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getRightCurlyBracketKeyword_7_0_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getLibCoercionCSAccess().getRightCurlyBracketKeyword_7_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__LibIterationCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__0__Impl

-	rule__LibIterationCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getIterationKeyword_0()); }

-

-	'iteration' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getIterationKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__1__Impl

-	rule__LibIterationCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getNameAssignment_1()); }

-(rule__LibIterationCS__NameAssignment_1)

-{ after(grammarAccess.getLibIterationCSAccess().getNameAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__2__Impl

-	rule__LibIterationCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedSignatureAssignment_2()); }

-(rule__LibIterationCS__OwnedSignatureAssignment_2)?

-{ after(grammarAccess.getLibIterationCSAccess().getOwnedSignatureAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__3__Impl

-	rule__LibIterationCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getLeftParenthesisKeyword_3()); }

-

-	'(' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getLeftParenthesisKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__4__Impl

-	rule__LibIterationCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsAssignment_4()); }

-(rule__LibIterationCS__OwnedIteratorsAssignment_4)

-{ after(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__5__Impl

-	rule__LibIterationCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getGroup_5()); }

-(rule__LibIterationCS__Group_5__0)*

-{ after(grammarAccess.getLibIterationCSAccess().getGroup_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__6__Impl

-	rule__LibIterationCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getGroup_6()); }

-(rule__LibIterationCS__Group_6__0)?

-{ after(grammarAccess.getLibIterationCSAccess().getGroup_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__7__Impl

-	rule__LibIterationCS__Group__8

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getGroup_7()); }

-(rule__LibIterationCS__Group_7__0)?

-{ after(grammarAccess.getLibIterationCSAccess().getGroup_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group__8

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__8__Impl

-	rule__LibIterationCS__Group__9

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__8__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getRightParenthesisKeyword_8()); }

-

-	')' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getRightParenthesisKeyword_8()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group__9

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__9__Impl

-	rule__LibIterationCS__Group__10

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__9__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getColonKeyword_9()); }

-

-	':' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getColonKeyword_9()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group__10

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__10__Impl

-	rule__LibIterationCS__Group__11

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__10__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedTypeAssignment_10()); }

-(rule__LibIterationCS__OwnedTypeAssignment_10)

-{ after(grammarAccess.getLibIterationCSAccess().getOwnedTypeAssignment_10()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group__11

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__11__Impl

-	rule__LibIterationCS__Group__12

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__11__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getIsInvalidatingAssignment_11()); }

-(rule__LibIterationCS__IsInvalidatingAssignment_11)?

-{ after(grammarAccess.getLibIterationCSAccess().getIsInvalidatingAssignment_11()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group__12

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__12__Impl

-	rule__LibIterationCS__Group__13

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__12__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getIsValidatingAssignment_12()); }

-(rule__LibIterationCS__IsValidatingAssignment_12)?

-{ after(grammarAccess.getLibIterationCSAccess().getIsValidatingAssignment_12()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group__13

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__13__Impl

-	rule__LibIterationCS__Group__14

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__13__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getGroup_13()); }

-(rule__LibIterationCS__Group_13__0)?

-{ after(grammarAccess.getLibIterationCSAccess().getGroup_13()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group__14

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group__14__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group__14__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getAlternatives_14()); }

-(rule__LibIterationCS__Alternatives_14)

-{ after(grammarAccess.getLibIterationCSAccess().getAlternatives_14()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LibIterationCS__Group_5__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_5__0__Impl

-	rule__LibIterationCS__Group_5__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_5__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getCommaKeyword_5_0()); }

-

-	',' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getCommaKeyword_5_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group_5__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_5__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_5__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsAssignment_5_1()); }

-(rule__LibIterationCS__OwnedIteratorsAssignment_5_1)

-{ after(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsAssignment_5_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibIterationCS__Group_6__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_6__0__Impl

-	rule__LibIterationCS__Group_6__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_6__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getSemicolonKeyword_6_0()); }

-

-	';' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getSemicolonKeyword_6_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group_6__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_6__1__Impl

-	rule__LibIterationCS__Group_6__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_6__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAssignment_6_1()); }

-(rule__LibIterationCS__OwnedAccumulatorsAssignment_6_1)

-{ after(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAssignment_6_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group_6__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_6__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_6__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getGroup_6_2()); }

-(rule__LibIterationCS__Group_6_2__0)*

-{ after(grammarAccess.getLibIterationCSAccess().getGroup_6_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__LibIterationCS__Group_6_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_6_2__0__Impl

-	rule__LibIterationCS__Group_6_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_6_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getCommaKeyword_6_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getCommaKeyword_6_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group_6_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_6_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_6_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAssignment_6_2_1()); }

-(rule__LibIterationCS__OwnedAccumulatorsAssignment_6_2_1)

-{ after(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAssignment_6_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibIterationCS__Group_7__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_7__0__Impl

-	rule__LibIterationCS__Group_7__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_7__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getVerticalLineKeyword_7_0()); }

-

-	'|' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getVerticalLineKeyword_7_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group_7__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_7__1__Impl

-	rule__LibIterationCS__Group_7__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_7__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedParametersAssignment_7_1()); }

-(rule__LibIterationCS__OwnedParametersAssignment_7_1)

-{ after(grammarAccess.getLibIterationCSAccess().getOwnedParametersAssignment_7_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group_7__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_7__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_7__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getGroup_7_2()); }

-(rule__LibIterationCS__Group_7_2__0)*

-{ after(grammarAccess.getLibIterationCSAccess().getGroup_7_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__LibIterationCS__Group_7_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_7_2__0__Impl

-	rule__LibIterationCS__Group_7_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_7_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getCommaKeyword_7_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getCommaKeyword_7_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group_7_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_7_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_7_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedParametersAssignment_7_2_1()); }

-(rule__LibIterationCS__OwnedParametersAssignment_7_2_1)

-{ after(grammarAccess.getLibIterationCSAccess().getOwnedParametersAssignment_7_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibIterationCS__Group_13__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_13__0__Impl

-	rule__LibIterationCS__Group_13__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_13__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getEqualsSignGreaterThanSignKeyword_13_0()); }

-

-	'=>' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getEqualsSignGreaterThanSignKeyword_13_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group_13__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_13__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_13__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getImplementationAssignment_13_1()); }

-(rule__LibIterationCS__ImplementationAssignment_13_1)

-{ after(grammarAccess.getLibIterationCSAccess().getImplementationAssignment_13_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibIterationCS__Group_14_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_14_0__0__Impl

-	rule__LibIterationCS__Group_14_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_14_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getLeftCurlyBracketKeyword_14_0_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getLeftCurlyBracketKeyword_14_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group_14_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_14_0__1__Impl

-	rule__LibIterationCS__Group_14_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_14_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getAlternatives_14_0_1()); }

-(rule__LibIterationCS__Alternatives_14_0_1)*

-{ after(grammarAccess.getLibIterationCSAccess().getAlternatives_14_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibIterationCS__Group_14_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibIterationCS__Group_14_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__Group_14_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getRightCurlyBracketKeyword_14_0_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getRightCurlyBracketKeyword_14_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__IteratorCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IteratorCS__Group__0__Impl

-	rule__IteratorCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IteratorCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIteratorCSAccess().getNameAssignment_0()); }

-(rule__IteratorCS__NameAssignment_0)

-{ after(grammarAccess.getIteratorCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IteratorCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IteratorCS__Group__1__Impl

-	rule__IteratorCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IteratorCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIteratorCSAccess().getColonKeyword_1()); }

-

-	':' 

-

-{ after(grammarAccess.getIteratorCSAccess().getColonKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IteratorCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IteratorCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IteratorCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIteratorCSAccess().getOwnedTypeAssignment_2()); }

-(rule__IteratorCS__OwnedTypeAssignment_2)

-{ after(grammarAccess.getIteratorCSAccess().getOwnedTypeAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__LambdaTypeCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaTypeCS__Group__0__Impl

-	rule__LambdaTypeCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getNameAssignment_0()); }

-(rule__LambdaTypeCS__NameAssignment_0)

-{ after(grammarAccess.getLambdaTypeCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaTypeCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaTypeCS__Group__1__Impl

-	rule__LambdaTypeCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedSignatureAssignment_1()); }

-(rule__LambdaTypeCS__OwnedSignatureAssignment_1)?

-{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedSignatureAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaTypeCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaTypeCS__Group__2__Impl

-	rule__LambdaTypeCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedContextTypeAssignment_2()); }

-(rule__LambdaTypeCS__OwnedContextTypeAssignment_2)

-{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedContextTypeAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaTypeCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaTypeCS__Group__3__Impl

-	rule__LambdaTypeCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getLeftParenthesisKeyword_3()); }

-

-	'(' 

-

-{ after(grammarAccess.getLambdaTypeCSAccess().getLeftParenthesisKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaTypeCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaTypeCS__Group__4__Impl

-	rule__LambdaTypeCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getGroup_4()); }

-(rule__LambdaTypeCS__Group_4__0)?

-{ after(grammarAccess.getLambdaTypeCSAccess().getGroup_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaTypeCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaTypeCS__Group__5__Impl

-	rule__LambdaTypeCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getRightParenthesisKeyword_5()); }

-

-	')' 

-

-{ after(grammarAccess.getLambdaTypeCSAccess().getRightParenthesisKeyword_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaTypeCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaTypeCS__Group__6__Impl

-	rule__LambdaTypeCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getColonKeyword_6()); }

-

-	':' 

-

-{ after(grammarAccess.getLambdaTypeCSAccess().getColonKeyword_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaTypeCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaTypeCS__Group__7__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedResultTypeAssignment_7()); }

-(rule__LambdaTypeCS__OwnedResultTypeAssignment_7)

-{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedResultTypeAssignment_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LambdaTypeCS__Group_4__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaTypeCS__Group_4__0__Impl

-	rule__LambdaTypeCS__Group_4__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__Group_4__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesAssignment_4_0()); }

-(rule__LambdaTypeCS__OwnedParameterTypesAssignment_4_0)

-{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesAssignment_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaTypeCS__Group_4__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaTypeCS__Group_4__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__Group_4__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getGroup_4_1()); }

-(rule__LambdaTypeCS__Group_4_1__0)*

-{ after(grammarAccess.getLambdaTypeCSAccess().getGroup_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LambdaTypeCS__Group_4_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaTypeCS__Group_4_1__0__Impl

-	rule__LambdaTypeCS__Group_4_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__Group_4_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getCommaKeyword_4_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getLambdaTypeCSAccess().getCommaKeyword_4_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaTypeCS__Group_4_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaTypeCS__Group_4_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__Group_4_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesAssignment_4_1_1()); }

-(rule__LambdaTypeCS__OwnedParameterTypesAssignment_4_1_1)

-{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesAssignment_4_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibraryCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibraryCS__Group__0__Impl

-	rule__LibraryCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibraryCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryCSAccess().getImportKeyword_0()); }

-

-	'import' 

-

-{ after(grammarAccess.getLibraryCSAccess().getImportKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibraryCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibraryCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibraryCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryCSAccess().getReferredPackageAssignment_1()); }

-(rule__LibraryCS__ReferredPackageAssignment_1)

-{ after(grammarAccess.getLibraryCSAccess().getReferredPackageAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibOperationCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group__0__Impl

-	rule__LibOperationCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getIsStaticAssignment_0()); }

-(rule__LibOperationCS__IsStaticAssignment_0)?

-{ after(grammarAccess.getLibOperationCSAccess().getIsStaticAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group__1__Impl

-	rule__LibOperationCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOperationKeyword_1()); }

-

-	'operation' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getOperationKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group__2__Impl

-	rule__LibOperationCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getNameAssignment_2()); }

-(rule__LibOperationCS__NameAssignment_2)

-{ after(grammarAccess.getLibOperationCSAccess().getNameAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group__3__Impl

-	rule__LibOperationCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedSignatureAssignment_3()); }

-(rule__LibOperationCS__OwnedSignatureAssignment_3)?

-{ after(grammarAccess.getLibOperationCSAccess().getOwnedSignatureAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group__4__Impl

-	rule__LibOperationCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getLeftParenthesisKeyword_4()); }

-

-	'(' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getLeftParenthesisKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group__5__Impl

-	rule__LibOperationCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getGroup_5()); }

-(rule__LibOperationCS__Group_5__0)?

-{ after(grammarAccess.getLibOperationCSAccess().getGroup_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group__6__Impl

-	rule__LibOperationCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getRightParenthesisKeyword_6()); }

-

-	')' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getRightParenthesisKeyword_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group__7__Impl

-	rule__LibOperationCS__Group__8

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getColonKeyword_7()); }

-

-	':' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getColonKeyword_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group__8

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group__8__Impl

-	rule__LibOperationCS__Group__9

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group__8__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedTypeAssignment_8()); }

-(rule__LibOperationCS__OwnedTypeAssignment_8)

-{ after(grammarAccess.getLibOperationCSAccess().getOwnedTypeAssignment_8()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group__9

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group__9__Impl

-	rule__LibOperationCS__Group__10

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group__9__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getIsValidatingAssignment_9()); }

-(rule__LibOperationCS__IsValidatingAssignment_9)?

-{ after(grammarAccess.getLibOperationCSAccess().getIsValidatingAssignment_9()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group__10

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group__10__Impl

-	rule__LibOperationCS__Group__11

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group__10__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getIsInvalidatingAssignment_10()); }

-(rule__LibOperationCS__IsInvalidatingAssignment_10)?

-{ after(grammarAccess.getLibOperationCSAccess().getIsInvalidatingAssignment_10()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group__11

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group__11__Impl

-	rule__LibOperationCS__Group__12

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group__11__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getGroup_11()); }

-(rule__LibOperationCS__Group_11__0)?

-{ after(grammarAccess.getLibOperationCSAccess().getGroup_11()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group__12

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group__12__Impl

-	rule__LibOperationCS__Group__13

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group__12__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getGroup_12()); }

-(rule__LibOperationCS__Group_12__0)?

-{ after(grammarAccess.getLibOperationCSAccess().getGroup_12()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group__13

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group__13__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group__13__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getAlternatives_13()); }

-(rule__LibOperationCS__Alternatives_13)

-{ after(grammarAccess.getLibOperationCSAccess().getAlternatives_13()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LibOperationCS__Group_5__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_5__0__Impl

-	rule__LibOperationCS__Group_5__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_5__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedParametersAssignment_5_0()); }

-(rule__LibOperationCS__OwnedParametersAssignment_5_0)

-{ after(grammarAccess.getLibOperationCSAccess().getOwnedParametersAssignment_5_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group_5__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_5__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_5__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getGroup_5_1()); }

-(rule__LibOperationCS__Group_5_1__0)*

-{ after(grammarAccess.getLibOperationCSAccess().getGroup_5_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibOperationCS__Group_5_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_5_1__0__Impl

-	rule__LibOperationCS__Group_5_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_5_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getCommaKeyword_5_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getCommaKeyword_5_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group_5_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_5_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_5_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedParametersAssignment_5_1_1()); }

-(rule__LibOperationCS__OwnedParametersAssignment_5_1_1)

-{ after(grammarAccess.getLibOperationCSAccess().getOwnedParametersAssignment_5_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibOperationCS__Group_11__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_11__0__Impl

-	rule__LibOperationCS__Group_11__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_11__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getPrecedenceKeyword_11_0()); }

-

-	'precedence' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getPrecedenceKeyword_11_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group_11__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_11__1__Impl

-	rule__LibOperationCS__Group_11__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_11__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getEqualsSignKeyword_11_1()); }

-

-	'=' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getEqualsSignKeyword_11_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group_11__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_11__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_11__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getPrecedenceAssignment_11_2()); }

-(rule__LibOperationCS__PrecedenceAssignment_11_2)

-{ after(grammarAccess.getLibOperationCSAccess().getPrecedenceAssignment_11_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__LibOperationCS__Group_12__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_12__0__Impl

-	rule__LibOperationCS__Group_12__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_12__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getEqualsSignGreaterThanSignKeyword_12_0()); }

-

-	'=>' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getEqualsSignGreaterThanSignKeyword_12_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group_12__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_12__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_12__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getImplementationAssignment_12_1()); }

-(rule__LibOperationCS__ImplementationAssignment_12_1)

-{ after(grammarAccess.getLibOperationCSAccess().getImplementationAssignment_12_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibOperationCS__Group_13_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_13_0__0__Impl

-	rule__LibOperationCS__Group_13_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_13_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getLeftCurlyBracketKeyword_13_0_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getLeftCurlyBracketKeyword_13_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group_13_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_13_0__1__Impl

-	rule__LibOperationCS__Group_13_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_13_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getAlternatives_13_0_1()); }

-(rule__LibOperationCS__Alternatives_13_0_1)*

-{ after(grammarAccess.getLibOperationCSAccess().getAlternatives_13_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group_13_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_13_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_13_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getRightCurlyBracketKeyword_13_0_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getRightCurlyBracketKeyword_13_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__LibOperationCS__Group_13_0_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_13_0_1_1__0__Impl

-	rule__LibOperationCS__Group_13_0_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_13_0_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getBodyKeyword_13_0_1_1_0()); }

-

-	'body' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getBodyKeyword_13_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group_13_0_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_13_0_1_1__1__Impl

-	rule__LibOperationCS__Group_13_0_1_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_13_0_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getUnrestrictedNameParserRuleCall_13_0_1_1_1()); }

-(	ruleUnrestrictedName)?

-{ after(grammarAccess.getLibOperationCSAccess().getUnrestrictedNameParserRuleCall_13_0_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group_13_0_1_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_13_0_1_1__2__Impl

-	rule__LibOperationCS__Group_13_0_1_1__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_13_0_1_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getColonKeyword_13_0_1_1_2()); }

-

-	':' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getColonKeyword_13_0_1_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group_13_0_1_1__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_13_0_1_1__3__Impl

-	rule__LibOperationCS__Group_13_0_1_1__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_13_0_1_1__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedBodyExpressionsAssignment_13_0_1_1_3()); }

-(rule__LibOperationCS__OwnedBodyExpressionsAssignment_13_0_1_1_3)

-{ after(grammarAccess.getLibOperationCSAccess().getOwnedBodyExpressionsAssignment_13_0_1_1_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibOperationCS__Group_13_0_1_1__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibOperationCS__Group_13_0_1_1__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__Group_13_0_1_1__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getSemicolonKeyword_13_0_1_1_4()); }

-

-	';' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getSemicolonKeyword_13_0_1_1_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LibPackageCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPackageCS__Group__0__Impl

-	rule__LibPackageCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getLibraryKeyword_0()); }

-

-	'library' 

-

-{ after(grammarAccess.getLibPackageCSAccess().getLibraryKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPackageCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPackageCS__Group__1__Impl

-	rule__LibPackageCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getNameAssignment_1()); }

-(rule__LibPackageCS__NameAssignment_1)

-{ after(grammarAccess.getLibPackageCSAccess().getNameAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPackageCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPackageCS__Group__2__Impl

-	rule__LibPackageCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getGroup_2()); }

-(rule__LibPackageCS__Group_2__0)?

-{ after(grammarAccess.getLibPackageCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPackageCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPackageCS__Group__3__Impl

-	rule__LibPackageCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getLeftCurlyBracketKeyword_3()); }

-

-	'{' 

-

-{ after(grammarAccess.getLibPackageCSAccess().getLeftCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPackageCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPackageCS__Group__4__Impl

-	rule__LibPackageCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getAlternatives_4()); }

-(rule__LibPackageCS__Alternatives_4)*

-{ after(grammarAccess.getLibPackageCSAccess().getAlternatives_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPackageCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPackageCS__Group__5__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getRightCurlyBracketKeyword_5()); }

-

-	'}' 

-

-{ after(grammarAccess.getLibPackageCSAccess().getRightCurlyBracketKeyword_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LibPackageCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPackageCS__Group_2__0__Impl

-	rule__LibPackageCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getLibPackageCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPackageCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPackageCS__Group_2__1__Impl

-	rule__LibPackageCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getNsPrefixAssignment_2_1()); }

-(rule__LibPackageCS__NsPrefixAssignment_2_1)

-{ after(grammarAccess.getLibPackageCSAccess().getNsPrefixAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPackageCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPackageCS__Group_2__2__Impl

-	rule__LibPackageCS__Group_2__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getEqualsSignKeyword_2_2()); }

-

-	'=' 

-

-{ after(grammarAccess.getLibPackageCSAccess().getEqualsSignKeyword_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPackageCS__Group_2__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPackageCS__Group_2__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__Group_2__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getNsURIAssignment_2_3()); }

-(rule__LibPackageCS__NsURIAssignment_2_3)

-{ after(grammarAccess.getLibPackageCSAccess().getNsURIAssignment_2_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__LibPackageCS__Group_4_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPackageCS__Group_4_1__0__Impl

-	rule__LibPackageCS__Group_4_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__Group_4_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getPrecedenceKeyword_4_1_0()); }

-

-	'precedence' 

-

-{ after(grammarAccess.getLibPackageCSAccess().getPrecedenceKeyword_4_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPackageCS__Group_4_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPackageCS__Group_4_1__1__Impl

-	rule__LibPackageCS__Group_4_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__Group_4_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-(

-{ before(grammarAccess.getLibPackageCSAccess().getOwnedPrecedencesAssignment_4_1_1()); }

-(rule__LibPackageCS__OwnedPrecedencesAssignment_4_1_1)

-{ after(grammarAccess.getLibPackageCSAccess().getOwnedPrecedencesAssignment_4_1_1()); }

-)

-(

-{ before(grammarAccess.getLibPackageCSAccess().getOwnedPrecedencesAssignment_4_1_1()); }

-(rule__LibPackageCS__OwnedPrecedencesAssignment_4_1_1)*

-{ after(grammarAccess.getLibPackageCSAccess().getOwnedPrecedencesAssignment_4_1_1()); }

-)

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPackageCS__Group_4_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPackageCS__Group_4_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__Group_4_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getSemicolonKeyword_4_1_2()); }

-

-	';' 

-

-{ after(grammarAccess.getLibPackageCSAccess().getSemicolonKeyword_4_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PackageCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group__0__Impl

-	rule__PackageCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getPackageKeyword_0()); }

-

-	'package' 

-

-{ after(grammarAccess.getPackageCSAccess().getPackageKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group__1__Impl

-	rule__PackageCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getNameAssignment_1()); }

-(rule__PackageCS__NameAssignment_1)

-{ after(grammarAccess.getPackageCSAccess().getNameAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group__2__Impl

-	rule__PackageCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getGroup_2()); }

-(rule__PackageCS__Group_2__0)?

-{ after(grammarAccess.getPackageCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group__3__Impl

-	rule__PackageCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getLeftCurlyBracketKeyword_3()); }

-

-	'{' 

-

-{ after(grammarAccess.getPackageCSAccess().getLeftCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group__4__Impl

-	rule__PackageCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getAlternatives_4()); }

-(rule__PackageCS__Alternatives_4)*

-{ after(grammarAccess.getPackageCSAccess().getAlternatives_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group__5__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getRightCurlyBracketKeyword_5()); }

-

-	'}' 

-

-{ after(grammarAccess.getPackageCSAccess().getRightCurlyBracketKeyword_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__PackageCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group_2__0__Impl

-	rule__PackageCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getPackageCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group_2__1__Impl

-	rule__PackageCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getNsPrefixAssignment_2_1()); }

-(rule__PackageCS__NsPrefixAssignment_2_1)

-{ after(grammarAccess.getPackageCSAccess().getNsPrefixAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group_2__2__Impl

-	rule__PackageCS__Group_2__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getEqualsSignKeyword_2_2()); }

-

-	'=' 

-

-{ after(grammarAccess.getPackageCSAccess().getEqualsSignKeyword_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PackageCS__Group_2__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PackageCS__Group_2__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__Group_2__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getNsURIAssignment_2_3()); }

-(rule__PackageCS__NsURIAssignment_2_3)

-{ after(grammarAccess.getPackageCSAccess().getNsURIAssignment_2_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__ParameterCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group__0__Impl

-	rule__ParameterCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getNameAssignment_0()); }

-(rule__ParameterCS__NameAssignment_0)

-{ after(grammarAccess.getParameterCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ParameterCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group__1__Impl

-	rule__ParameterCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getColonKeyword_1()); }

-

-	':' 

-

-{ after(grammarAccess.getParameterCSAccess().getColonKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ParameterCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ParameterCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getOwnedTypeAssignment_2()); }

-(rule__ParameterCS__OwnedTypeAssignment_2)

-{ after(grammarAccess.getParameterCSAccess().getOwnedTypeAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__LibPropertyCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPropertyCS__Group__0__Impl

-	rule__LibPropertyCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getIsStaticAssignment_0()); }

-(rule__LibPropertyCS__IsStaticAssignment_0)?

-{ after(grammarAccess.getLibPropertyCSAccess().getIsStaticAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPropertyCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPropertyCS__Group__1__Impl

-	rule__LibPropertyCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getPropertyKeyword_1()); }

-

-	'property' 

-

-{ after(grammarAccess.getLibPropertyCSAccess().getPropertyKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPropertyCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPropertyCS__Group__2__Impl

-	rule__LibPropertyCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getNameAssignment_2()); }

-(rule__LibPropertyCS__NameAssignment_2)

-{ after(grammarAccess.getLibPropertyCSAccess().getNameAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPropertyCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPropertyCS__Group__3__Impl

-	rule__LibPropertyCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getColonKeyword_3()); }

-

-	':' 

-

-{ after(grammarAccess.getLibPropertyCSAccess().getColonKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPropertyCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPropertyCS__Group__4__Impl

-	rule__LibPropertyCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getOwnedTypeAssignment_4()); }

-(rule__LibPropertyCS__OwnedTypeAssignment_4)

-{ after(grammarAccess.getLibPropertyCSAccess().getOwnedTypeAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPropertyCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPropertyCS__Group__5__Impl

-	rule__LibPropertyCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getGroup_5()); }

-(rule__LibPropertyCS__Group_5__0)?

-{ after(grammarAccess.getLibPropertyCSAccess().getGroup_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPropertyCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPropertyCS__Group__6__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getAlternatives_6()); }

-(rule__LibPropertyCS__Alternatives_6)

-{ after(grammarAccess.getLibPropertyCSAccess().getAlternatives_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LibPropertyCS__Group_5__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPropertyCS__Group_5__0__Impl

-	rule__LibPropertyCS__Group_5__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__Group_5__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getEqualsSignGreaterThanSignKeyword_5_0()); }

-

-	'=>' 

-

-{ after(grammarAccess.getLibPropertyCSAccess().getEqualsSignGreaterThanSignKeyword_5_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPropertyCS__Group_5__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPropertyCS__Group_5__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__Group_5__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getImplementationAssignment_5_1()); }

-(rule__LibPropertyCS__ImplementationAssignment_5_1)

-{ after(grammarAccess.getLibPropertyCSAccess().getImplementationAssignment_5_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LibPropertyCS__Group_6_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPropertyCS__Group_6_0__0__Impl

-	rule__LibPropertyCS__Group_6_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__Group_6_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getLeftCurlyBracketKeyword_6_0_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getLibPropertyCSAccess().getLeftCurlyBracketKeyword_6_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPropertyCS__Group_6_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPropertyCS__Group_6_0__1__Impl

-	rule__LibPropertyCS__Group_6_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__Group_6_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getOwnedAnnotationsAssignment_6_0_1()); }

-(rule__LibPropertyCS__OwnedAnnotationsAssignment_6_0_1)*

-{ after(grammarAccess.getLibPropertyCSAccess().getOwnedAnnotationsAssignment_6_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LibPropertyCS__Group_6_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LibPropertyCS__Group_6_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__Group_6_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getRightCurlyBracketKeyword_6_0_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getLibPropertyCSAccess().getRightCurlyBracketKeyword_6_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PostCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostCS__Group__0__Impl

-	rule__PostCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostCSAccess().getStereotypeAssignment_0()); }

-(rule__PostCS__StereotypeAssignment_0)

-{ after(grammarAccess.getPostCSAccess().getStereotypeAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PostCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostCS__Group__1__Impl

-	rule__PostCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostCSAccess().getGroup_1()); }

-(rule__PostCS__Group_1__0)?

-{ after(grammarAccess.getPostCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PostCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostCS__Group__2__Impl

-	rule__PostCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostCSAccess().getColonKeyword_2()); }

-

-	':' 

-

-{ after(grammarAccess.getPostCSAccess().getColonKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PostCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostCS__Group__3__Impl

-	rule__PostCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostCSAccess().getOwnedSpecificationAssignment_3()); }

-(rule__PostCS__OwnedSpecificationAssignment_3)

-{ after(grammarAccess.getPostCSAccess().getOwnedSpecificationAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PostCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostCSAccess().getSemicolonKeyword_4()); }

-

-	';' 

-

-{ after(grammarAccess.getPostCSAccess().getSemicolonKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__PostCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostCS__Group_1__0__Impl

-	rule__PostCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostCSAccess().getNameAssignment_1_0()); }

-(rule__PostCS__NameAssignment_1_0)

-{ after(grammarAccess.getPostCSAccess().getNameAssignment_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PostCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostCSAccess().getGroup_1_1()); }

-(rule__PostCS__Group_1_1__0)?

-{ after(grammarAccess.getPostCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__PostCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostCS__Group_1_1__0__Impl

-	rule__PostCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostCSAccess().getLeftParenthesisKeyword_1_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getPostCSAccess().getLeftParenthesisKeyword_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PostCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostCS__Group_1_1__1__Impl

-	rule__PostCS__Group_1_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }

-(rule__PostCS__OwnedMessageSpecificationAssignment_1_1_1)

-{ after(grammarAccess.getPostCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PostCS__Group_1_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PostCS__Group_1_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostCS__Group_1_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostCSAccess().getRightParenthesisKeyword_1_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getPostCSAccess().getRightParenthesisKeyword_1_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PreCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreCS__Group__0__Impl

-	rule__PreCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreCSAccess().getStereotypeAssignment_0()); }

-(rule__PreCS__StereotypeAssignment_0)

-{ after(grammarAccess.getPreCSAccess().getStereotypeAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PreCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreCS__Group__1__Impl

-	rule__PreCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreCSAccess().getGroup_1()); }

-(rule__PreCS__Group_1__0)?

-{ after(grammarAccess.getPreCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PreCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreCS__Group__2__Impl

-	rule__PreCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreCSAccess().getColonKeyword_2()); }

-

-	':' 

-

-{ after(grammarAccess.getPreCSAccess().getColonKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PreCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreCS__Group__3__Impl

-	rule__PreCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreCSAccess().getOwnedSpecificationAssignment_3()); }

-(rule__PreCS__OwnedSpecificationAssignment_3)

-{ after(grammarAccess.getPreCSAccess().getOwnedSpecificationAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PreCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreCSAccess().getSemicolonKeyword_4()); }

-

-	';' 

-

-{ after(grammarAccess.getPreCSAccess().getSemicolonKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__PreCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreCS__Group_1__0__Impl

-	rule__PreCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreCSAccess().getNameAssignment_1_0()); }

-(rule__PreCS__NameAssignment_1_0)

-{ after(grammarAccess.getPreCSAccess().getNameAssignment_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PreCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreCSAccess().getGroup_1_1()); }

-(rule__PreCS__Group_1_1__0)?

-{ after(grammarAccess.getPreCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__PreCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreCS__Group_1_1__0__Impl

-	rule__PreCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreCSAccess().getLeftParenthesisKeyword_1_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getPreCSAccess().getLeftParenthesisKeyword_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PreCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreCS__Group_1_1__1__Impl

-	rule__PreCS__Group_1_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }

-(rule__PreCS__OwnedMessageSpecificationAssignment_1_1_1)

-{ after(grammarAccess.getPreCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PreCS__Group_1_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PreCS__Group_1_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreCS__Group_1_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreCSAccess().getRightParenthesisKeyword_1_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getPreCSAccess().getRightParenthesisKeyword_1_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PrecedenceCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrecedenceCS__Group__0__Impl

-	rule__PrecedenceCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrecedenceCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrecedenceCSAccess().getAlternatives_0()); }

-(rule__PrecedenceCS__Alternatives_0)

-{ after(grammarAccess.getPrecedenceCSAccess().getAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrecedenceCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrecedenceCS__Group__1__Impl

-	rule__PrecedenceCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrecedenceCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrecedenceCSAccess().getColonKeyword_1()); }

-

-	':' 

-

-{ after(grammarAccess.getPrecedenceCSAccess().getColonKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrecedenceCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrecedenceCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrecedenceCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrecedenceCSAccess().getNameAssignment_2()); }

-(rule__PrecedenceCS__NameAssignment_2)

-{ after(grammarAccess.getPrecedenceCSAccess().getNameAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TypedMultiplicityRefCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedMultiplicityRefCS__Group__0__Impl

-	rule__TypedMultiplicityRefCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedMultiplicityRefCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getAlternatives_0()); }

-(rule__TypedMultiplicityRefCS__Alternatives_0)

-{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypedMultiplicityRefCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedMultiplicityRefCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedMultiplicityRefCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityAssignment_1()); }

-(rule__TypedMultiplicityRefCS__OwnedMultiplicityAssignment_1)?

-{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypedTypeRefCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedTypeRefCS__Group_0__0__Impl

-	rule__TypedTypeRefCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getIsTypeofAssignment_0_0()); }

-(rule__TypedTypeRefCS__IsTypeofAssignment_0_0)

-{ after(grammarAccess.getTypedTypeRefCSAccess().getIsTypeofAssignment_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypedTypeRefCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedTypeRefCS__Group_0__1__Impl

-	rule__TypedTypeRefCS__Group_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getLeftParenthesisKeyword_0_1()); }

-

-	'(' 

-

-{ after(grammarAccess.getTypedTypeRefCSAccess().getLeftParenthesisKeyword_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypedTypeRefCS__Group_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedTypeRefCS__Group_0__2__Impl

-	rule__TypedTypeRefCS__Group_0__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Group_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0_2()); }

-(rule__TypedTypeRefCS__OwnedPathNameAssignment_0_2)

-{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypedTypeRefCS__Group_0__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedTypeRefCS__Group_0__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Group_0__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getRightParenthesisKeyword_0_3()); }

-

-	')' 

-

-{ after(grammarAccess.getTypedTypeRefCSAccess().getRightParenthesisKeyword_0_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TypedTypeRefCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedTypeRefCS__Group_1__0__Impl

-	rule__TypedTypeRefCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_1_0()); }

-(rule__TypedTypeRefCS__OwnedPathNameAssignment_1_0)

-{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypedTypeRefCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypedTypeRefCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1_1()); }

-(rule__TypedTypeRefCS__OwnedBindingAssignment_1_1)?

-{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TuplePartCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TuplePartCS__Group__0__Impl

-	rule__TuplePartCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }

-(rule__TuplePartCS__NameAssignment_0)

-{ after(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TuplePartCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TuplePartCS__Group__1__Impl

-	rule__TuplePartCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }

-

-	':' 

-

-{ after(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TuplePartCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TuplePartCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }

-(rule__TuplePartCS__OwnedTypeAssignment_2)

-{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__URIFirstPathElementCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIFirstPathElementCS__Group_1__0__Impl

-	rule__URIFirstPathElementCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }

-(

-

-)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__URIFirstPathElementCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__URIFirstPathElementCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }

-(rule__URIFirstPathElementCS__ReferredElementAssignment_1_1)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionTypeCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group__0__Impl

-	rule__CollectionTypeCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }

-(rule__CollectionTypeCS__NameAssignment_0)

-{ after(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionTypeCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }

-(rule__CollectionTypeCS__Group_1__0)?

-{ after(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionTypeCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group_1__0__Impl

-	rule__CollectionTypeCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionTypeCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group_1__1__Impl

-	rule__CollectionTypeCS__Group_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }

-(rule__CollectionTypeCS__OwnedTypeAssignment_1_1)

-{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionTypeCS__Group_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionTypeCS__Group_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__Group_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TupleTypeCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group__0__Impl

-	rule__TupleTypeCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }

-(rule__TupleTypeCS__NameAssignment_0)

-{ after(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }

-(rule__TupleTypeCS__Group_1__0)?

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TupleTypeCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1__0__Impl

-	rule__TupleTypeCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1__1__Impl

-	rule__TupleTypeCS__Group_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }

-(rule__TupleTypeCS__Group_1_1__0)?

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-

-	')' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TupleTypeCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1__0__Impl

-	rule__TupleTypeCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }

-(rule__TupleTypeCS__OwnedPartsAssignment_1_1_0)

-{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }

-(rule__TupleTypeCS__Group_1_1_1__0)*

-{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TupleTypeCS__Group_1_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1_1__0__Impl

-	rule__TupleTypeCS__Group_1_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleTypeCS__Group_1_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleTypeCS__Group_1_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__Group_1_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }

-(rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1)

-{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__0__Impl

-	rule__CollectionLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }

-(rule__CollectionLiteralExpCS__OwnedTypeAssignment_0)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__1__Impl

-	rule__CollectionLiteralExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__2__Impl

-	rule__CollectionLiteralExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }

-(rule__CollectionLiteralExpCS__Group_2__0)?

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__CollectionLiteralExpCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2__0__Impl

-	rule__CollectionLiteralExpCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }

-(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }

-(rule__CollectionLiteralExpCS__Group_2_1__0)*

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionLiteralExpCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2_1__0__Impl

-	rule__CollectionLiteralExpCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralExpCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralExpCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }

-(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1)

-{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionLiteralPartCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0__0__Impl

-	rule__CollectionLiteralPartCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }

-(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralPartCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }

-(rule__CollectionLiteralPartCS__Group_0_1__0)?

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionLiteralPartCS__Group_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0_1__0__Impl

-	rule__CollectionLiteralPartCS__Group_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }

-

-	'..' 

-

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionLiteralPartCS__Group_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionLiteralPartCS__Group_0_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__Group_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }

-(rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1)

-{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionPatternCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__0__Impl

-	rule__CollectionPatternCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }

-(rule__CollectionPatternCS__OwnedTypeAssignment_0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__1__Impl

-	rule__CollectionPatternCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__2__Impl

-	rule__CollectionPatternCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }

-(rule__CollectionPatternCS__Group_2__0)?

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__CollectionPatternCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2__0__Impl

-	rule__CollectionPatternCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }

-(rule__CollectionPatternCS__OwnedPartsAssignment_2_0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2__1__Impl

-	rule__CollectionPatternCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }

-(rule__CollectionPatternCS__Group_2_1__0)*

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }

-(rule__CollectionPatternCS__Group_2_2__0)

-{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__CollectionPatternCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_1__0__Impl

-	rule__CollectionPatternCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }

-(rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1)

-{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CollectionPatternCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_2__0__Impl

-	rule__CollectionPatternCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }

-

-	'++' 

-

-{ after(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CollectionPatternCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CollectionPatternCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }

-(rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1)

-{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ConstructorPartCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstructorPartCS__Group__0__Impl

-	rule__ConstructorPartCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }

-(rule__ConstructorPartCS__ReferredPropertyAssignment_0)

-{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ConstructorPartCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstructorPartCS__Group__1__Impl

-	rule__ConstructorPartCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }

-

-	'=' 

-

-{ after(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ConstructorPartCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ConstructorPartCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }

-(rule__ConstructorPartCS__OwnedInitExpressionAssignment_2)

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PatternExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PatternExpCS__Group__0__Impl

-	rule__PatternExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }

-(rule__PatternExpCS__PatternVariableNameAssignment_0)?

-{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PatternExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PatternExpCS__Group__1__Impl

-	rule__PatternExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }

-

-	':' 

-

-{ after(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PatternExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PatternExpCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }

-(rule__PatternExpCS__OwnedPatternTypeAssignment_2)

-{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__LambdaLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__0__Impl

-	rule__LambdaLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }

-

-	'Lambda' 

-

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__1__Impl

-	rule__LambdaLiteralExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaLiteralExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__2__Impl

-	rule__LambdaLiteralExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }

-(rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2)

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LambdaLiteralExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LambdaLiteralExpCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TupleLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__0__Impl

-	rule__TupleLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }

-

-	'Tuple' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__1__Impl

-	rule__TupleLiteralExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__2__Impl

-	rule__TupleLiteralExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }

-(rule__TupleLiteralExpCS__OwnedPartsAssignment_2)

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__3__Impl

-	rule__TupleLiteralExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }

-(rule__TupleLiteralExpCS__Group_3__0)*

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }

-

-	'}' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__TupleLiteralExpCS__Group_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group_3__0__Impl

-	rule__TupleLiteralExpCS__Group_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralExpCS__Group_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralExpCS__Group_3__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__Group_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }

-(rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1)

-{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TupleLiteralPartCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__0__Impl

-	rule__TupleLiteralPartCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }

-(rule__TupleLiteralPartCS__NameAssignment_0)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__1__Impl

-	rule__TupleLiteralPartCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }

-(rule__TupleLiteralPartCS__Group_1__0)?

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__2__Impl

-	rule__TupleLiteralPartCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }

-

-	'=' 

-

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }

-(rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TupleLiteralPartCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group_1__0__Impl

-	rule__TupleLiteralPartCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }

-

-	':' 

-

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TupleLiteralPartCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TupleLiteralPartCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }

-(rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1)

-{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__UnlimitedNaturalLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl

-	rule__UnlimitedNaturalLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__UnlimitedNaturalLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }

-

-	'*' 

-

-{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__InvalidLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvalidLiteralExpCS__Group__0__Impl

-	rule__InvalidLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvalidLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__InvalidLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__InvalidLiteralExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvalidLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }

-

-	'invalid' 

-

-{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NullLiteralExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NullLiteralExpCS__Group__0__Impl

-	rule__NullLiteralExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NullLiteralExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NullLiteralExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NullLiteralExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NullLiteralExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }

-

-	'null' 

-

-{ after(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeLiteralWithMultiplicityCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeLiteralWithMultiplicityCS__Group__0__Impl

-	rule__TypeLiteralWithMultiplicityCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralWithMultiplicityCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }

-	ruleTypeLiteralCS

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeLiteralWithMultiplicityCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeLiteralWithMultiplicityCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralWithMultiplicityCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }

-(rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1)?

-{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeNameExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group__0__Impl

-	rule__TypeNameExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-(rule__TypeNameExpCS__OwnedPathNameAssignment_0)

-{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }

-(rule__TypeNameExpCS__Group_1__0)?

-{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeNameExpCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1__0__Impl

-	rule__TypeNameExpCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }

-(rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0)

-{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }

-(rule__TypeNameExpCS__Group_1_1__0)?

-{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeNameExpCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1_1__0__Impl

-	rule__TypeNameExpCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }

-

-	'{' 

-

-{ after(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1_1__1__Impl

-	rule__TypeNameExpCS__Group_1_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }

-(rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1)

-{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeNameExpCS__Group_1_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeNameExpCS__Group_1_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__Group_1_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }

-

-	'}' 

-

-{ after(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TypeExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeExpCS__Group__0__Impl

-	rule__TypeExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }

-(rule__TypeExpCS__Alternatives_0)

-{ after(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }

-(rule__TypeExpCS__OwnedMultiplicityAssignment_1)?

-{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ExpCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0__0__Impl

-	rule__ExpCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }

-	rulePrefixedPrimaryExpCS

-{ after(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ExpCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getGroup_0_1()); }

-(rule__ExpCS__Group_0_1__0)?

-{ after(grammarAccess.getExpCSAccess().getGroup_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__ExpCS__Group_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0_1__0__Impl

-	rule__ExpCS__Group_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }

-(

-

-)

-{ after(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ExpCS__Group_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0_1__1__Impl

-	rule__ExpCS__Group_0_1__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }

-(rule__ExpCS__NameAssignment_0_1_1)

-{ after(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ExpCS__Group_0_1__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ExpCS__Group_0_1__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__Group_0_1__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }

-(rule__ExpCS__OwnedRightAssignment_0_1_2)

-{ after(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PrefixedLetExpCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedLetExpCS__Group_0__0__Impl

-	rule__PrefixedLetExpCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }

-(

-

-)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedLetExpCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedLetExpCS__Group_0__1__Impl

-	rule__PrefixedLetExpCS__Group_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }

-(rule__PrefixedLetExpCS__NameAssignment_0_1)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedLetExpCS__Group_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedLetExpCS__Group_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__Group_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }

-(rule__PrefixedLetExpCS__OwnedRightAssignment_0_2)

-{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PrefixedPrimaryExpCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedPrimaryExpCS__Group_0__0__Impl

-	rule__PrefixedPrimaryExpCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }

-(

-

-)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedPrimaryExpCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedPrimaryExpCS__Group_0__1__Impl

-	rule__PrefixedPrimaryExpCS__Group_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }

-(rule__PrefixedPrimaryExpCS__NameAssignment_0_1)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PrefixedPrimaryExpCS__Group_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PrefixedPrimaryExpCS__Group_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__Group_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }

-(rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2)

-{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NameExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__0__Impl

-	rule__NameExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-(rule__NameExpCS__OwnedPathNameAssignment_0)

-{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__1__Impl

-	rule__NameExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }

-(rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1)*

-{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__2__Impl

-	rule__NameExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }

-(rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2)?

-{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__3__Impl

-	rule__NameExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }

-(rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3)?

-{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getGroup_4()); }

-(rule__NameExpCS__Group_4__0)?

-{ after(grammarAccess.getNameExpCSAccess().getGroup_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__NameExpCS__Group_4__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group_4__0__Impl

-	rule__NameExpCS__Group_4__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group_4__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }

-(rule__NameExpCS__IsPreAssignment_4_0)

-{ after(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NameExpCS__Group_4__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NameExpCS__Group_4__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__Group_4__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }

-

-	'pre' 

-

-{ after(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CurlyBracketedClauseCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__0__Impl

-	rule__CurlyBracketedClauseCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__1__Impl

-	rule__CurlyBracketedClauseCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }

-

-	'{' 

-

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__2__Impl

-	rule__CurlyBracketedClauseCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }

-(rule__CurlyBracketedClauseCS__Alternatives_2)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }

-

-	'}' 

-

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__CurlyBracketedClauseCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0__0__Impl

-	rule__CurlyBracketedClauseCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }

-(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }

-(rule__CurlyBracketedClauseCS__Group_2_0_1__0)*

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl

-	rule__CurlyBracketedClauseCS__Group_2_0_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }

-

-	',' 

-

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }

-(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1)

-{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__0__Impl

-	rule__RoundBracketedClauseCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__1__Impl

-	rule__RoundBracketedClauseCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }

-

-	'(' 

-

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__2__Impl

-	rule__RoundBracketedClauseCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }

-(rule__RoundBracketedClauseCS__Group_2__0)?

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }

-

-	')' 

-

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__0__Impl

-	rule__RoundBracketedClauseCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__1__Impl

-	rule__RoundBracketedClauseCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__2__Impl

-	rule__RoundBracketedClauseCS__Group_2__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }

-(rule__RoundBracketedClauseCS__Group_2_2__0)?

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }

-(rule__RoundBracketedClauseCS__Group_2_3__0)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_2__0__Impl

-	rule__RoundBracketedClauseCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__RoundBracketedClauseCS__Group_2_3__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_3__0__Impl

-	rule__RoundBracketedClauseCS__Group_2_3__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_3__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0)

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__RoundBracketedClauseCS__Group_2_3__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__RoundBracketedClauseCS__Group_2_3__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__Group_2_3__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }

-(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1)*

-{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__SquareBracketedClauseCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__0__Impl

-	rule__SquareBracketedClauseCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }

-

-	'[' 

-

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__1__Impl

-	rule__SquareBracketedClauseCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }

-(rule__SquareBracketedClauseCS__OwnedTermsAssignment_1)

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__2__Impl

-	rule__SquareBracketedClauseCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }

-(rule__SquareBracketedClauseCS__Group_2__0)*

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }

-

-	']' 

-

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__SquareBracketedClauseCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group_2__0__Impl

-	rule__SquareBracketedClauseCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SquareBracketedClauseCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SquareBracketedClauseCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }

-(rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1)

-{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0__0__Impl

-	rule__NavigatingArgCS__Group_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }

-(rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }

-(rule__NavigatingArgCS__Alternatives_0_1)?

-{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0_1_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0__0__Impl

-	rule__NavigatingArgCS__Group_0_1_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0__1__Impl

-	rule__NavigatingArgCS__Group_0_1_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }

-(rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }

-(rule__NavigatingArgCS__Group_0_1_0_2__0)?

-{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0_1_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0_2__0__Impl

-	rule__NavigatingArgCS__Group_0_1_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }

-(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_0_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_1__0__Impl

-	rule__NavigatingArgCS__Group_0_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }

-

-	'in' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_0_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_0_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_0_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }

-(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingArgCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_1__0__Impl

-	rule__NavigatingArgCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingArgCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingArgCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }

-(rule__NavigatingArgCS__OwnedTypeAssignment_1_1)

-{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingBarArgCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group__0__Impl

-	rule__NavigatingBarArgCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }

-(rule__NavigatingBarArgCS__PrefixAssignment_0)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group__1__Impl

-	rule__NavigatingBarArgCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-(rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }

-(rule__NavigatingBarArgCS__Group_2__0)?

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingBarArgCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2__0__Impl

-	rule__NavigatingBarArgCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2__1__Impl

-	rule__NavigatingBarArgCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }

-(rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }

-(rule__NavigatingBarArgCS__Group_2_2__0)?

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingBarArgCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2_2__0__Impl

-	rule__NavigatingBarArgCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingBarArgCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingBarArgCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-(rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1)

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group__0__Impl

-	rule__NavigatingCommaArgCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }

-(rule__NavigatingCommaArgCS__PrefixAssignment_0)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group__1__Impl

-	rule__NavigatingCommaArgCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-(rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }

-(rule__NavigatingCommaArgCS__Alternatives_2)?

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0__0__Impl

-	rule__NavigatingCommaArgCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0__1__Impl

-	rule__NavigatingCommaArgCS__Group_2_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }

-(rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }

-(rule__NavigatingCommaArgCS__Group_2_0_2__0)?

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group_2_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl

-	rule__NavigatingCommaArgCS__Group_2_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }

-(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingCommaArgCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_1__0__Impl

-	rule__NavigatingCommaArgCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }

-

-	'in' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingCommaArgCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingCommaArgCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }

-(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1)

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NavigatingSemiArgCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group__0__Impl

-	rule__NavigatingSemiArgCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }

-(rule__NavigatingSemiArgCS__PrefixAssignment_0)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group__1__Impl

-	rule__NavigatingSemiArgCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-(rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }

-(rule__NavigatingSemiArgCS__Group_2__0)?

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingSemiArgCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2__0__Impl

-	rule__NavigatingSemiArgCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2__1__Impl

-	rule__NavigatingSemiArgCS__Group_2__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }

-(rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group_2__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }

-(rule__NavigatingSemiArgCS__Group_2_2__0)?

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__NavigatingSemiArgCS__Group_2_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2_2__0__Impl

-	rule__NavigatingSemiArgCS__Group_2_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-

-	'=' 

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NavigatingSemiArgCS__Group_2_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NavigatingSemiArgCS__Group_2_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__Group_2_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-(rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1)

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__IfExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__0__Impl

-	rule__IfExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }

-

-	'if' 

-

-{ after(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__1__Impl

-	rule__IfExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }

-(rule__IfExpCS__OwnedConditionAssignment_1)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__2__Impl

-	rule__IfExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }

-

-	'then' 

-

-{ after(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__3__Impl

-	rule__IfExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-(rule__IfExpCS__OwnedThenExpressionAssignment_3)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__4__Impl

-	rule__IfExpCS__Group__5

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }

-(rule__IfExpCS__OwnedIfThenExpressionsAssignment_4)*

-{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__5__Impl

-	rule__IfExpCS__Group__6

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__5__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }

-

-	'else' 

-

-{ after(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__6__Impl

-	rule__IfExpCS__Group__7

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__6__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }

-(rule__IfExpCS__OwnedElseExpressionAssignment_6)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__IfExpCS__Group__7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__IfExpCS__Group__7__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__Group__7__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }

-

-	'endif' 

-

-{ after(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-rule__ElseIfThenExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__0__Impl

-	rule__ElseIfThenExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }

-

-	'elseif' 

-

-{ after(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ElseIfThenExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__1__Impl

-	rule__ElseIfThenExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }

-(rule__ElseIfThenExpCS__OwnedConditionAssignment_1)

-{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ElseIfThenExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__2__Impl

-	rule__ElseIfThenExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }

-

-	'then' 

-

-{ after(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__ElseIfThenExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__ElseIfThenExpCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-(rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3)

-{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__LetExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__0__Impl

-	rule__LetExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }

-

-	'let' 

-

-{ after(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__1__Impl

-	rule__LetExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }

-(rule__LetExpCS__OwnedVariablesAssignment_1)

-{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__2__Impl

-	rule__LetExpCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getGroup_2()); }

-(rule__LetExpCS__Group_2__0)*

-{ after(grammarAccess.getLetExpCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__3__Impl

-	rule__LetExpCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }

-

-	'in' 

-

-{ after(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }

-(rule__LetExpCS__OwnedInExpressionAssignment_4)

-{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LetExpCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group_2__0__Impl

-	rule__LetExpCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetExpCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetExpCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }

-(rule__LetExpCS__OwnedVariablesAssignment_2_1)

-{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__LetVariableCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__0__Impl

-	rule__LetVariableCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }

-(rule__LetVariableCS__NameAssignment_0)

-{ after(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__1__Impl

-	rule__LetVariableCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }

-(rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1)?

-{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__2__Impl

-	rule__LetVariableCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getGroup_2()); }

-(rule__LetVariableCS__Group_2__0)?

-{ after(grammarAccess.getLetVariableCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__3__Impl

-	rule__LetVariableCS__Group__4

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }

-

-	'=' 

-

-{ after(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group__4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group__4__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group__4__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }

-(rule__LetVariableCS__OwnedInitExpressionAssignment_4)

-{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-

-

-rule__LetVariableCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group_2__0__Impl

-	rule__LetVariableCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }

-

-	':' 

-

-{ after(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__LetVariableCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__LetVariableCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }

-(rule__LetVariableCS__OwnedTypeAssignment_2_1)

-{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__NestedExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NestedExpCS__Group__0__Impl

-	rule__NestedExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NestedExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NestedExpCS__Group__1__Impl

-	rule__NestedExpCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }

-(rule__NestedExpCS__OwnedExpressionAssignment_1)

-{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__NestedExpCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__NestedExpCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }

-

-	')' 

-

-{ after(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__SelfExpCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SelfExpCS__Group__0__Impl

-	rule__SelfExpCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SelfExpCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__SelfExpCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__SelfExpCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SelfExpCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }

-

-	'self' 

-

-{ after(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__MultiplicityBoundsCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group__0__Impl

-	rule__MultiplicityBoundsCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }

-(rule__MultiplicityBoundsCS__LowerBoundAssignment_0)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityBoundsCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }

-(rule__MultiplicityBoundsCS__Group_1__0)?

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__MultiplicityBoundsCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group_1__0__Impl

-	rule__MultiplicityBoundsCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }

-

-	'..' 

-

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityBoundsCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityBoundsCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }

-(rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1)

-{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__MultiplicityCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityCS__Group__0__Impl

-	rule__MultiplicityCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }

-

-	'[' 

-

-{ after(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityCS__Group__1__Impl

-	rule__MultiplicityCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }

-(rule__MultiplicityCS__Alternatives_1)

-{ after(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__MultiplicityCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__MultiplicityCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }

-

-	']' 

-

-{ after(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__PathNameCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group__0__Impl

-	rule__PathNameCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-(rule__PathNameCS__OwnedPathElementsAssignment_0)

-{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PathNameCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getGroup_1()); }

-(rule__PathNameCS__Group_1__0)*

-{ after(grammarAccess.getPathNameCSAccess().getGroup_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__PathNameCS__Group_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group_1__0__Impl

-	rule__PathNameCS__Group_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }

-

-	'::' 

-

-{ after(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__PathNameCS__Group_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__PathNameCS__Group_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__Group_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-(rule__PathNameCS__OwnedPathElementsAssignment_1_1)

-{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TemplateBindingCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__0__Impl

-	rule__TemplateBindingCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__1__Impl

-	rule__TemplateBindingCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }

-(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1)

-{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__2__Impl

-	rule__TemplateBindingCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }

-(rule__TemplateBindingCS__Group_2__0)*

-{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }

-

-	')' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TemplateBindingCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_2__0__Impl

-	rule__TemplateBindingCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateBindingCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateBindingCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }

-(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1)

-{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TemplateSignatureCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group__0__Impl

-	rule__TemplateSignatureCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0()); }

-

-	'(' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group__1__Impl

-	rule__TemplateSignatureCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1()); }

-(rule__TemplateSignatureCS__OwnedParametersAssignment_1)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group__2__Impl

-	rule__TemplateSignatureCS__Group__3

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_2()); }

-(rule__TemplateSignatureCS__Group_2__0)*

-{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group__3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group__3__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group__3__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_3()); }

-

-	')' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_3()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-

-

-rule__TemplateSignatureCS__Group_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_2__0__Impl

-	rule__TemplateSignatureCS__Group_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_2_0()); }

-

-	',' 

-

-{ after(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TemplateSignatureCS__Group_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TemplateSignatureCS__Group_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__Group_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_2_1()); }

-(rule__TemplateSignatureCS__OwnedParametersAssignment_2_1)

-{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeParameterCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group__0__Impl

-	rule__TypeParameterCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }

-(rule__TypeParameterCS__NameAssignment_0)

-{ after(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }

-(rule__TypeParameterCS__Alternatives_1)?

-{ after(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__0__Impl

-	rule__TypeParameterCS__Group_1_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }

-

-	'extends' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__1__Impl

-	rule__TypeParameterCS__Group_1_0__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }

-(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }

-(rule__TypeParameterCS__Group_1_0_2__0)*

-{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_0_2__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0_2__0__Impl

-	rule__TypeParameterCS__Group_1_0_2__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0_2__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }

-

-	'&&' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_0_2__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_0_2__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_0_2__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }

-(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__TypeParameterCS__Group_1_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_1__0__Impl

-	rule__TypeParameterCS__Group_1_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }

-

-	'super' 

-

-{ after(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__TypeParameterCS__Group_1_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__TypeParameterCS__Group_1_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__Group_1_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }

-(rule__TypeParameterCS__OwnedSuperAssignment_1_1_1)

-{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__0__Impl

-	rule__WildcardTypeRefCS__Group__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }

-(

-

-)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__1__Impl

-	rule__WildcardTypeRefCS__Group__2

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }

-

-	'?' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group__2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group__2__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group__2__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }

-(rule__WildcardTypeRefCS__Alternatives_2)?

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group_2_0__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_0__0__Impl

-	rule__WildcardTypeRefCS__Group_2_0__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_0__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }

-

-	'extends' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group_2_0__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_0__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_0__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }

-(rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-rule__WildcardTypeRefCS__Group_2_1__0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_1__0__Impl

-	rule__WildcardTypeRefCS__Group_2_1__1

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_1__0__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }

-

-	'super' 

-

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-rule__WildcardTypeRefCS__Group_2_1__1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-	rule__WildcardTypeRefCS__Group_2_1__1__Impl

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__Group_2_1__1__Impl

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }

-(rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1)

-{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-

-

-

-rule__Library__OwnedLibrariesAssignment_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryAccess().getOwnedLibrariesLibraryCSParserRuleCall_0_0_0()); }

-	ruleLibraryCS{ after(grammarAccess.getLibraryAccess().getOwnedLibrariesLibraryCSParserRuleCall_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__Library__OwnedPackagesAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryAccess().getOwnedPackagesLibPackageCSParserRuleCall_1_0()); }

-	ruleLibPackageCS{ after(grammarAccess.getLibraryAccess().getOwnedPackagesLibPackageCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPathNameCS__OwnedPathElementsAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsLibPathElementCSParserRuleCall_0_0()); }

-	ruleLibPathElementCS{ after(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsLibPathElementCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPathNameCS__OwnedPathElementsAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsLibPathElementCSParserRuleCall_1_1_0()); }

-	ruleLibPathElementCS{ after(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsLibPathElementCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPathElementCS__ReferredElementAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-(

-{ before(grammarAccess.getLibPathElementCSAccess().getReferredElementNamedElementNameParserRuleCall_0_1()); }

-	ruleName{ after(grammarAccess.getLibPathElementCSAccess().getReferredElementNamedElementNameParserRuleCall_0_1()); }

-)

-{ after(grammarAccess.getLibPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AccumulatorCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAccumulatorCSAccess().getNameIdentifierParserRuleCall_0_0()); }

-	ruleIdentifier{ after(grammarAccess.getAccumulatorCSAccess().getNameIdentifierParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AccumulatorCS__OwnedTypeAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAccumulatorCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }

-	ruleTypedMultiplicityRefCS{ after(grammarAccess.getAccumulatorCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__NameAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getNameAlternatives_1_0()); }

-(rule__AnnotationCS__NameAlternatives_1_0)

-{ after(grammarAccess.getAnnotationCSAccess().getNameAlternatives_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__OwnedDetailsAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_1_0()); }

-	ruleDetailCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__OwnedDetailsAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_2_1_0()); }

-	ruleDetailCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__AnnotationCS__OwnedAnnotationsAssignment_3_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_3_0_1_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_3_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__NameAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getNameAnyNameParserRuleCall_1_0()); }

-	ruleAnyName{ after(grammarAccess.getLibClassCSAccess().getNameAnyNameParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__OwnedSignatureAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }

-	ruleTemplateSignatureCS{ after(grammarAccess.getLibClassCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__MetaclassNameAssignment_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getMetaclassNameMetaclassNameCSCrossReference_3_1_0()); }

-(

-{ before(grammarAccess.getLibClassCSAccess().getMetaclassNameMetaclassNameCSAnyNameParserRuleCall_3_1_0_1()); }

-	ruleAnyName{ after(grammarAccess.getLibClassCSAccess().getMetaclassNameMetaclassNameCSAnyNameParserRuleCall_3_1_0_1()); }

-)

-{ after(grammarAccess.getLibClassCSAccess().getMetaclassNameMetaclassNameCSCrossReference_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__OwnedSuperTypesAssignment_4_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__OwnedSuperTypesAssignment_4_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_2_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__OwnedOperationsAssignment_6_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getOwnedOperationsOperationCSParserRuleCall_6_0_0()); }

-	ruleOperationCS{ after(grammarAccess.getLibClassCSAccess().getOwnedOperationsOperationCSParserRuleCall_6_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__OwnedPropertiesAssignment_6_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getOwnedPropertiesLibPropertyCSParserRuleCall_6_1_0()); }

-	ruleLibPropertyCS{ after(grammarAccess.getLibClassCSAccess().getOwnedPropertiesLibPropertyCSParserRuleCall_6_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__OwnedConstraintsAssignment_6_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getOwnedConstraintsInvCSParserRuleCall_6_2_0()); }

-	ruleInvCS{ after(grammarAccess.getLibClassCSAccess().getOwnedConstraintsInvCSParserRuleCall_6_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibClassCS__OwnedAnnotationsAssignment_6_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibClassCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_3_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getLibClassCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DetailCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDetailCSAccess().getNameAlternatives_0_0()); }

-(rule__DetailCS__NameAlternatives_0_0)

-{ after(grammarAccess.getDetailCSAccess().getNameAlternatives_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DetailCS__ValuesAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDetailCSAccess().getValuesAlternatives_2_0()); }

-(rule__DetailCS__ValuesAlternatives_2_0)

-{ after(grammarAccess.getDetailCSAccess().getValuesAlternatives_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__ValueAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getValueSINGLE_QUOTED_STRINGTerminalRuleCall_2_0()); }

-	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getDocumentationCSAccess().getValueSINGLE_QUOTED_STRINGTerminalRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__OwnedDetailsAssignment_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); }

-	ruleDetailCS{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__DocumentationCS__OwnedDetailsAssignment_3_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); }

-	ruleDetailCS{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvCS__StereotypeAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvCSAccess().getStereotypeInvKeyword_0_0()); }

-(

-{ before(grammarAccess.getInvCSAccess().getStereotypeInvKeyword_0_0()); }

-

-	'inv' 

-

-{ after(grammarAccess.getInvCSAccess().getStereotypeInvKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getInvCSAccess().getStereotypeInvKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvCS__NameAssignment_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getInvCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvCS__OwnedMessageSpecificationAssignment_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getInvCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__InvCS__OwnedSpecificationAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getInvCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getInvCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__NameAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getNameNameParserRuleCall_1_0()); }

-	ruleName{ after(grammarAccess.getLibCoercionCSAccess().getNameNameParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__OwnedTypeAssignment_5

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_5_0()); }

-	ruleTypedMultiplicityRefCS{ after(grammarAccess.getLibCoercionCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_5_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__ImplementationAssignment_6_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getImplementationJavaClassCSCrossReference_6_1_0()); }

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_6_1_0_1()); }

-	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getLibCoercionCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_6_1_0_1()); }

-)

-{ after(grammarAccess.getLibCoercionCSAccess().getImplementationJavaClassCSCrossReference_6_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__OwnedAnnotationsAssignment_7_0_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getLibCoercionCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__OwnedPreconditionsAssignment_7_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getOwnedPreconditionsPostCSParserRuleCall_7_0_1_1_0()); }

-	rulePostCS{ after(grammarAccess.getLibCoercionCSAccess().getOwnedPreconditionsPostCSParserRuleCall_7_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibCoercionCS__OwnedPostconditionsAssignment_7_0_1_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibCoercionCSAccess().getOwnedPostconditionsPreCSParserRuleCall_7_0_1_2_0()); }

-	rulePreCS{ after(grammarAccess.getLibCoercionCSAccess().getOwnedPostconditionsPreCSParserRuleCall_7_0_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__NameAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getNameNameParserRuleCall_1_0()); }

-	ruleName{ after(grammarAccess.getLibIterationCSAccess().getNameNameParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__OwnedSignatureAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }

-	ruleTemplateSignatureCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__OwnedIteratorsAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsIteratorCSParserRuleCall_4_0()); }

-	ruleIteratorCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsIteratorCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__OwnedIteratorsAssignment_5_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsIteratorCSParserRuleCall_5_1_0()); }

-	ruleIteratorCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsIteratorCSParserRuleCall_5_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__OwnedAccumulatorsAssignment_6_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAccumulatorCSParserRuleCall_6_1_0()); }

-	ruleAccumulatorCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAccumulatorCSParserRuleCall_6_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__OwnedAccumulatorsAssignment_6_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAccumulatorCSParserRuleCall_6_2_1_0()); }

-	ruleAccumulatorCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAccumulatorCSParserRuleCall_6_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__OwnedParametersAssignment_7_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedParametersParameterCSParserRuleCall_7_1_0()); }

-	ruleParameterCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedParametersParameterCSParserRuleCall_7_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__OwnedParametersAssignment_7_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedParametersParameterCSParserRuleCall_7_2_1_0()); }

-	ruleParameterCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedParametersParameterCSParserRuleCall_7_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__OwnedTypeAssignment_10

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_10_0()); }

-	ruleTypedMultiplicityRefCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_10_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__IsInvalidatingAssignment_11

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getIsInvalidatingInvalidatingKeyword_11_0()); }

-(

-{ before(grammarAccess.getLibIterationCSAccess().getIsInvalidatingInvalidatingKeyword_11_0()); }

-

-	'invalidating' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getIsInvalidatingInvalidatingKeyword_11_0()); }

-)

-

-{ after(grammarAccess.getLibIterationCSAccess().getIsInvalidatingInvalidatingKeyword_11_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__IsValidatingAssignment_12

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getIsValidatingValidatingKeyword_12_0()); }

-(

-{ before(grammarAccess.getLibIterationCSAccess().getIsValidatingValidatingKeyword_12_0()); }

-

-	'validating' 

-

-{ after(grammarAccess.getLibIterationCSAccess().getIsValidatingValidatingKeyword_12_0()); }

-)

-

-{ after(grammarAccess.getLibIterationCSAccess().getIsValidatingValidatingKeyword_12_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__ImplementationAssignment_13_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getImplementationJavaClassCSCrossReference_13_1_0()); }

-(

-{ before(grammarAccess.getLibIterationCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_13_1_0_1()); }

-	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getLibIterationCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_13_1_0_1()); }

-)

-{ after(grammarAccess.getLibIterationCSAccess().getImplementationJavaClassCSCrossReference_13_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__OwnedAnnotationsAssignment_14_0_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_14_0_1_0_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_14_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__OwnedPreconditionsAssignment_14_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedPreconditionsPostCSParserRuleCall_14_0_1_1_0()); }

-	rulePostCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedPreconditionsPostCSParserRuleCall_14_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibIterationCS__OwnedPostconditionsAssignment_14_0_1_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibIterationCSAccess().getOwnedPostconditionsPreCSParserRuleCall_14_0_1_2_0()); }

-	rulePreCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedPostconditionsPreCSParserRuleCall_14_0_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IteratorCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIteratorCSAccess().getNameIdentifierParserRuleCall_0_0()); }

-	ruleIdentifier{ after(grammarAccess.getIteratorCSAccess().getNameIdentifierParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IteratorCS__OwnedTypeAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIteratorCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }

-	ruleTypedMultiplicityRefCS{ after(grammarAccess.getIteratorCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getNameLambdaKeyword_0_0()); }

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getNameLambdaKeyword_0_0()); }

-

-	'Lambda' 

-

-{ after(grammarAccess.getLambdaTypeCSAccess().getNameLambdaKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getLambdaTypeCSAccess().getNameLambdaKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__OwnedSignatureAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); }

-	ruleTemplateSignatureCS{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__OwnedContextTypeAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedContextTypeLambdaContextTypeRefCSParserRuleCall_2_0()); }

-	ruleLambdaContextTypeRefCS{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedContextTypeLambdaContextTypeRefCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__OwnedParameterTypesAssignment_4_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesTypedMultiplicityRefCSParserRuleCall_4_0_0()); }

-	ruleTypedMultiplicityRefCS{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesTypedMultiplicityRefCSParserRuleCall_4_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__OwnedParameterTypesAssignment_4_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesTypedMultiplicityRefCSParserRuleCall_4_1_1_0()); }

-	ruleTypedMultiplicityRefCS{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesTypedMultiplicityRefCSParserRuleCall_4_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaTypeCS__OwnedResultTypeAssignment_7

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedResultTypeTypedRefCSParserRuleCall_7_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedResultTypeTypedRefCSParserRuleCall_7_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaContextTypeRefCS__OwnedPathNameAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaContextTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_0()); }

-	ruleLibPathNameCS{ after(grammarAccess.getLambdaContextTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibraryCS__ReferredPackageAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_1_0()); }

-(

-{ before(grammarAccess.getLibraryCSAccess().getReferredPackagePackageURIParserRuleCall_1_0_1()); }

-	ruleURI{ after(grammarAccess.getLibraryCSAccess().getReferredPackagePackageURIParserRuleCall_1_0_1()); }

-)

-{ after(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__IsStaticAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getIsStaticStaticKeyword_0_0()); }

-(

-{ before(grammarAccess.getLibOperationCSAccess().getIsStaticStaticKeyword_0_0()); }

-

-	'static' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getIsStaticStaticKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getLibOperationCSAccess().getIsStaticStaticKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__NameAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getNameNameParserRuleCall_2_0()); }

-	ruleName{ after(grammarAccess.getLibOperationCSAccess().getNameNameParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__OwnedSignatureAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); }

-	ruleTemplateSignatureCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__OwnedParametersAssignment_5_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_0_0()); }

-	ruleParameterCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__OwnedParametersAssignment_5_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_1_1_0()); }

-	ruleParameterCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__OwnedTypeAssignment_8

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_8_0()); }

-	ruleTypedMultiplicityRefCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_8_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__IsValidatingAssignment_9

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getIsValidatingValidatingKeyword_9_0()); }

-(

-{ before(grammarAccess.getLibOperationCSAccess().getIsValidatingValidatingKeyword_9_0()); }

-

-	'validating' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getIsValidatingValidatingKeyword_9_0()); }

-)

-

-{ after(grammarAccess.getLibOperationCSAccess().getIsValidatingValidatingKeyword_9_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__IsInvalidatingAssignment_10

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getIsInvalidatingInvalidatingKeyword_10_0()); }

-(

-{ before(grammarAccess.getLibOperationCSAccess().getIsInvalidatingInvalidatingKeyword_10_0()); }

-

-	'invalidating' 

-

-{ after(grammarAccess.getLibOperationCSAccess().getIsInvalidatingInvalidatingKeyword_10_0()); }

-)

-

-{ after(grammarAccess.getLibOperationCSAccess().getIsInvalidatingInvalidatingKeyword_10_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__PrecedenceAssignment_11_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getPrecedencePrecedenceCrossReference_11_2_0()); }

-(

-{ before(grammarAccess.getLibOperationCSAccess().getPrecedencePrecedenceNameParserRuleCall_11_2_0_1()); }

-	ruleName{ after(grammarAccess.getLibOperationCSAccess().getPrecedencePrecedenceNameParserRuleCall_11_2_0_1()); }

-)

-{ after(grammarAccess.getLibOperationCSAccess().getPrecedencePrecedenceCrossReference_11_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__ImplementationAssignment_12_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getImplementationJavaClassCSCrossReference_12_1_0()); }

-(

-{ before(grammarAccess.getLibOperationCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_12_1_0_1()); }

-	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getLibOperationCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_12_1_0_1()); }

-)

-{ after(grammarAccess.getLibOperationCSAccess().getImplementationJavaClassCSCrossReference_12_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__OwnedAnnotationsAssignment_13_0_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_13_0_1_0_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_13_0_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__OwnedBodyExpressionsAssignment_13_0_1_1_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedBodyExpressionsSpecificationCSParserRuleCall_13_0_1_1_3_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedBodyExpressionsSpecificationCSParserRuleCall_13_0_1_1_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__OwnedPostconditionsAssignment_13_0_1_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedPostconditionsPostCSParserRuleCall_13_0_1_2_0()); }

-	rulePostCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedPostconditionsPostCSParserRuleCall_13_0_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibOperationCS__OwnedPreconditionsAssignment_13_0_1_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibOperationCSAccess().getOwnedPreconditionsPreCSParserRuleCall_13_0_1_3_0()); }

-	rulePreCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedPreconditionsPreCSParserRuleCall_13_0_1_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__NameAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getNameNameParserRuleCall_1_0()); }

-	ruleName{ after(grammarAccess.getLibPackageCSAccess().getNameNameParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__NsPrefixAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getNsPrefixIdentifierParserRuleCall_2_1_0()); }

-	ruleIdentifier{ after(grammarAccess.getLibPackageCSAccess().getNsPrefixIdentifierParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__NsURIAssignment_2_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getNsURIURIParserRuleCall_2_3_0()); }

-	ruleURI{ after(grammarAccess.getLibPackageCSAccess().getNsURIURIParserRuleCall_2_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__OwnedPackagesAssignment_4_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_0()); }

-	rulePackageCS{ after(grammarAccess.getLibPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__OwnedPrecedencesAssignment_4_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getOwnedPrecedencesPrecedenceCSParserRuleCall_4_1_1_0()); }

-	rulePrecedenceCS{ after(grammarAccess.getLibPackageCSAccess().getOwnedPrecedencesPrecedenceCSParserRuleCall_4_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__OwnedClassesAssignment_4_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_2_0()); }

-	ruleClassCS{ after(grammarAccess.getLibPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPackageCS__OwnedAnnotationsAssignment_4_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_3_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getLibPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__NameAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getNameNameParserRuleCall_1_0()); }

-	ruleName{ after(grammarAccess.getPackageCSAccess().getNameNameParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__NsPrefixAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getNsPrefixIdentifierParserRuleCall_2_1_0()); }

-	ruleIdentifier{ after(grammarAccess.getPackageCSAccess().getNsPrefixIdentifierParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__NsURIAssignment_2_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getNsURIURIParserRuleCall_2_3_0()); }

-	ruleURI{ after(grammarAccess.getPackageCSAccess().getNsURIURIParserRuleCall_2_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__OwnedPackagesAssignment_4_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_0()); }

-	rulePackageCS{ after(grammarAccess.getPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__OwnedClassesAssignment_4_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_1_0()); }

-	ruleClassCS{ after(grammarAccess.getPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PackageCS__OwnedAnnotationsAssignment_4_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_2_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getNameIdentifierParserRuleCall_0_0()); }

-	ruleIdentifier{ after(grammarAccess.getParameterCSAccess().getNameIdentifierParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ParameterCS__OwnedTypeAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getParameterCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }

-	ruleTypedMultiplicityRefCS{ after(grammarAccess.getParameterCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__IsStaticAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }

-

-	'static' 

-

-{ after(grammarAccess.getLibPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getLibPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__NameAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getNameNameParserRuleCall_2_0()); }

-	ruleName{ after(grammarAccess.getLibPropertyCSAccess().getNameNameParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__OwnedTypeAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_4_0()); }

-	ruleTypedMultiplicityRefCS{ after(grammarAccess.getLibPropertyCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__ImplementationAssignment_5_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getImplementationJavaClassCSCrossReference_5_1_0()); }

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0_1()); }

-	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getLibPropertyCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0_1()); }

-)

-{ after(grammarAccess.getLibPropertyCSAccess().getImplementationJavaClassCSCrossReference_5_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LibPropertyCS__OwnedAnnotationsAssignment_6_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLibPropertyCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0()); }

-	ruleAnnotationElementCS{ after(grammarAccess.getLibPropertyCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostCS__StereotypeAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostCSAccess().getStereotypePostKeyword_0_0()); }

-(

-{ before(grammarAccess.getPostCSAccess().getStereotypePostKeyword_0_0()); }

-

-	'post' 

-

-{ after(grammarAccess.getPostCSAccess().getStereotypePostKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getPostCSAccess().getStereotypePostKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostCS__NameAssignment_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getPostCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostCS__OwnedMessageSpecificationAssignment_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getPostCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PostCS__OwnedSpecificationAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPostCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getPostCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreCS__StereotypeAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreCSAccess().getStereotypePreKeyword_0_0()); }

-(

-{ before(grammarAccess.getPreCSAccess().getStereotypePreKeyword_0_0()); }

-

-	'pre' 

-

-{ after(grammarAccess.getPreCSAccess().getStereotypePreKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getPreCSAccess().getStereotypePreKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreCS__NameAssignment_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getPreCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreCS__OwnedMessageSpecificationAssignment_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getPreCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PreCS__OwnedSpecificationAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPreCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }

-	ruleSpecificationCS{ after(grammarAccess.getPreCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrecedenceCS__IsRightAssociativeAssignment_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrecedenceCSAccess().getIsRightAssociativeRightKeyword_0_1_0()); }

-(

-{ before(grammarAccess.getPrecedenceCSAccess().getIsRightAssociativeRightKeyword_0_1_0()); }

-

-	'right' 

-

-{ after(grammarAccess.getPrecedenceCSAccess().getIsRightAssociativeRightKeyword_0_1_0()); }

-)

-

-{ after(grammarAccess.getPrecedenceCSAccess().getIsRightAssociativeRightKeyword_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrecedenceCS__NameAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrecedenceCSAccess().getNameNameParserRuleCall_2_0()); }

-	ruleName{ after(grammarAccess.getPrecedenceCSAccess().getNameNameParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SpecificationCS__OwnedExpressionAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0()); }

-	ruleExpCS{ after(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedMultiplicityRefCS__OwnedMultiplicityAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-	ruleMultiplicityCS{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__IsTypeofAssignment_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getIsTypeofTypeofKeyword_0_0_0()); }

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getIsTypeofTypeofKeyword_0_0_0()); }

-

-	'typeof' 

-

-{ after(grammarAccess.getTypedTypeRefCSAccess().getIsTypeofTypeofKeyword_0_0_0()); }

-)

-

-{ after(grammarAccess.getTypedTypeRefCSAccess().getIsTypeofTypeofKeyword_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__OwnedPathNameAssignment_0_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_0_2_0()); }

-	ruleLibPathNameCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__OwnedPathNameAssignment_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_1_0_0()); }

-	ruleLibPathNameCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypedTypeRefCS__OwnedBindingAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_1_0()); }

-	ruleTemplateBindingCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getNameIdentifierParserRuleCall_0_0()); }

-	ruleIdentifier{ after(grammarAccess.getTuplePartCSAccess().getNameIdentifierParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TuplePartCS__OwnedTypeAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }

-	ruleTypedMultiplicityRefCS{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-

-

-rule__URIFirstPathElementCS__ReferredElementAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }

-)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__URIFirstPathElementCS__ReferredElementAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }

-(

-{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }

-	ruleURI{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }

-)

-{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrimitiveTypeCS__NameAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }

-	rulePrimitiveTypeIdentifier{ after(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }

-	ruleCollectionTypeIdentifier{ after(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionTypeCS__OwnedTypeAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-

-	'Tuple' 

-

-{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__OwnedPartsAssignment_1_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }

-	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }

-	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__OwnedTypeAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-	ruleCollectionTypeCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }

-	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }

-	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }

-	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }

-	rulePatternExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__OwnedTypeAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-	ruleCollectionTypeCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__OwnedPartsAssignment_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }

-	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }

-	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }

-	ruleIdentifier{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__ReferredPropertyAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }

-)

-{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ConstructorPartCS__OwnedInitExpressionAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }

-(rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0)

-{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__PatternVariableNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PatternExpCS__OwnedPatternTypeAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }

-	ruleExpCS{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__OwnedPartsAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }

-	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }

-	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }

-	ruleExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NumberLiteralExpCS__SymbolAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }

-	ruleNUMBER_LITERAL{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__StringLiteralExpCS__SegmentsAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }

-	ruleStringLiteral{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BooleanLiteralExpCS__SymbolAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-

-	'true' 

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__BooleanLiteralExpCS__SymbolAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-(

-{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-

-	'false' 

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-)

-

-{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-	ruleMultiplicityCS{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeLiteralExpCS__OwnedTypeAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }

-	ruleTypeLiteralWithMultiplicityCS{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__OwnedPathNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-	rulePathNameCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }

-	ruleCurlyBracketedClauseCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeExpCS__OwnedMultiplicityAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-	ruleMultiplicityCS{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__NameAssignment_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }

-	ruleBinaryOperatorName{ after(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ExpCS__OwnedRightAssignment_0_1_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }

-	ruleExpCS{ after(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__NameAssignment_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedLetExpCS__OwnedRightAssignment_0_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }

-	rulePrefixedLetExpCS{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__NameAssignment_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }

-	rulePrefixedPrimaryExpCS{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedPathNameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-	rulePathNameCS{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }

-	ruleSquareBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }

-	ruleRoundBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }

-	ruleCurlyBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NameExpCS__IsPreAssignment_4_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-(

-{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-

-	'@' 

-

-{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-)

-

-{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }

-	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }

-	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__CurlyBracketedClauseCS__ValueAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }

-	ruleStringLiteral{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }

-	ruleNavigatingArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }

-	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }

-	ruleNavigatingSemiArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }

-	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }

-	ruleNavigatingBarArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }

-	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__OwnedTermsAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }

-	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingArgCS__OwnedTypeAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__PrefixAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-

-	'|' 

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__PrefixAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-

-	',' 

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__PrefixAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-

-	';' 

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-)

-

-{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedConditionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }

-(rule__IfExpCS__OwnedConditionAlternatives_1_0)

-{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedThenExpressionAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedIfThenExpressionsAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }

-	ruleElseIfThenExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__IfExpCS__OwnedElseExpressionAssignment_6

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }

-	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__OwnedConditionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }

-	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__OwnedVariablesAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }

-	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__OwnedVariablesAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }

-	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetExpCS__OwnedInExpressionAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }

-	ruleExpCS{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }

-	ruleRoundBracketedClauseCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__OwnedTypeAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-	ruleTypeExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__LetVariableCS__OwnedInitExpressionAssignment_4

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }

-	ruleExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NestedExpCS__OwnedExpressionAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }

-	ruleExpCS{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__LowerBoundAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }

-	ruleLOWER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }

-	ruleUPPER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__MultiplicityStringCS__StringBoundsAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }

-(rule__MultiplicityStringCS__StringBoundsAlternatives_0)

-{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__OwnedPathElementsAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }

-	ruleFirstPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__PathNameCS__OwnedPathElementsAssignment_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }

-	ruleNextPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__FirstPathElementCS__ReferredElementAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-(

-{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }

-	ruleUnrestrictedName{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }

-)

-{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__NextPathElementCS__ReferredElementAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-(

-{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }

-	ruleUnreservedName{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }

-)

-{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }

-	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }

-	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }

-	ruleTypeRefCS{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__OwnedParametersAssignment_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_0()); }

-	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TemplateSignatureCS__OwnedParametersAssignment_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_2_1_0()); }

-	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__NameAssignment_0

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-	ruleUnrestrictedName{ after(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__TypeParameterCS__OwnedSuperAssignment_1_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1

-    @init {

-		int stackSize = keepStackSize();

-    }

-:

-(

-{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }

-	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }

-)

-

-;

-finally {

-	restoreStackSize(stackSize);

-}

-

-

-fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');

-

-fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');

-

-RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';

-

-RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';

-

-RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';

-

-RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;

-

-RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;

-

-RULE_INT : ('0'..'9')+;

-

-RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';

-

-RULE_SL_COMMENT : '--' ~(('\n'|'\r'))* ('\r'? '\n')?;

-

-RULE_WS : (' '|'\t'|'\r'|'\n')+;

-

-RULE_ANY_OTHER : .;

-

-

+/*
+ * generated by Xtext
+ */
+grammar InternalOCLstdlib;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.ocl.xtext.oclstdlib.ui.contentassist.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.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.eclipse.ocl.xtext.oclstdlib.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+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.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.ocl.xtext.oclstdlib.services.OCLstdlibGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private OCLstdlibGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(OCLstdlibGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleLibrary
+entryRuleLibrary 
+:
+{ before(grammarAccess.getLibraryRule()); }
+	 ruleLibrary
+{ after(grammarAccess.getLibraryRule()); } 
+	 EOF 
+;
+
+// Rule Library
+ruleLibrary
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLibraryAccess().getGroup()); }
+(rule__Library__Group__0)
+{ after(grammarAccess.getLibraryAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIdentifier
+entryRuleIdentifier 
+:
+{ before(grammarAccess.getIdentifierRule()); }
+	 ruleIdentifier
+{ after(grammarAccess.getIdentifierRule()); } 
+	 EOF 
+;
+
+// Rule Identifier
+ruleIdentifier
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIdentifierAccess().getAlternatives()); }
+(rule__Identifier__Alternatives)
+{ after(grammarAccess.getIdentifierAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRestrictedKeywords
+entryRuleRestrictedKeywords 
+:
+{ before(grammarAccess.getRestrictedKeywordsRule()); }
+	 ruleRestrictedKeywords
+{ after(grammarAccess.getRestrictedKeywordsRule()); } 
+	 EOF 
+;
+
+// Rule RestrictedKeywords
+ruleRestrictedKeywords
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getAlternatives()); }
+(rule__RestrictedKeywords__Alternatives)
+{ after(grammarAccess.getRestrictedKeywordsAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleName
+entryRuleName 
+:
+{ before(grammarAccess.getNameRule()); }
+	 ruleName
+{ after(grammarAccess.getNameRule()); } 
+	 EOF 
+;
+
+// Rule Name
+ruleName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNameAccess().getAlternatives()); }
+(rule__Name__Alternatives)
+{ after(grammarAccess.getNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAnyName
+entryRuleAnyName 
+:
+{ before(grammarAccess.getAnyNameRule()); }
+	 ruleAnyName
+{ after(grammarAccess.getAnyNameRule()); } 
+	 EOF 
+;
+
+// Rule AnyName
+ruleAnyName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAnyNameAccess().getAlternatives()); }
+(rule__AnyName__Alternatives)
+{ after(grammarAccess.getAnyNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLibPathNameCS
+entryRuleLibPathNameCS 
+:
+{ before(grammarAccess.getLibPathNameCSRule()); }
+	 ruleLibPathNameCS
+{ after(grammarAccess.getLibPathNameCSRule()); } 
+	 EOF 
+;
+
+// Rule LibPathNameCS
+ruleLibPathNameCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLibPathNameCSAccess().getGroup()); }
+(rule__LibPathNameCS__Group__0)
+{ after(grammarAccess.getLibPathNameCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLibPathElementCS
+entryRuleLibPathElementCS 
+:
+{ before(grammarAccess.getLibPathElementCSRule()); }
+	 ruleLibPathElementCS
+{ after(grammarAccess.getLibPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule LibPathElementCS
+ruleLibPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLibPathElementCSAccess().getReferredElementAssignment()); }
+(rule__LibPathElementCS__ReferredElementAssignment)
+{ after(grammarAccess.getLibPathElementCSAccess().getReferredElementAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAccumulatorCS
+entryRuleAccumulatorCS 
+:
+{ before(grammarAccess.getAccumulatorCSRule()); }
+	 ruleAccumulatorCS
+{ after(grammarAccess.getAccumulatorCSRule()); } 
+	 EOF 
+;
+
+// Rule AccumulatorCS
+ruleAccumulatorCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAccumulatorCSAccess().getGroup()); }
+(rule__AccumulatorCS__Group__0)
+{ after(grammarAccess.getAccumulatorCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAnnotationCS
+entryRuleAnnotationCS 
+:
+{ before(grammarAccess.getAnnotationCSRule()); }
+	 ruleAnnotationCS
+{ after(grammarAccess.getAnnotationCSRule()); } 
+	 EOF 
+;
+
+// Rule AnnotationCS
+ruleAnnotationCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getGroup()); }
+(rule__AnnotationCS__Group__0)
+{ after(grammarAccess.getAnnotationCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAnnotationElementCS
+entryRuleAnnotationElementCS 
+:
+{ before(grammarAccess.getAnnotationElementCSRule()); }
+	 ruleAnnotationElementCS
+{ after(grammarAccess.getAnnotationElementCSRule()); } 
+	 EOF 
+;
+
+// Rule AnnotationElementCS
+ruleAnnotationElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAnnotationElementCSAccess().getAlternatives()); }
+(rule__AnnotationElementCS__Alternatives)
+{ after(grammarAccess.getAnnotationElementCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLibClassCS
+entryRuleLibClassCS 
+:
+{ before(grammarAccess.getLibClassCSRule()); }
+	 ruleLibClassCS
+{ after(grammarAccess.getLibClassCSRule()); } 
+	 EOF 
+;
+
+// Rule LibClassCS
+ruleLibClassCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLibClassCSAccess().getGroup()); }
+(rule__LibClassCS__Group__0)
+{ after(grammarAccess.getLibClassCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleClassCS
+entryRuleClassCS 
+:
+{ before(grammarAccess.getClassCSRule()); }
+	 ruleClassCS
+{ after(grammarAccess.getClassCSRule()); } 
+	 EOF 
+;
+
+// Rule ClassCS
+ruleClassCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getClassCSAccess().getLibClassCSParserRuleCall()); }
+	ruleLibClassCS
+{ after(grammarAccess.getClassCSAccess().getLibClassCSParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDetailCS
+entryRuleDetailCS 
+:
+{ before(grammarAccess.getDetailCSRule()); }
+	 ruleDetailCS
+{ after(grammarAccess.getDetailCSRule()); } 
+	 EOF 
+;
+
+// Rule DetailCS
+ruleDetailCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDetailCSAccess().getGroup()); }
+(rule__DetailCS__Group__0)
+{ after(grammarAccess.getDetailCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDocumentationCS
+entryRuleDocumentationCS 
+:
+{ before(grammarAccess.getDocumentationCSRule()); }
+	 ruleDocumentationCS
+{ after(grammarAccess.getDocumentationCSRule()); } 
+	 EOF 
+;
+
+// Rule DocumentationCS
+ruleDocumentationCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getGroup()); }
+(rule__DocumentationCS__Group__0)
+{ after(grammarAccess.getDocumentationCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleInvCS
+entryRuleInvCS 
+:
+{ before(grammarAccess.getInvCSRule()); }
+	 ruleInvCS
+{ after(grammarAccess.getInvCSRule()); } 
+	 EOF 
+;
+
+// Rule InvCS
+ruleInvCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getInvCSAccess().getGroup()); }
+(rule__InvCS__Group__0)
+{ after(grammarAccess.getInvCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLibCoercionCS
+entryRuleLibCoercionCS 
+:
+{ before(grammarAccess.getLibCoercionCSRule()); }
+	 ruleLibCoercionCS
+{ after(grammarAccess.getLibCoercionCSRule()); } 
+	 EOF 
+;
+
+// Rule LibCoercionCS
+ruleLibCoercionCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getGroup()); }
+(rule__LibCoercionCS__Group__0)
+{ after(grammarAccess.getLibCoercionCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLibIterationCS
+entryRuleLibIterationCS 
+:
+{ before(grammarAccess.getLibIterationCSRule()); }
+	 ruleLibIterationCS
+{ after(grammarAccess.getLibIterationCSRule()); } 
+	 EOF 
+;
+
+// Rule LibIterationCS
+ruleLibIterationCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getGroup()); }
+(rule__LibIterationCS__Group__0)
+{ after(grammarAccess.getLibIterationCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIteratorCS
+entryRuleIteratorCS 
+:
+{ before(grammarAccess.getIteratorCSRule()); }
+	 ruleIteratorCS
+{ after(grammarAccess.getIteratorCSRule()); } 
+	 EOF 
+;
+
+// Rule IteratorCS
+ruleIteratorCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIteratorCSAccess().getGroup()); }
+(rule__IteratorCS__Group__0)
+{ after(grammarAccess.getIteratorCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLambdaTypeCS
+entryRuleLambdaTypeCS 
+:
+{ before(grammarAccess.getLambdaTypeCSRule()); }
+	 ruleLambdaTypeCS
+{ after(grammarAccess.getLambdaTypeCSRule()); } 
+	 EOF 
+;
+
+// Rule LambdaTypeCS
+ruleLambdaTypeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getGroup()); }
+(rule__LambdaTypeCS__Group__0)
+{ after(grammarAccess.getLambdaTypeCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLambdaContextTypeRefCS
+entryRuleLambdaContextTypeRefCS 
+:
+{ before(grammarAccess.getLambdaContextTypeRefCSRule()); }
+	 ruleLambdaContextTypeRefCS
+{ after(grammarAccess.getLambdaContextTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule LambdaContextTypeRefCS
+ruleLambdaContextTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLambdaContextTypeRefCSAccess().getOwnedPathNameAssignment()); }
+(rule__LambdaContextTypeRefCS__OwnedPathNameAssignment)
+{ after(grammarAccess.getLambdaContextTypeRefCSAccess().getOwnedPathNameAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLibraryCS
+entryRuleLibraryCS 
+:
+{ before(grammarAccess.getLibraryCSRule()); }
+	 ruleLibraryCS
+{ after(grammarAccess.getLibraryCSRule()); } 
+	 EOF 
+;
+
+// Rule LibraryCS
+ruleLibraryCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLibraryCSAccess().getGroup()); }
+(rule__LibraryCS__Group__0)
+{ after(grammarAccess.getLibraryCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOperationCS
+entryRuleOperationCS 
+:
+{ before(grammarAccess.getOperationCSRule()); }
+	 ruleOperationCS
+{ after(grammarAccess.getOperationCSRule()); } 
+	 EOF 
+;
+
+// Rule OperationCS
+ruleOperationCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOperationCSAccess().getAlternatives()); }
+(rule__OperationCS__Alternatives)
+{ after(grammarAccess.getOperationCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLibOperationCS
+entryRuleLibOperationCS 
+:
+{ before(grammarAccess.getLibOperationCSRule()); }
+	 ruleLibOperationCS
+{ after(grammarAccess.getLibOperationCSRule()); } 
+	 EOF 
+;
+
+// Rule LibOperationCS
+ruleLibOperationCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getGroup()); }
+(rule__LibOperationCS__Group__0)
+{ after(grammarAccess.getLibOperationCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLibPackageCS
+entryRuleLibPackageCS 
+:
+{ before(grammarAccess.getLibPackageCSRule()); }
+	 ruleLibPackageCS
+{ after(grammarAccess.getLibPackageCSRule()); } 
+	 EOF 
+;
+
+// Rule LibPackageCS
+ruleLibPackageCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getGroup()); }
+(rule__LibPackageCS__Group__0)
+{ after(grammarAccess.getLibPackageCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePackageCS
+entryRulePackageCS 
+:
+{ before(grammarAccess.getPackageCSRule()); }
+	 rulePackageCS
+{ after(grammarAccess.getPackageCSRule()); } 
+	 EOF 
+;
+
+// Rule PackageCS
+rulePackageCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPackageCSAccess().getGroup()); }
+(rule__PackageCS__Group__0)
+{ after(grammarAccess.getPackageCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleParameterCS
+entryRuleParameterCS 
+:
+{ before(grammarAccess.getParameterCSRule()); }
+	 ruleParameterCS
+{ after(grammarAccess.getParameterCSRule()); } 
+	 EOF 
+;
+
+// Rule ParameterCS
+ruleParameterCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getParameterCSAccess().getGroup()); }
+(rule__ParameterCS__Group__0)
+{ after(grammarAccess.getParameterCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLibPropertyCS
+entryRuleLibPropertyCS 
+:
+{ before(grammarAccess.getLibPropertyCSRule()); }
+	 ruleLibPropertyCS
+{ after(grammarAccess.getLibPropertyCSRule()); } 
+	 EOF 
+;
+
+// Rule LibPropertyCS
+ruleLibPropertyCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getGroup()); }
+(rule__LibPropertyCS__Group__0)
+{ after(grammarAccess.getLibPropertyCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePostCS
+entryRulePostCS 
+:
+{ before(grammarAccess.getPostCSRule()); }
+	 rulePostCS
+{ after(grammarAccess.getPostCSRule()); } 
+	 EOF 
+;
+
+// Rule PostCS
+rulePostCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPostCSAccess().getGroup()); }
+(rule__PostCS__Group__0)
+{ after(grammarAccess.getPostCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePreCS
+entryRulePreCS 
+:
+{ before(grammarAccess.getPreCSRule()); }
+	 rulePreCS
+{ after(grammarAccess.getPreCSRule()); } 
+	 EOF 
+;
+
+// Rule PreCS
+rulePreCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPreCSAccess().getGroup()); }
+(rule__PreCS__Group__0)
+{ after(grammarAccess.getPreCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrecedenceCS
+entryRulePrecedenceCS 
+:
+{ before(grammarAccess.getPrecedenceCSRule()); }
+	 rulePrecedenceCS
+{ after(grammarAccess.getPrecedenceCSRule()); } 
+	 EOF 
+;
+
+// Rule PrecedenceCS
+rulePrecedenceCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrecedenceCSAccess().getGroup()); }
+(rule__PrecedenceCS__Group__0)
+{ after(grammarAccess.getPrecedenceCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSpecificationCS
+entryRuleSpecificationCS 
+:
+{ before(grammarAccess.getSpecificationCSRule()); }
+	 ruleSpecificationCS
+{ after(grammarAccess.getSpecificationCSRule()); } 
+	 EOF 
+;
+
+// Rule SpecificationCS
+ruleSpecificationCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSpecificationCSAccess().getOwnedExpressionAssignment()); }
+(rule__SpecificationCS__OwnedExpressionAssignment)
+{ after(grammarAccess.getSpecificationCSAccess().getOwnedExpressionAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypedMultiplicityRefCS
+entryRuleTypedMultiplicityRefCS 
+:
+{ before(grammarAccess.getTypedMultiplicityRefCSRule()); }
+	 ruleTypedMultiplicityRefCS
+{ after(grammarAccess.getTypedMultiplicityRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypedMultiplicityRefCS
+ruleTypedMultiplicityRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getGroup()); }
+(rule__TypedMultiplicityRefCS__Group__0)
+{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypedRefCS
+entryRuleTypedRefCS 
+:
+{ before(grammarAccess.getTypedRefCSRule()); }
+	 ruleTypedRefCS
+{ after(grammarAccess.getTypedRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypedRefCS
+ruleTypedRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedRefCSAccess().getAlternatives()); }
+(rule__TypedRefCS__Alternatives)
+{ after(grammarAccess.getTypedRefCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypedTypeRefCS
+entryRuleTypedTypeRefCS 
+:
+{ before(grammarAccess.getTypedTypeRefCSRule()); }
+	 ruleTypedTypeRefCS
+{ after(grammarAccess.getTypedTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypedTypeRefCS
+ruleTypedTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getAlternatives()); }
+(rule__TypedTypeRefCS__Alternatives)
+{ after(grammarAccess.getTypedTypeRefCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTuplePartCS
+entryRuleTuplePartCS 
+:
+{ before(grammarAccess.getTuplePartCSRule()); }
+	 ruleTuplePartCS
+{ after(grammarAccess.getTuplePartCSRule()); } 
+	 EOF 
+;
+
+// Rule TuplePartCS
+ruleTuplePartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getGroup()); }
+(rule__TuplePartCS__Group__0)
+{ after(grammarAccess.getTuplePartCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLReservedKeyword
+entryRuleEssentialOCLReservedKeyword 
+:
+{ before(grammarAccess.getEssentialOCLReservedKeywordRule()); }
+	 ruleEssentialOCLReservedKeyword
+{ after(grammarAccess.getEssentialOCLReservedKeywordRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLReservedKeyword
+ruleEssentialOCLReservedKeyword
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getAlternatives()); }
+(rule__EssentialOCLReservedKeyword__Alternatives)
+{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLUnaryOperatorName
+entryRuleEssentialOCLUnaryOperatorName 
+:
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); }
+	 ruleEssentialOCLUnaryOperatorName
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLUnaryOperatorName
+ruleEssentialOCLUnaryOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }
+(rule__EssentialOCLUnaryOperatorName__Alternatives)
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLInfixOperatorName
+entryRuleEssentialOCLInfixOperatorName 
+:
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameRule()); }
+	 ruleEssentialOCLInfixOperatorName
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLInfixOperatorName
+ruleEssentialOCLInfixOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }
+(rule__EssentialOCLInfixOperatorName__Alternatives)
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLNavigationOperatorName
+entryRuleEssentialOCLNavigationOperatorName 
+:
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); }
+	 ruleEssentialOCLNavigationOperatorName
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLNavigationOperatorName
+ruleEssentialOCLNavigationOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }
+(rule__EssentialOCLNavigationOperatorName__Alternatives)
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBinaryOperatorName
+entryRuleBinaryOperatorName 
+:
+{ before(grammarAccess.getBinaryOperatorNameRule()); }
+	 ruleBinaryOperatorName
+{ after(grammarAccess.getBinaryOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule BinaryOperatorName
+ruleBinaryOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }
+(rule__BinaryOperatorName__Alternatives)
+{ after(grammarAccess.getBinaryOperatorNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleInfixOperatorName
+entryRuleInfixOperatorName 
+:
+{ before(grammarAccess.getInfixOperatorNameRule()); }
+	 ruleInfixOperatorName
+{ after(grammarAccess.getInfixOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule InfixOperatorName
+ruleInfixOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }
+	ruleEssentialOCLInfixOperatorName
+{ after(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigationOperatorName
+entryRuleNavigationOperatorName 
+:
+{ before(grammarAccess.getNavigationOperatorNameRule()); }
+	 ruleNavigationOperatorName
+{ after(grammarAccess.getNavigationOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule NavigationOperatorName
+ruleNavigationOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); }
+	ruleEssentialOCLNavigationOperatorName
+{ after(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnaryOperatorName
+entryRuleUnaryOperatorName 
+:
+{ before(grammarAccess.getUnaryOperatorNameRule()); }
+	 ruleUnaryOperatorName
+{ after(grammarAccess.getUnaryOperatorNameRule()); } 
+	 EOF 
+;
+
+// Rule UnaryOperatorName
+ruleUnaryOperatorName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }
+	ruleEssentialOCLUnaryOperatorName
+{ after(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLUnrestrictedName
+entryRuleEssentialOCLUnrestrictedName 
+:
+{ before(grammarAccess.getEssentialOCLUnrestrictedNameRule()); }
+	 ruleEssentialOCLUnrestrictedName
+{ after(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLUnrestrictedName
+ruleEssentialOCLUnrestrictedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }
+	ruleIdentifier
+{ after(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnrestrictedName
+entryRuleUnrestrictedName 
+:
+{ before(grammarAccess.getUnrestrictedNameRule()); }
+	 ruleUnrestrictedName
+{ after(grammarAccess.getUnrestrictedNameRule()); } 
+	 EOF 
+;
+
+// Rule UnrestrictedName
+ruleUnrestrictedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall()); }
+	ruleEssentialOCLUnrestrictedName
+{ after(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEssentialOCLUnreservedName
+entryRuleEssentialOCLUnreservedName 
+:
+{ before(grammarAccess.getEssentialOCLUnreservedNameRule()); }
+	 ruleEssentialOCLUnreservedName
+{ after(grammarAccess.getEssentialOCLUnreservedNameRule()); } 
+	 EOF 
+;
+
+// Rule EssentialOCLUnreservedName
+ruleEssentialOCLUnreservedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }
+(rule__EssentialOCLUnreservedName__Alternatives)
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnreservedName
+entryRuleUnreservedName 
+:
+{ before(grammarAccess.getUnreservedNameRule()); }
+	 ruleUnreservedName
+{ after(grammarAccess.getUnreservedNameRule()); } 
+	 EOF 
+;
+
+// Rule UnreservedName
+ruleUnreservedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }
+	ruleEssentialOCLUnreservedName
+{ after(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleURIFirstPathElementCS
+entryRuleURIFirstPathElementCS 
+:
+{ before(grammarAccess.getURIFirstPathElementCSRule()); }
+	 ruleURIFirstPathElementCS
+{ after(grammarAccess.getURIFirstPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule URIFirstPathElementCS
+ruleURIFirstPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }
+(rule__URIFirstPathElementCS__Alternatives)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimitiveTypeIdentifier
+entryRulePrimitiveTypeIdentifier 
+:
+{ before(grammarAccess.getPrimitiveTypeIdentifierRule()); }
+	 rulePrimitiveTypeIdentifier
+{ after(grammarAccess.getPrimitiveTypeIdentifierRule()); } 
+	 EOF 
+;
+
+// Rule PrimitiveTypeIdentifier
+rulePrimitiveTypeIdentifier
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }
+(rule__PrimitiveTypeIdentifier__Alternatives)
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimitiveTypeCS
+entryRulePrimitiveTypeCS 
+:
+{ before(grammarAccess.getPrimitiveTypeCSRule()); }
+	 rulePrimitiveTypeCS
+{ after(grammarAccess.getPrimitiveTypeCSRule()); } 
+	 EOF 
+;
+
+// Rule PrimitiveTypeCS
+rulePrimitiveTypeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }
+(rule__PrimitiveTypeCS__NameAssignment)
+{ after(grammarAccess.getPrimitiveTypeCSAccess().getNameAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionTypeIdentifier
+entryRuleCollectionTypeIdentifier 
+:
+{ before(grammarAccess.getCollectionTypeIdentifierRule()); }
+	 ruleCollectionTypeIdentifier
+{ after(grammarAccess.getCollectionTypeIdentifierRule()); } 
+	 EOF 
+;
+
+// Rule CollectionTypeIdentifier
+ruleCollectionTypeIdentifier
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }
+(rule__CollectionTypeIdentifier__Alternatives)
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionTypeCS
+entryRuleCollectionTypeCS 
+:
+{ before(grammarAccess.getCollectionTypeCSRule()); }
+	 ruleCollectionTypeCS
+{ after(grammarAccess.getCollectionTypeCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionTypeCS
+ruleCollectionTypeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getGroup()); }
+(rule__CollectionTypeCS__Group__0)
+{ after(grammarAccess.getCollectionTypeCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTupleTypeCS
+entryRuleTupleTypeCS 
+:
+{ before(grammarAccess.getTupleTypeCSRule()); }
+	 ruleTupleTypeCS
+{ after(grammarAccess.getTupleTypeCSRule()); } 
+	 EOF 
+;
+
+// Rule TupleTypeCS
+ruleTupleTypeCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup()); }
+(rule__TupleTypeCS__Group__0)
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionLiteralExpCS
+entryRuleCollectionLiteralExpCS 
+:
+{ before(grammarAccess.getCollectionLiteralExpCSRule()); }
+	 ruleCollectionLiteralExpCS
+{ after(grammarAccess.getCollectionLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionLiteralExpCS
+ruleCollectionLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }
+(rule__CollectionLiteralExpCS__Group__0)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionLiteralPartCS
+entryRuleCollectionLiteralPartCS 
+:
+{ before(grammarAccess.getCollectionLiteralPartCSRule()); }
+	 ruleCollectionLiteralPartCS
+{ after(grammarAccess.getCollectionLiteralPartCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionLiteralPartCS
+ruleCollectionLiteralPartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }
+(rule__CollectionLiteralPartCS__Alternatives)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCollectionPatternCS
+entryRuleCollectionPatternCS 
+:
+{ before(grammarAccess.getCollectionPatternCSRule()); }
+	 ruleCollectionPatternCS
+{ after(grammarAccess.getCollectionPatternCSRule()); } 
+	 EOF 
+;
+
+// Rule CollectionPatternCS
+ruleCollectionPatternCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup()); }
+(rule__CollectionPatternCS__Group__0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleConstructorPartCS
+entryRuleConstructorPartCS 
+:
+{ before(grammarAccess.getConstructorPartCSRule()); }
+	 ruleConstructorPartCS
+{ after(grammarAccess.getConstructorPartCSRule()); } 
+	 EOF 
+;
+
+// Rule ConstructorPartCS
+ruleConstructorPartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getGroup()); }
+(rule__ConstructorPartCS__Group__0)
+{ after(grammarAccess.getConstructorPartCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePatternExpCS
+entryRulePatternExpCS 
+:
+{ before(grammarAccess.getPatternExpCSRule()); }
+	 rulePatternExpCS
+{ after(grammarAccess.getPatternExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PatternExpCS
+rulePatternExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getGroup()); }
+(rule__PatternExpCS__Group__0)
+{ after(grammarAccess.getPatternExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLambdaLiteralExpCS
+entryRuleLambdaLiteralExpCS 
+:
+{ before(grammarAccess.getLambdaLiteralExpCSRule()); }
+	 ruleLambdaLiteralExpCS
+{ after(grammarAccess.getLambdaLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule LambdaLiteralExpCS
+ruleLambdaLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }
+(rule__LambdaLiteralExpCS__Group__0)
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimitiveLiteralExpCS
+entryRulePrimitiveLiteralExpCS 
+:
+{ before(grammarAccess.getPrimitiveLiteralExpCSRule()); }
+	 rulePrimitiveLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrimitiveLiteralExpCS
+rulePrimitiveLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }
+(rule__PrimitiveLiteralExpCS__Alternatives)
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTupleLiteralExpCS
+entryRuleTupleLiteralExpCS 
+:
+{ before(grammarAccess.getTupleLiteralExpCSRule()); }
+	 ruleTupleLiteralExpCS
+{ after(grammarAccess.getTupleLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TupleLiteralExpCS
+ruleTupleLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }
+(rule__TupleLiteralExpCS__Group__0)
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTupleLiteralPartCS
+entryRuleTupleLiteralPartCS 
+:
+{ before(grammarAccess.getTupleLiteralPartCSRule()); }
+	 ruleTupleLiteralPartCS
+{ after(grammarAccess.getTupleLiteralPartCSRule()); } 
+	 EOF 
+;
+
+// Rule TupleLiteralPartCS
+ruleTupleLiteralPartCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }
+(rule__TupleLiteralPartCS__Group__0)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNumberLiteralExpCS
+entryRuleNumberLiteralExpCS 
+:
+{ before(grammarAccess.getNumberLiteralExpCSRule()); }
+	 ruleNumberLiteralExpCS
+{ after(grammarAccess.getNumberLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NumberLiteralExpCS
+ruleNumberLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }
+(rule__NumberLiteralExpCS__SymbolAssignment)
+{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStringLiteralExpCS
+entryRuleStringLiteralExpCS 
+:
+{ before(grammarAccess.getStringLiteralExpCSRule()); }
+	 ruleStringLiteralExpCS
+{ after(grammarAccess.getStringLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule StringLiteralExpCS
+ruleStringLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+(
+{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+(rule__StringLiteralExpCS__SegmentsAssignment)
+{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+)
+(
+{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+(rule__StringLiteralExpCS__SegmentsAssignment)*
+{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsAssignment()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBooleanLiteralExpCS
+entryRuleBooleanLiteralExpCS 
+:
+{ before(grammarAccess.getBooleanLiteralExpCSRule()); }
+	 ruleBooleanLiteralExpCS
+{ after(grammarAccess.getBooleanLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule BooleanLiteralExpCS
+ruleBooleanLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }
+(rule__BooleanLiteralExpCS__Alternatives)
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnlimitedNaturalLiteralExpCS
+entryRuleUnlimitedNaturalLiteralExpCS 
+:
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }
+	 ruleUnlimitedNaturalLiteralExpCS
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule UnlimitedNaturalLiteralExpCS
+ruleUnlimitedNaturalLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }
+(rule__UnlimitedNaturalLiteralExpCS__Group__0)
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleInvalidLiteralExpCS
+entryRuleInvalidLiteralExpCS 
+:
+{ before(grammarAccess.getInvalidLiteralExpCSRule()); }
+	 ruleInvalidLiteralExpCS
+{ after(grammarAccess.getInvalidLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule InvalidLiteralExpCS
+ruleInvalidLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }
+(rule__InvalidLiteralExpCS__Group__0)
+{ after(grammarAccess.getInvalidLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNullLiteralExpCS
+entryRuleNullLiteralExpCS 
+:
+{ before(grammarAccess.getNullLiteralExpCSRule()); }
+	 ruleNullLiteralExpCS
+{ after(grammarAccess.getNullLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NullLiteralExpCS
+ruleNullLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }
+(rule__NullLiteralExpCS__Group__0)
+{ after(grammarAccess.getNullLiteralExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeLiteralCS
+entryRuleTypeLiteralCS 
+:
+{ before(grammarAccess.getTypeLiteralCSRule()); }
+	 ruleTypeLiteralCS
+{ after(grammarAccess.getTypeLiteralCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeLiteralCS
+ruleTypeLiteralCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }
+(rule__TypeLiteralCS__Alternatives)
+{ after(grammarAccess.getTypeLiteralCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeLiteralWithMultiplicityCS
+entryRuleTypeLiteralWithMultiplicityCS 
+:
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }
+	 ruleTypeLiteralWithMultiplicityCS
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeLiteralWithMultiplicityCS
+ruleTypeLiteralWithMultiplicityCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }
+(rule__TypeLiteralWithMultiplicityCS__Group__0)
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeLiteralExpCS
+entryRuleTypeLiteralExpCS 
+:
+{ before(grammarAccess.getTypeLiteralExpCSRule()); }
+	 ruleTypeLiteralExpCS
+{ after(grammarAccess.getTypeLiteralExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeLiteralExpCS
+ruleTypeLiteralExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }
+(rule__TypeLiteralExpCS__OwnedTypeAssignment)
+{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeNameExpCS
+entryRuleTypeNameExpCS 
+:
+{ before(grammarAccess.getTypeNameExpCSRule()); }
+	 ruleTypeNameExpCS
+{ after(grammarAccess.getTypeNameExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeNameExpCS
+ruleTypeNameExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getGroup()); }
+(rule__TypeNameExpCS__Group__0)
+{ after(grammarAccess.getTypeNameExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeExpCS
+entryRuleTypeExpCS 
+:
+{ before(grammarAccess.getTypeExpCSRule()); }
+	 ruleTypeExpCS
+{ after(grammarAccess.getTypeExpCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeExpCS
+ruleTypeExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getGroup()); }
+(rule__TypeExpCS__Group__0)
+{ after(grammarAccess.getTypeExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleExpCS
+entryRuleExpCS 
+:
+{ before(grammarAccess.getExpCSRule()); }
+	 ruleExpCS
+{ after(grammarAccess.getExpCSRule()); } 
+	 EOF 
+;
+
+// Rule ExpCS
+ruleExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getExpCSAccess().getAlternatives()); }
+(rule__ExpCS__Alternatives)
+{ after(grammarAccess.getExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrefixedLetExpCS
+entryRulePrefixedLetExpCS 
+:
+{ before(grammarAccess.getPrefixedLetExpCSRule()); }
+	 rulePrefixedLetExpCS
+{ after(grammarAccess.getPrefixedLetExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrefixedLetExpCS
+rulePrefixedLetExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }
+(rule__PrefixedLetExpCS__Alternatives)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrefixedPrimaryExpCS
+entryRulePrefixedPrimaryExpCS 
+:
+{ before(grammarAccess.getPrefixedPrimaryExpCSRule()); }
+	 rulePrefixedPrimaryExpCS
+{ after(grammarAccess.getPrefixedPrimaryExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrefixedPrimaryExpCS
+rulePrefixedPrimaryExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }
+(rule__PrefixedPrimaryExpCS__Alternatives)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePrimaryExpCS
+entryRulePrimaryExpCS 
+:
+{ before(grammarAccess.getPrimaryExpCSRule()); }
+	 rulePrimaryExpCS
+{ after(grammarAccess.getPrimaryExpCSRule()); } 
+	 EOF 
+;
+
+// Rule PrimaryExpCS
+rulePrimaryExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }
+(rule__PrimaryExpCS__Alternatives)
+{ after(grammarAccess.getPrimaryExpCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNameExpCS
+entryRuleNameExpCS 
+:
+{ before(grammarAccess.getNameExpCSRule()); }
+	 ruleNameExpCS
+{ after(grammarAccess.getNameExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NameExpCS
+ruleNameExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNameExpCSAccess().getGroup()); }
+(rule__NameExpCS__Group__0)
+{ after(grammarAccess.getNameExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCurlyBracketedClauseCS
+entryRuleCurlyBracketedClauseCS 
+:
+{ before(grammarAccess.getCurlyBracketedClauseCSRule()); }
+	 ruleCurlyBracketedClauseCS
+{ after(grammarAccess.getCurlyBracketedClauseCSRule()); } 
+	 EOF 
+;
+
+// Rule CurlyBracketedClauseCS
+ruleCurlyBracketedClauseCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }
+(rule__CurlyBracketedClauseCS__Group__0)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRoundBracketedClauseCS
+entryRuleRoundBracketedClauseCS 
+:
+{ before(grammarAccess.getRoundBracketedClauseCSRule()); }
+	 ruleRoundBracketedClauseCS
+{ after(grammarAccess.getRoundBracketedClauseCSRule()); } 
+	 EOF 
+;
+
+// Rule RoundBracketedClauseCS
+ruleRoundBracketedClauseCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }
+(rule__RoundBracketedClauseCS__Group__0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSquareBracketedClauseCS
+entryRuleSquareBracketedClauseCS 
+:
+{ before(grammarAccess.getSquareBracketedClauseCSRule()); }
+	 ruleSquareBracketedClauseCS
+{ after(grammarAccess.getSquareBracketedClauseCSRule()); } 
+	 EOF 
+;
+
+// Rule SquareBracketedClauseCS
+ruleSquareBracketedClauseCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }
+(rule__SquareBracketedClauseCS__Group__0)
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingArgCS
+entryRuleNavigatingArgCS 
+:
+{ before(grammarAccess.getNavigatingArgCSRule()); }
+	 ruleNavigatingArgCS
+{ after(grammarAccess.getNavigatingArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingArgCS
+ruleNavigatingArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }
+(rule__NavigatingArgCS__Alternatives)
+{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingBarArgCS
+entryRuleNavigatingBarArgCS 
+:
+{ before(grammarAccess.getNavigatingBarArgCSRule()); }
+	 ruleNavigatingBarArgCS
+{ after(grammarAccess.getNavigatingBarArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingBarArgCS
+ruleNavigatingBarArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }
+(rule__NavigatingBarArgCS__Group__0)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingCommaArgCS
+entryRuleNavigatingCommaArgCS 
+:
+{ before(grammarAccess.getNavigatingCommaArgCSRule()); }
+	 ruleNavigatingCommaArgCS
+{ after(grammarAccess.getNavigatingCommaArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingCommaArgCS
+ruleNavigatingCommaArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }
+(rule__NavigatingCommaArgCS__Group__0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingSemiArgCS
+entryRuleNavigatingSemiArgCS 
+:
+{ before(grammarAccess.getNavigatingSemiArgCSRule()); }
+	 ruleNavigatingSemiArgCS
+{ after(grammarAccess.getNavigatingSemiArgCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingSemiArgCS
+ruleNavigatingSemiArgCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }
+(rule__NavigatingSemiArgCS__Group__0)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNavigatingArgExpCS
+entryRuleNavigatingArgExpCS 
+:
+{ before(grammarAccess.getNavigatingArgExpCSRule()); }
+	 ruleNavigatingArgExpCS
+{ after(grammarAccess.getNavigatingArgExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NavigatingArgExpCS
+ruleNavigatingArgExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); }
+	ruleExpCS
+{ after(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIfExpCS
+entryRuleIfExpCS 
+:
+{ before(grammarAccess.getIfExpCSRule()); }
+	 ruleIfExpCS
+{ after(grammarAccess.getIfExpCSRule()); } 
+	 EOF 
+;
+
+// Rule IfExpCS
+ruleIfExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIfExpCSAccess().getGroup()); }
+(rule__IfExpCS__Group__0)
+{ after(grammarAccess.getIfExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleElseIfThenExpCS
+entryRuleElseIfThenExpCS 
+:
+{ before(grammarAccess.getElseIfThenExpCSRule()); }
+	 ruleElseIfThenExpCS
+{ after(grammarAccess.getElseIfThenExpCSRule()); } 
+	 EOF 
+;
+
+// Rule ElseIfThenExpCS
+ruleElseIfThenExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }
+(rule__ElseIfThenExpCS__Group__0)
+{ after(grammarAccess.getElseIfThenExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLetExpCS
+entryRuleLetExpCS 
+:
+{ before(grammarAccess.getLetExpCSRule()); }
+	 ruleLetExpCS
+{ after(grammarAccess.getLetExpCSRule()); } 
+	 EOF 
+;
+
+// Rule LetExpCS
+ruleLetExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLetExpCSAccess().getGroup()); }
+(rule__LetExpCS__Group__0)
+{ after(grammarAccess.getLetExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLetVariableCS
+entryRuleLetVariableCS 
+:
+{ before(grammarAccess.getLetVariableCSRule()); }
+	 ruleLetVariableCS
+{ after(grammarAccess.getLetVariableCSRule()); } 
+	 EOF 
+;
+
+// Rule LetVariableCS
+ruleLetVariableCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getGroup()); }
+(rule__LetVariableCS__Group__0)
+{ after(grammarAccess.getLetVariableCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNestedExpCS
+entryRuleNestedExpCS 
+:
+{ before(grammarAccess.getNestedExpCSRule()); }
+	 ruleNestedExpCS
+{ after(grammarAccess.getNestedExpCSRule()); } 
+	 EOF 
+;
+
+// Rule NestedExpCS
+ruleNestedExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getGroup()); }
+(rule__NestedExpCS__Group__0)
+{ after(grammarAccess.getNestedExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSelfExpCS
+entryRuleSelfExpCS 
+:
+{ before(grammarAccess.getSelfExpCSRule()); }
+	 ruleSelfExpCS
+{ after(grammarAccess.getSelfExpCSRule()); } 
+	 EOF 
+;
+
+// Rule SelfExpCS
+ruleSelfExpCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSelfExpCSAccess().getGroup()); }
+(rule__SelfExpCS__Group__0)
+{ after(grammarAccess.getSelfExpCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMultiplicityBoundsCS
+entryRuleMultiplicityBoundsCS 
+:
+{ before(grammarAccess.getMultiplicityBoundsCSRule()); }
+	 ruleMultiplicityBoundsCS
+{ after(grammarAccess.getMultiplicityBoundsCSRule()); } 
+	 EOF 
+;
+
+// Rule MultiplicityBoundsCS
+ruleMultiplicityBoundsCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }
+(rule__MultiplicityBoundsCS__Group__0)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMultiplicityCS
+entryRuleMultiplicityCS 
+:
+{ before(grammarAccess.getMultiplicityCSRule()); }
+	 ruleMultiplicityCS
+{ after(grammarAccess.getMultiplicityCSRule()); } 
+	 EOF 
+;
+
+// Rule MultiplicityCS
+ruleMultiplicityCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getGroup()); }
+(rule__MultiplicityCS__Group__0)
+{ after(grammarAccess.getMultiplicityCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMultiplicityStringCS
+entryRuleMultiplicityStringCS 
+:
+{ before(grammarAccess.getMultiplicityStringCSRule()); }
+	 ruleMultiplicityStringCS
+{ after(grammarAccess.getMultiplicityStringCSRule()); } 
+	 EOF 
+;
+
+// Rule MultiplicityStringCS
+ruleMultiplicityStringCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }
+(rule__MultiplicityStringCS__StringBoundsAssignment)
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePathNameCS
+entryRulePathNameCS 
+:
+{ before(grammarAccess.getPathNameCSRule()); }
+	 rulePathNameCS
+{ after(grammarAccess.getPathNameCSRule()); } 
+	 EOF 
+;
+
+// Rule PathNameCS
+rulePathNameCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPathNameCSAccess().getGroup()); }
+(rule__PathNameCS__Group__0)
+{ after(grammarAccess.getPathNameCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFirstPathElementCS
+entryRuleFirstPathElementCS 
+:
+{ before(grammarAccess.getFirstPathElementCSRule()); }
+	 ruleFirstPathElementCS
+{ after(grammarAccess.getFirstPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule FirstPathElementCS
+ruleFirstPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }
+(rule__FirstPathElementCS__ReferredElementAssignment)
+{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNextPathElementCS
+entryRuleNextPathElementCS 
+:
+{ before(grammarAccess.getNextPathElementCSRule()); }
+	 ruleNextPathElementCS
+{ after(grammarAccess.getNextPathElementCSRule()); } 
+	 EOF 
+;
+
+// Rule NextPathElementCS
+ruleNextPathElementCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }
+(rule__NextPathElementCS__ReferredElementAssignment)
+{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTemplateBindingCS
+entryRuleTemplateBindingCS 
+:
+{ before(grammarAccess.getTemplateBindingCSRule()); }
+	 ruleTemplateBindingCS
+{ after(grammarAccess.getTemplateBindingCSRule()); } 
+	 EOF 
+;
+
+// Rule TemplateBindingCS
+ruleTemplateBindingCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getGroup()); }
+(rule__TemplateBindingCS__Group__0)
+{ after(grammarAccess.getTemplateBindingCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTemplateParameterSubstitutionCS
+entryRuleTemplateParameterSubstitutionCS 
+:
+{ before(grammarAccess.getTemplateParameterSubstitutionCSRule()); }
+	 ruleTemplateParameterSubstitutionCS
+{ after(grammarAccess.getTemplateParameterSubstitutionCSRule()); } 
+	 EOF 
+;
+
+// Rule TemplateParameterSubstitutionCS
+ruleTemplateParameterSubstitutionCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }
+(rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment)
+{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTemplateSignatureCS
+entryRuleTemplateSignatureCS 
+:
+{ before(grammarAccess.getTemplateSignatureCSRule()); }
+	 ruleTemplateSignatureCS
+{ after(grammarAccess.getTemplateSignatureCSRule()); } 
+	 EOF 
+;
+
+// Rule TemplateSignatureCS
+ruleTemplateSignatureCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup()); }
+(rule__TemplateSignatureCS__Group__0)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeParameterCS
+entryRuleTypeParameterCS 
+:
+{ before(grammarAccess.getTypeParameterCSRule()); }
+	 ruleTypeParameterCS
+{ after(grammarAccess.getTypeParameterCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeParameterCS
+ruleTypeParameterCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup()); }
+(rule__TypeParameterCS__Group__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypeRefCS
+entryRuleTypeRefCS 
+:
+{ before(grammarAccess.getTypeRefCSRule()); }
+	 ruleTypeRefCS
+{ after(grammarAccess.getTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule TypeRefCS
+ruleTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeRefCSAccess().getAlternatives()); }
+(rule__TypeRefCS__Alternatives)
+{ after(grammarAccess.getTypeRefCSAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleWildcardTypeRefCS
+entryRuleWildcardTypeRefCS 
+:
+{ before(grammarAccess.getWildcardTypeRefCSRule()); }
+	 ruleWildcardTypeRefCS
+{ after(grammarAccess.getWildcardTypeRefCSRule()); } 
+	 EOF 
+;
+
+// Rule WildcardTypeRefCS
+ruleWildcardTypeRefCS
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }
+(rule__WildcardTypeRefCS__Group__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleID
+entryRuleID 
+:
+{ before(grammarAccess.getIDRule()); }
+	 ruleID
+{ after(grammarAccess.getIDRule()); } 
+	 EOF 
+;
+
+// Rule ID
+ruleID
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIDAccess().getAlternatives()); }
+(rule__ID__Alternatives)
+{ after(grammarAccess.getIDAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLOWER
+entryRuleLOWER 
+:
+{ before(grammarAccess.getLOWERRule()); }
+	 ruleLOWER
+{ after(grammarAccess.getLOWERRule()); } 
+	 EOF 
+;
+
+// Rule LOWER
+ruleLOWER
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }
+	RULE_INT
+{ after(grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNUMBER_LITERAL
+entryRuleNUMBER_LITERAL 
+:
+{ before(grammarAccess.getNUMBER_LITERALRule()); }
+	 ruleNUMBER_LITERAL
+{ after(grammarAccess.getNUMBER_LITERALRule()); } 
+	 EOF 
+;
+
+// Rule NUMBER_LITERAL
+ruleNUMBER_LITERAL
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }
+	RULE_INT
+{ after(grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStringLiteral
+entryRuleStringLiteral 
+:
+{ before(grammarAccess.getStringLiteralRule()); }
+	 ruleStringLiteral
+{ after(grammarAccess.getStringLiteralRule()); } 
+	 EOF 
+;
+
+// Rule StringLiteral
+ruleStringLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+	RULE_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUPPER
+entryRuleUPPER 
+:
+{ before(grammarAccess.getUPPERRule()); }
+	 ruleUPPER
+{ after(grammarAccess.getUPPERRule()); } 
+	 EOF 
+;
+
+// Rule UPPER
+ruleUPPER
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUPPERAccess().getAlternatives()); }
+(rule__UPPER__Alternatives)
+{ after(grammarAccess.getUPPERAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleURI
+entryRuleURI 
+:
+{ before(grammarAccess.getURIRule()); }
+	 ruleURI
+{ after(grammarAccess.getURIRule()); } 
+	 EOF 
+;
+
+// Rule URI
+ruleURI
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+	RULE_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__Identifier__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIdentifierAccess().getIDParserRuleCall_0()); }
+	ruleID
+{ after(grammarAccess.getIdentifierAccess().getIDParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getIdentifierAccess().getRestrictedKeywordsParserRuleCall_1()); }
+	ruleRestrictedKeywords
+{ after(grammarAccess.getIdentifierAccess().getRestrictedKeywordsParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RestrictedKeywords__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getAnnotationKeyword_0()); }
+
+	'annotation' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getAnnotationKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getConformsToKeyword_1()); }
+
+	'conformsTo' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getConformsToKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getDocumentationKeyword_2()); }
+
+	'documentation' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getDocumentationKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getExtendsKeyword_3()); }
+
+	'extends' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getExtendsKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getImportKeyword_4()); }
+
+	'import' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getImportKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getInvKeyword_5()); }
+
+	'inv' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getInvKeyword_5()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getInvalidatingKeyword_6()); }
+
+	'invalidating' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getInvalidatingKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getIterationKeyword_7()); }
+
+	'iteration' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getIterationKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getLeftKeyword_8()); }
+
+	'left' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getLeftKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getLibraryKeyword_9()); }
+
+	'library' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getLibraryKeyword_9()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getOperationKeyword_10()); }
+
+	'operation' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getOperationKeyword_10()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getPackageKeyword_11()); }
+
+	'package' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getPackageKeyword_11()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getPostKeyword_12()); }
+
+	'post' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getPostKeyword_12()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getPreKeyword_13()); }
+
+	'pre' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getPreKeyword_13()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getPrecedenceKeyword_14()); }
+
+	'precedence' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getPrecedenceKeyword_14()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getPropertyKeyword_15()); }
+
+	'property' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getPropertyKeyword_15()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getRightKeyword_16()); }
+
+	'right' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getRightKeyword_16()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getStaticKeyword_17()); }
+
+	'static' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getStaticKeyword_17()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getSuperKeyword_18()); }
+
+	'super' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getSuperKeyword_18()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getTypeKeyword_19()); }
+
+	'type' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getTypeKeyword_19()); }
+)
+
+    |(
+{ before(grammarAccess.getRestrictedKeywordsAccess().getValidatingKeyword_20()); }
+
+	'validating' 
+
+{ after(grammarAccess.getRestrictedKeywordsAccess().getValidatingKeyword_20()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Name__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameAccess().getIdentifierParserRuleCall_0()); }
+	ruleIdentifier
+{ after(grammarAccess.getNameAccess().getIdentifierParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNameAccess().getDOUBLE_QUOTED_STRINGTerminalRuleCall_1()); }
+	RULE_DOUBLE_QUOTED_STRING
+{ after(grammarAccess.getNameAccess().getDOUBLE_QUOTED_STRINGTerminalRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getNameAccess().getEssentialOCLReservedKeywordParserRuleCall_2()); }
+	ruleEssentialOCLReservedKeyword
+{ after(grammarAccess.getNameAccess().getEssentialOCLReservedKeywordParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getNameAccess().getPrimitiveTypeIdentifierParserRuleCall_3()); }
+	rulePrimitiveTypeIdentifier
+{ after(grammarAccess.getNameAccess().getPrimitiveTypeIdentifierParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getNameAccess().getCollectionTypeIdentifierParserRuleCall_4()); }
+	ruleCollectionTypeIdentifier
+{ after(grammarAccess.getNameAccess().getCollectionTypeIdentifierParserRuleCall_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnyName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnyNameAccess().getNameParserRuleCall_0()); }
+	ruleName
+{ after(grammarAccess.getAnyNameAccess().getNameParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAnyNameAccess().getLambdaKeyword_1()); }
+
+	'Lambda' 
+
+{ after(grammarAccess.getAnyNameAccess().getLambdaKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getAnyNameAccess().getTupleKeyword_2()); }
+
+	'Tuple' 
+
+{ after(grammarAccess.getAnyNameAccess().getTupleKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__NameAlternatives_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getNameIdentifierParserRuleCall_1_0_0()); }
+	ruleIdentifier
+{ after(grammarAccess.getAnnotationCSAccess().getNameIdentifierParserRuleCall_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAnnotationCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_1_0_1()); }
+	RULE_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getAnnotationCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Alternatives_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getGroup_3_0()); }
+(rule__AnnotationCS__Group_3_0__0)
+{ after(grammarAccess.getAnnotationCSAccess().getGroup_3_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAnnotationCSAccess().getSemicolonKeyword_3_1()); }
+
+	';' 
+
+{ after(grammarAccess.getAnnotationCSAccess().getSemicolonKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationElementCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationElementCSAccess().getAnnotationCSParserRuleCall_0()); }
+	ruleAnnotationCS
+{ after(grammarAccess.getAnnotationElementCSAccess().getAnnotationCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAnnotationElementCSAccess().getDocumentationCSParserRuleCall_1()); }
+	ruleDocumentationCS
+{ after(grammarAccess.getAnnotationElementCSAccess().getDocumentationCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Alternatives_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getOwnedOperationsAssignment_6_0()); }
+(rule__LibClassCS__OwnedOperationsAssignment_6_0)
+{ after(grammarAccess.getLibClassCSAccess().getOwnedOperationsAssignment_6_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLibClassCSAccess().getOwnedPropertiesAssignment_6_1()); }
+(rule__LibClassCS__OwnedPropertiesAssignment_6_1)
+{ after(grammarAccess.getLibClassCSAccess().getOwnedPropertiesAssignment_6_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLibClassCSAccess().getOwnedConstraintsAssignment_6_2()); }
+(rule__LibClassCS__OwnedConstraintsAssignment_6_2)
+{ after(grammarAccess.getLibClassCSAccess().getOwnedConstraintsAssignment_6_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLibClassCSAccess().getOwnedAnnotationsAssignment_6_3()); }
+(rule__LibClassCS__OwnedAnnotationsAssignment_6_3)
+{ after(grammarAccess.getLibClassCSAccess().getOwnedAnnotationsAssignment_6_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DetailCS__NameAlternatives_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDetailCSAccess().getNameNameParserRuleCall_0_0_0()); }
+	ruleName
+{ after(grammarAccess.getDetailCSAccess().getNameNameParserRuleCall_0_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDetailCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_0_0_1()); }
+	RULE_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getDetailCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_0_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DetailCS__ValuesAlternatives_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDetailCSAccess().getValuesSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_0()); }
+	RULE_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getDetailCSAccess().getValuesSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDetailCSAccess().getValuesML_SINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); }
+	RULE_ML_SINGLE_QUOTED_STRING
+{ after(grammarAccess.getDetailCSAccess().getValuesML_SINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Alternatives_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getGroup_7_0()); }
+(rule__LibCoercionCS__Group_7_0__0)
+{ after(grammarAccess.getLibCoercionCSAccess().getGroup_7_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLibCoercionCSAccess().getSemicolonKeyword_7_1()); }
+
+	';' 
+
+{ after(grammarAccess.getLibCoercionCSAccess().getSemicolonKeyword_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Alternatives_7_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getOwnedAnnotationsAssignment_7_0_1_0()); }
+(rule__LibCoercionCS__OwnedAnnotationsAssignment_7_0_1_0)
+{ after(grammarAccess.getLibCoercionCSAccess().getOwnedAnnotationsAssignment_7_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLibCoercionCSAccess().getOwnedPreconditionsAssignment_7_0_1_1()); }
+(rule__LibCoercionCS__OwnedPreconditionsAssignment_7_0_1_1)
+{ after(grammarAccess.getLibCoercionCSAccess().getOwnedPreconditionsAssignment_7_0_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLibCoercionCSAccess().getOwnedPostconditionsAssignment_7_0_1_2()); }
+(rule__LibCoercionCS__OwnedPostconditionsAssignment_7_0_1_2)
+{ after(grammarAccess.getLibCoercionCSAccess().getOwnedPostconditionsAssignment_7_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Alternatives_14
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getGroup_14_0()); }
+(rule__LibIterationCS__Group_14_0__0)
+{ after(grammarAccess.getLibIterationCSAccess().getGroup_14_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLibIterationCSAccess().getSemicolonKeyword_14_1()); }
+
+	';' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getSemicolonKeyword_14_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Alternatives_14_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedAnnotationsAssignment_14_0_1_0()); }
+(rule__LibIterationCS__OwnedAnnotationsAssignment_14_0_1_0)
+{ after(grammarAccess.getLibIterationCSAccess().getOwnedAnnotationsAssignment_14_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedPreconditionsAssignment_14_0_1_1()); }
+(rule__LibIterationCS__OwnedPreconditionsAssignment_14_0_1_1)
+{ after(grammarAccess.getLibIterationCSAccess().getOwnedPreconditionsAssignment_14_0_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedPostconditionsAssignment_14_0_1_2()); }
+(rule__LibIterationCS__OwnedPostconditionsAssignment_14_0_1_2)
+{ after(grammarAccess.getLibIterationCSAccess().getOwnedPostconditionsAssignment_14_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationCSAccess().getLibCoercionCSParserRuleCall_0()); }
+	ruleLibCoercionCS
+{ after(grammarAccess.getOperationCSAccess().getLibCoercionCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationCSAccess().getLibIterationCSParserRuleCall_1()); }
+	ruleLibIterationCS
+{ after(grammarAccess.getOperationCSAccess().getLibIterationCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationCSAccess().getLibOperationCSParserRuleCall_2()); }
+	ruleLibOperationCS
+{ after(grammarAccess.getOperationCSAccess().getLibOperationCSParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Alternatives_13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getGroup_13_0()); }
+(rule__LibOperationCS__Group_13_0__0)
+{ after(grammarAccess.getLibOperationCSAccess().getGroup_13_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLibOperationCSAccess().getSemicolonKeyword_13_1()); }
+
+	';' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getSemicolonKeyword_13_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Alternatives_13_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedAnnotationsAssignment_13_0_1_0()); }
+(rule__LibOperationCS__OwnedAnnotationsAssignment_13_0_1_0)
+{ after(grammarAccess.getLibOperationCSAccess().getOwnedAnnotationsAssignment_13_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLibOperationCSAccess().getGroup_13_0_1_1()); }
+(rule__LibOperationCS__Group_13_0_1_1__0)
+{ after(grammarAccess.getLibOperationCSAccess().getGroup_13_0_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedPostconditionsAssignment_13_0_1_2()); }
+(rule__LibOperationCS__OwnedPostconditionsAssignment_13_0_1_2)
+{ after(grammarAccess.getLibOperationCSAccess().getOwnedPostconditionsAssignment_13_0_1_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedPreconditionsAssignment_13_0_1_3()); }
+(rule__LibOperationCS__OwnedPreconditionsAssignment_13_0_1_3)
+{ after(grammarAccess.getLibOperationCSAccess().getOwnedPreconditionsAssignment_13_0_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__Alternatives_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getOwnedPackagesAssignment_4_0()); }
+(rule__LibPackageCS__OwnedPackagesAssignment_4_0)
+{ after(grammarAccess.getLibPackageCSAccess().getOwnedPackagesAssignment_4_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLibPackageCSAccess().getGroup_4_1()); }
+(rule__LibPackageCS__Group_4_1__0)
+{ after(grammarAccess.getLibPackageCSAccess().getGroup_4_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLibPackageCSAccess().getOwnedClassesAssignment_4_2()); }
+(rule__LibPackageCS__OwnedClassesAssignment_4_2)
+{ after(grammarAccess.getLibPackageCSAccess().getOwnedClassesAssignment_4_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLibPackageCSAccess().getOwnedAnnotationsAssignment_4_3()); }
+(rule__LibPackageCS__OwnedAnnotationsAssignment_4_3)
+{ after(grammarAccess.getLibPackageCSAccess().getOwnedAnnotationsAssignment_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Alternatives_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getOwnedPackagesAssignment_4_0()); }
+(rule__PackageCS__OwnedPackagesAssignment_4_0)
+{ after(grammarAccess.getPackageCSAccess().getOwnedPackagesAssignment_4_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPackageCSAccess().getOwnedClassesAssignment_4_1()); }
+(rule__PackageCS__OwnedClassesAssignment_4_1)
+{ after(grammarAccess.getPackageCSAccess().getOwnedClassesAssignment_4_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAssignment_4_2()); }
+(rule__PackageCS__OwnedAnnotationsAssignment_4_2)
+{ after(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAssignment_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__Alternatives_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getGroup_6_0()); }
+(rule__LibPropertyCS__Group_6_0__0)
+{ after(grammarAccess.getLibPropertyCSAccess().getGroup_6_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLibPropertyCSAccess().getSemicolonKeyword_6_1()); }
+
+	';' 
+
+{ after(grammarAccess.getLibPropertyCSAccess().getSemicolonKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrecedenceCS__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrecedenceCSAccess().getLeftKeyword_0_0()); }
+
+	'left' 
+
+{ after(grammarAccess.getPrecedenceCSAccess().getLeftKeyword_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrecedenceCSAccess().getIsRightAssociativeAssignment_0_1()); }
+(rule__PrecedenceCS__IsRightAssociativeAssignment_0_1)
+{ after(grammarAccess.getPrecedenceCSAccess().getIsRightAssociativeAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedMultiplicityRefCS__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getTupleTypeCSParserRuleCall_0_0()); }
+	ruleTupleTypeCS
+{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getTupleTypeCSParserRuleCall_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getTypedTypeRefCSParserRuleCall_0_1()); }
+	ruleTypedTypeRefCS
+{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getTypedTypeRefCSParserRuleCall_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getLambdaTypeCSParserRuleCall_0_2()); }
+	ruleLambdaTypeCS
+{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getLambdaTypeCSParserRuleCall_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedRefCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedRefCSAccess().getTupleTypeCSParserRuleCall_0()); }
+	ruleTupleTypeCS
+{ after(grammarAccess.getTypedRefCSAccess().getTupleTypeCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); }
+	ruleTypedTypeRefCS
+{ after(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTypedRefCSAccess().getLambdaTypeCSParserRuleCall_2()); }
+	ruleLambdaTypeCS
+{ after(grammarAccess.getTypedRefCSAccess().getLambdaTypeCSParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getGroup_0()); }
+(rule__TypedTypeRefCS__Group_0__0)
+{ after(grammarAccess.getTypedTypeRefCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getGroup_1()); }
+(rule__TypedTypeRefCS__Group_1__0)
+{ after(grammarAccess.getTypedTypeRefCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EssentialOCLReservedKeyword__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getAndKeyword_0()); }
+
+	'and' 
+
+{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getAndKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getElseKeyword_1()); }
+
+	'else' 
+
+{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getElseKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getEndifKeyword_2()); }
+
+	'endif' 
+
+{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getEndifKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getIfKeyword_3()); }
+
+	'if' 
+
+{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getIfKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getImpliesKeyword_4()); }
+
+	'implies' 
+
+{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getImpliesKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getInKeyword_5()); }
+
+	'in' 
+
+{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getInKeyword_5()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getLetKeyword_6()); }
+
+	'let' 
+
+{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getLetKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getNotKeyword_7()); }
+
+	'not' 
+
+{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getNotKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getOrKeyword_8()); }
+
+	'or' 
+
+{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getOrKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getThenKeyword_9()); }
+
+	'then' 
+
+{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getThenKeyword_9()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLReservedKeywordAccess().getXorKeyword_10()); }
+
+	'xor' 
+
+{ after(grammarAccess.getEssentialOCLReservedKeywordAccess().getXorKeyword_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EssentialOCLUnaryOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }
+
+	'-' 
+
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }
+
+	'not' 
+
+{ after(grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EssentialOCLInfixOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }
+
+	'*' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }
+
+	'/' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }
+
+	'+' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }
+
+	'-' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }
+
+	'>' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }
+
+	'<' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }
+
+	'>=' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }
+
+	'<=' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }
+
+	'=' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }
+
+	'<>' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }
+
+	'and' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }
+
+	'or' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }
+
+	'xor' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }
+
+	'implies' 
+
+{ after(grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EssentialOCLNavigationOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }
+
+	'.' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }
+
+	'->' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }
+
+	'?.' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }
+
+	'?->' 
+
+{ after(grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BinaryOperatorName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }
+	ruleInfixOperatorName
+{ after(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }
+	ruleNavigationOperatorName
+{ after(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EssentialOCLUnreservedName__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }
+	ruleUnrestrictedName
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }
+	ruleCollectionTypeIdentifier
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }
+	rulePrimitiveTypeIdentifier
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }
+
+	'Tuple' 
+
+{ after(grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }
+(rule__URIFirstPathElementCS__ReferredElementAssignment_0)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }
+(rule__URIFirstPathElementCS__Group_1__0)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimitiveTypeIdentifier__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }
+
+	'Boolean' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }
+
+	'Integer' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }
+
+	'Real' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }
+
+	'String' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }
+
+	'UnlimitedNatural' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }
+
+	'OclAny' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }
+
+	'OclInvalid' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); }
+
+	'OclVoid' 
+
+{ after(grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeIdentifier__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }
+
+	'Set' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }
+
+	'Bag' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }
+
+	'Sequence' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }
+
+	'Collection' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }
+
+	'OrderedSet' 
+
+{ after(grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }
+(rule__CollectionLiteralPartCS__Group_0__0)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }
+(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }
+	ruleExpCS
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }
+	rulePatternExpCS
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimitiveLiteralExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }
+	ruleNumberLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }
+	ruleStringLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }
+	ruleBooleanLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }
+	ruleUnlimitedNaturalLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }
+	ruleInvalidLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }
+	ruleNullLiteralExpCS
+{ after(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanLiteralExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }
+(rule__BooleanLiteralExpCS__SymbolAssignment_0)
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }
+(rule__BooleanLiteralExpCS__SymbolAssignment_1)
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }
+	rulePrimitiveTypeCS
+{ after(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }
+	ruleCollectionTypeCS
+{ after(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }
+	ruleTupleTypeCS
+{ after(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }
+	ruleTypeNameExpCS
+{ after(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }
+	ruleTypeLiteralCS
+{ after(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }
+	ruleCollectionPatternCS
+{ after(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getGroup_0()); }
+(rule__ExpCS__Group_0__0)
+{ after(grammarAccess.getExpCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }
+	rulePrefixedLetExpCS
+{ after(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }
+(rule__PrefixedLetExpCS__Group_0__0)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }
+	ruleLetExpCS
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }
+(rule__PrefixedPrimaryExpCS__Group_0__0)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }
+	rulePrimaryExpCS
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimaryExpCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }
+	ruleNestedExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }
+	ruleIfExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }
+	ruleSelfExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }
+	rulePrimitiveLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }
+	ruleTupleLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }
+	ruleCollectionLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }
+	ruleLambdaLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }
+	ruleTypeLiteralExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }
+	ruleNameExpCS
+{ after(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }
+(rule__CurlyBracketedClauseCS__Group_2_0__0)?
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }
+(rule__CurlyBracketedClauseCS__ValueAssignment_2_1)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }
+(rule__NavigatingArgCS__Group_0__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }
+(rule__NavigatingArgCS__Group_1__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Alternatives_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }
+(rule__NavigatingArgCS__Group_0_1_0__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }
+(rule__NavigatingArgCS__Group_0_1_1__0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }
+(rule__NavigatingCommaArgCS__Group_2_0__0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }
+(rule__NavigatingCommaArgCS__Group_2_1__0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedConditionAlternatives_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }
+	ruleExpCS
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }
+	rulePatternExpCS
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }
+	ruleMultiplicityBoundsCS
+{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }
+	ruleMultiplicityStringCS
+{ after(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityStringCS__StringBoundsAlternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }
+
+	'*' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }
+
+	'+' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }
+
+	'?' 
+
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }
+(rule__TypeParameterCS__Group_1_0__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }
+(rule__TypeParameterCS__Group_1_1__0)
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeRefCS__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }
+	ruleTypedRefCS
+{ after(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }
+	ruleWildcardTypeRefCS
+{ after(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }
+(rule__WildcardTypeRefCS__Group_2_0__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }
+(rule__WildcardTypeRefCS__Group_2_1__0)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ID__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }
+	RULE_SIMPLE_ID
+{ after(grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }
+	RULE_ESCAPED_ID
+{ after(grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UPPER__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }
+	RULE_INT
+{ after(grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }
+
+	'*' 
+
+{ after(grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__Library__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Library__Group__0__Impl
+	rule__Library__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Library__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryAccess().getGroup_0()); }
+(rule__Library__Group_0__0)*
+{ after(grammarAccess.getLibraryAccess().getGroup_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Library__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Library__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Library__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryAccess().getOwnedPackagesAssignment_1()); }
+(rule__Library__OwnedPackagesAssignment_1)*
+{ after(grammarAccess.getLibraryAccess().getOwnedPackagesAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Library__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Library__Group_0__0__Impl
+	rule__Library__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Library__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryAccess().getOwnedLibrariesAssignment_0_0()); }
+(rule__Library__OwnedLibrariesAssignment_0_0)
+{ after(grammarAccess.getLibraryAccess().getOwnedLibrariesAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Library__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Library__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Library__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryAccess().getSemicolonKeyword_0_1()); }
+
+	';' 
+
+{ after(grammarAccess.getLibraryAccess().getSemicolonKeyword_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibPathNameCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPathNameCS__Group__0__Impl
+	rule__LibPathNameCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPathNameCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+(rule__LibPathNameCS__OwnedPathElementsAssignment_0)
+{ after(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPathNameCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPathNameCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPathNameCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPathNameCSAccess().getGroup_1()); }
+(rule__LibPathNameCS__Group_1__0)*
+{ after(grammarAccess.getLibPathNameCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibPathNameCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPathNameCS__Group_1__0__Impl
+	rule__LibPathNameCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPathNameCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPathNameCSAccess().getColonColonKeyword_1_0()); }
+
+	'::' 
+
+{ after(grammarAccess.getLibPathNameCSAccess().getColonColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPathNameCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPathNameCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPathNameCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+(rule__LibPathNameCS__OwnedPathElementsAssignment_1_1)
+{ after(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__AccumulatorCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AccumulatorCS__Group__0__Impl
+	rule__AccumulatorCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AccumulatorCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAccumulatorCSAccess().getNameAssignment_0()); }
+(rule__AccumulatorCS__NameAssignment_0)
+{ after(grammarAccess.getAccumulatorCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AccumulatorCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AccumulatorCS__Group__1__Impl
+	rule__AccumulatorCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AccumulatorCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAccumulatorCSAccess().getColonKeyword_1()); }
+
+	':' 
+
+{ after(grammarAccess.getAccumulatorCSAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AccumulatorCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AccumulatorCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AccumulatorCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAccumulatorCSAccess().getOwnedTypeAssignment_2()); }
+(rule__AccumulatorCS__OwnedTypeAssignment_2)
+{ after(grammarAccess.getAccumulatorCSAccess().getOwnedTypeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__AnnotationCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group__0__Impl
+	rule__AnnotationCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getAnnotationKeyword_0()); }
+
+	'annotation' 
+
+{ after(grammarAccess.getAnnotationCSAccess().getAnnotationKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group__1__Impl
+	rule__AnnotationCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getNameAssignment_1()); }
+(rule__AnnotationCS__NameAssignment_1)
+{ after(grammarAccess.getAnnotationCSAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group__2__Impl
+	rule__AnnotationCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getGroup_2()); }
+(rule__AnnotationCS__Group_2__0)?
+{ after(grammarAccess.getAnnotationCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getAlternatives_3()); }
+(rule__AnnotationCS__Alternatives_3)
+{ after(grammarAccess.getAnnotationCSAccess().getAlternatives_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__AnnotationCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_2__0__Impl
+	rule__AnnotationCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getLeftParenthesisKeyword_2_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getAnnotationCSAccess().getLeftParenthesisKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_2__1__Impl
+	rule__AnnotationCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_2_1()); }
+(rule__AnnotationCS__OwnedDetailsAssignment_2_1)
+{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_2__2__Impl
+	rule__AnnotationCS__Group_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getGroup_2_2()); }
+(rule__AnnotationCS__Group_2_2__0)*
+{ after(grammarAccess.getAnnotationCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getRightParenthesisKeyword_2_3()); }
+
+	')' 
+
+{ after(grammarAccess.getAnnotationCSAccess().getRightParenthesisKeyword_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__AnnotationCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_2_2__0__Impl
+	rule__AnnotationCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getCommaKeyword_2_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getAnnotationCSAccess().getCommaKeyword_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_2_2_1()); }
+(rule__AnnotationCS__OwnedDetailsAssignment_2_2_1)
+{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__AnnotationCS__Group_3_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_3_0__0__Impl
+	rule__AnnotationCS__Group_3_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_3_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getLeftCurlyBracketKeyword_3_0_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getAnnotationCSAccess().getLeftCurlyBracketKeyword_3_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group_3_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_3_0__1__Impl
+	rule__AnnotationCS__Group_3_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_3_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAssignment_3_0_1()); }
+(rule__AnnotationCS__OwnedAnnotationsAssignment_3_0_1)
+{ after(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAssignment_3_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__AnnotationCS__Group_3_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__AnnotationCS__Group_3_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__Group_3_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getRightCurlyBracketKeyword_3_0_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getAnnotationCSAccess().getRightCurlyBracketKeyword_3_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LibClassCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group__0__Impl
+	rule__LibClassCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getTypeKeyword_0()); }
+
+	'type' 
+
+{ after(grammarAccess.getLibClassCSAccess().getTypeKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibClassCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group__1__Impl
+	rule__LibClassCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getNameAssignment_1()); }
+(rule__LibClassCS__NameAssignment_1)
+{ after(grammarAccess.getLibClassCSAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibClassCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group__2__Impl
+	rule__LibClassCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getOwnedSignatureAssignment_2()); }
+(rule__LibClassCS__OwnedSignatureAssignment_2)?
+{ after(grammarAccess.getLibClassCSAccess().getOwnedSignatureAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibClassCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group__3__Impl
+	rule__LibClassCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getGroup_3()); }
+(rule__LibClassCS__Group_3__0)?
+{ after(grammarAccess.getLibClassCSAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibClassCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group__4__Impl
+	rule__LibClassCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getGroup_4()); }
+(rule__LibClassCS__Group_4__0)?
+{ after(grammarAccess.getLibClassCSAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibClassCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group__5__Impl
+	rule__LibClassCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getLeftCurlyBracketKeyword_5()); }
+
+	'{' 
+
+{ after(grammarAccess.getLibClassCSAccess().getLeftCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibClassCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group__6__Impl
+	rule__LibClassCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getAlternatives_6()); }
+(rule__LibClassCS__Alternatives_6)*
+{ after(grammarAccess.getLibClassCSAccess().getAlternatives_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibClassCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getRightCurlyBracketKeyword_7()); }
+
+	'}' 
+
+{ after(grammarAccess.getLibClassCSAccess().getRightCurlyBracketKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LibClassCS__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group_3__0__Impl
+	rule__LibClassCS__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getColonKeyword_3_0()); }
+
+	':' 
+
+{ after(grammarAccess.getLibClassCSAccess().getColonKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibClassCS__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getMetaclassNameAssignment_3_1()); }
+(rule__LibClassCS__MetaclassNameAssignment_3_1)
+{ after(grammarAccess.getLibClassCSAccess().getMetaclassNameAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibClassCS__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group_4__0__Impl
+	rule__LibClassCS__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getConformsToKeyword_4_0()); }
+
+	'conformsTo' 
+
+{ after(grammarAccess.getLibClassCSAccess().getConformsToKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibClassCS__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group_4__1__Impl
+	rule__LibClassCS__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesAssignment_4_1()); }
+(rule__LibClassCS__OwnedSuperTypesAssignment_4_1)
+{ after(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibClassCS__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group_4__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getGroup_4_2()); }
+(rule__LibClassCS__Group_4_2__0)*
+{ after(grammarAccess.getLibClassCSAccess().getGroup_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LibClassCS__Group_4_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group_4_2__0__Impl
+	rule__LibClassCS__Group_4_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group_4_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getCommaKeyword_4_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getLibClassCSAccess().getCommaKeyword_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibClassCS__Group_4_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibClassCS__Group_4_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__Group_4_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesAssignment_4_2_1()); }
+(rule__LibClassCS__OwnedSuperTypesAssignment_4_2_1)
+{ after(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesAssignment_4_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DetailCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DetailCS__Group__0__Impl
+	rule__DetailCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DetailCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDetailCSAccess().getNameAssignment_0()); }
+(rule__DetailCS__NameAssignment_0)
+{ after(grammarAccess.getDetailCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DetailCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DetailCS__Group__1__Impl
+	rule__DetailCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DetailCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDetailCSAccess().getEqualsSignKeyword_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDetailCSAccess().getEqualsSignKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DetailCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DetailCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DetailCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDetailCSAccess().getValuesAssignment_2()); }
+(rule__DetailCS__ValuesAssignment_2)*
+{ after(grammarAccess.getDetailCSAccess().getValuesAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DocumentationCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group__0__Impl
+	rule__DocumentationCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getDocumentationCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDocumentationCSAccess().getDocumentationCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group__1__Impl
+	rule__DocumentationCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getDocumentationKeyword_1()); }
+
+	'documentation' 
+
+{ after(grammarAccess.getDocumentationCSAccess().getDocumentationKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group__2__Impl
+	rule__DocumentationCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getValueAssignment_2()); }
+(rule__DocumentationCS__ValueAssignment_2)?
+{ after(grammarAccess.getDocumentationCSAccess().getValueAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group__3__Impl
+	rule__DocumentationCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getGroup_3()); }
+(rule__DocumentationCS__Group_3__0)?
+{ after(grammarAccess.getDocumentationCSAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getSemicolonKeyword_4()); }
+
+	';' 
+
+{ after(grammarAccess.getDocumentationCSAccess().getSemicolonKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DocumentationCS__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group_3__0__Impl
+	rule__DocumentationCS__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getLeftParenthesisKeyword_3_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getDocumentationCSAccess().getLeftParenthesisKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group_3__1__Impl
+	rule__DocumentationCS__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_1()); }
+(rule__DocumentationCS__OwnedDetailsAssignment_3_1)
+{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group_3__2__Impl
+	rule__DocumentationCS__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getGroup_3_2()); }
+(rule__DocumentationCS__Group_3_2__0)*
+{ after(grammarAccess.getDocumentationCSAccess().getGroup_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group_3__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getRightParenthesisKeyword_3_3()); }
+
+	')' 
+
+{ after(grammarAccess.getDocumentationCSAccess().getRightParenthesisKeyword_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DocumentationCS__Group_3_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group_3_2__0__Impl
+	rule__DocumentationCS__Group_3_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group_3_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getCommaKeyword_3_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getDocumentationCSAccess().getCommaKeyword_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DocumentationCS__Group_3_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DocumentationCS__Group_3_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__Group_3_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_2_1()); }
+(rule__DocumentationCS__OwnedDetailsAssignment_3_2_1)
+{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsAssignment_3_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__InvCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvCS__Group__0__Impl
+	rule__InvCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvCSAccess().getStereotypeAssignment_0()); }
+(rule__InvCS__StereotypeAssignment_0)
+{ after(grammarAccess.getInvCSAccess().getStereotypeAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvCS__Group__1__Impl
+	rule__InvCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvCSAccess().getGroup_1()); }
+(rule__InvCS__Group_1__0)?
+{ after(grammarAccess.getInvCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvCS__Group__2__Impl
+	rule__InvCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvCSAccess().getColonKeyword_2()); }
+
+	':' 
+
+{ after(grammarAccess.getInvCSAccess().getColonKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvCS__Group__3__Impl
+	rule__InvCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvCSAccess().getOwnedSpecificationAssignment_3()); }
+(rule__InvCS__OwnedSpecificationAssignment_3)
+{ after(grammarAccess.getInvCSAccess().getOwnedSpecificationAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvCSAccess().getSemicolonKeyword_4()); }
+
+	';' 
+
+{ after(grammarAccess.getInvCSAccess().getSemicolonKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__InvCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvCS__Group_1__0__Impl
+	rule__InvCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvCSAccess().getNameAssignment_1_0()); }
+(rule__InvCS__NameAssignment_1_0)
+{ after(grammarAccess.getInvCSAccess().getNameAssignment_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvCSAccess().getGroup_1_1()); }
+(rule__InvCS__Group_1_1__0)?
+{ after(grammarAccess.getInvCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__InvCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvCS__Group_1_1__0__Impl
+	rule__InvCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvCSAccess().getLeftParenthesisKeyword_1_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getInvCSAccess().getLeftParenthesisKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvCS__Group_1_1__1__Impl
+	rule__InvCS__Group_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }
+(rule__InvCS__OwnedMessageSpecificationAssignment_1_1_1)
+{ after(grammarAccess.getInvCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvCS__Group_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvCS__Group_1_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvCS__Group_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvCSAccess().getRightParenthesisKeyword_1_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getInvCSAccess().getRightParenthesisKeyword_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LibCoercionCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibCoercionCS__Group__0__Impl
+	rule__LibCoercionCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getCoercionKeyword_0()); }
+
+	'coercion' 
+
+{ after(grammarAccess.getLibCoercionCSAccess().getCoercionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibCoercionCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibCoercionCS__Group__1__Impl
+	rule__LibCoercionCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getNameAssignment_1()); }
+(rule__LibCoercionCS__NameAssignment_1)
+{ after(grammarAccess.getLibCoercionCSAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibCoercionCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibCoercionCS__Group__2__Impl
+	rule__LibCoercionCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getLeftParenthesisKeyword_2()); }
+
+	'(' 
+
+{ after(grammarAccess.getLibCoercionCSAccess().getLeftParenthesisKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibCoercionCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibCoercionCS__Group__3__Impl
+	rule__LibCoercionCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getRightParenthesisKeyword_3()); }
+
+	')' 
+
+{ after(grammarAccess.getLibCoercionCSAccess().getRightParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibCoercionCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibCoercionCS__Group__4__Impl
+	rule__LibCoercionCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getColonKeyword_4()); }
+
+	':' 
+
+{ after(grammarAccess.getLibCoercionCSAccess().getColonKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibCoercionCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibCoercionCS__Group__5__Impl
+	rule__LibCoercionCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getOwnedTypeAssignment_5()); }
+(rule__LibCoercionCS__OwnedTypeAssignment_5)
+{ after(grammarAccess.getLibCoercionCSAccess().getOwnedTypeAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibCoercionCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibCoercionCS__Group__6__Impl
+	rule__LibCoercionCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getGroup_6()); }
+(rule__LibCoercionCS__Group_6__0)?
+{ after(grammarAccess.getLibCoercionCSAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibCoercionCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibCoercionCS__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getAlternatives_7()); }
+(rule__LibCoercionCS__Alternatives_7)
+{ after(grammarAccess.getLibCoercionCSAccess().getAlternatives_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LibCoercionCS__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibCoercionCS__Group_6__0__Impl
+	rule__LibCoercionCS__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getEqualsSignGreaterThanSignKeyword_6_0()); }
+
+	'=>' 
+
+{ after(grammarAccess.getLibCoercionCSAccess().getEqualsSignGreaterThanSignKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibCoercionCS__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibCoercionCS__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getImplementationAssignment_6_1()); }
+(rule__LibCoercionCS__ImplementationAssignment_6_1)
+{ after(grammarAccess.getLibCoercionCSAccess().getImplementationAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibCoercionCS__Group_7_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibCoercionCS__Group_7_0__0__Impl
+	rule__LibCoercionCS__Group_7_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Group_7_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getLeftCurlyBracketKeyword_7_0_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getLibCoercionCSAccess().getLeftCurlyBracketKeyword_7_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibCoercionCS__Group_7_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibCoercionCS__Group_7_0__1__Impl
+	rule__LibCoercionCS__Group_7_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Group_7_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getAlternatives_7_0_1()); }
+(rule__LibCoercionCS__Alternatives_7_0_1)*
+{ after(grammarAccess.getLibCoercionCSAccess().getAlternatives_7_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibCoercionCS__Group_7_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibCoercionCS__Group_7_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__Group_7_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getRightCurlyBracketKeyword_7_0_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getLibCoercionCSAccess().getRightCurlyBracketKeyword_7_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LibIterationCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__0__Impl
+	rule__LibIterationCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getIterationKeyword_0()); }
+
+	'iteration' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getIterationKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__1__Impl
+	rule__LibIterationCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getNameAssignment_1()); }
+(rule__LibIterationCS__NameAssignment_1)
+{ after(grammarAccess.getLibIterationCSAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__2__Impl
+	rule__LibIterationCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedSignatureAssignment_2()); }
+(rule__LibIterationCS__OwnedSignatureAssignment_2)?
+{ after(grammarAccess.getLibIterationCSAccess().getOwnedSignatureAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__3__Impl
+	rule__LibIterationCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getLeftParenthesisKeyword_3()); }
+
+	'(' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getLeftParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__4__Impl
+	rule__LibIterationCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsAssignment_4()); }
+(rule__LibIterationCS__OwnedIteratorsAssignment_4)
+{ after(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__5__Impl
+	rule__LibIterationCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getGroup_5()); }
+(rule__LibIterationCS__Group_5__0)*
+{ after(grammarAccess.getLibIterationCSAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__6__Impl
+	rule__LibIterationCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getGroup_6()); }
+(rule__LibIterationCS__Group_6__0)?
+{ after(grammarAccess.getLibIterationCSAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__7__Impl
+	rule__LibIterationCS__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getGroup_7()); }
+(rule__LibIterationCS__Group_7__0)?
+{ after(grammarAccess.getLibIterationCSAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__8__Impl
+	rule__LibIterationCS__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getRightParenthesisKeyword_8()); }
+
+	')' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getRightParenthesisKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__9__Impl
+	rule__LibIterationCS__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getColonKeyword_9()); }
+
+	':' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getColonKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__10__Impl
+	rule__LibIterationCS__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedTypeAssignment_10()); }
+(rule__LibIterationCS__OwnedTypeAssignment_10)
+{ after(grammarAccess.getLibIterationCSAccess().getOwnedTypeAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__11__Impl
+	rule__LibIterationCS__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getIsInvalidatingAssignment_11()); }
+(rule__LibIterationCS__IsInvalidatingAssignment_11)?
+{ after(grammarAccess.getLibIterationCSAccess().getIsInvalidatingAssignment_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__12__Impl
+	rule__LibIterationCS__Group__13
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getIsValidatingAssignment_12()); }
+(rule__LibIterationCS__IsValidatingAssignment_12)?
+{ after(grammarAccess.getLibIterationCSAccess().getIsValidatingAssignment_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group__13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__13__Impl
+	rule__LibIterationCS__Group__14
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__13__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getGroup_13()); }
+(rule__LibIterationCS__Group_13__0)?
+{ after(grammarAccess.getLibIterationCSAccess().getGroup_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group__14
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group__14__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group__14__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getAlternatives_14()); }
+(rule__LibIterationCS__Alternatives_14)
+{ after(grammarAccess.getLibIterationCSAccess().getAlternatives_14()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LibIterationCS__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_5__0__Impl
+	rule__LibIterationCS__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getCommaKeyword_5_0()); }
+
+	',' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getCommaKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsAssignment_5_1()); }
+(rule__LibIterationCS__OwnedIteratorsAssignment_5_1)
+{ after(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibIterationCS__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_6__0__Impl
+	rule__LibIterationCS__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getSemicolonKeyword_6_0()); }
+
+	';' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getSemicolonKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_6__1__Impl
+	rule__LibIterationCS__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAssignment_6_1()); }
+(rule__LibIterationCS__OwnedAccumulatorsAssignment_6_1)
+{ after(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_6__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getGroup_6_2()); }
+(rule__LibIterationCS__Group_6_2__0)*
+{ after(grammarAccess.getLibIterationCSAccess().getGroup_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LibIterationCS__Group_6_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_6_2__0__Impl
+	rule__LibIterationCS__Group_6_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_6_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getCommaKeyword_6_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getCommaKeyword_6_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group_6_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_6_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_6_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAssignment_6_2_1()); }
+(rule__LibIterationCS__OwnedAccumulatorsAssignment_6_2_1)
+{ after(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAssignment_6_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibIterationCS__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_7__0__Impl
+	rule__LibIterationCS__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getVerticalLineKeyword_7_0()); }
+
+	'|' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getVerticalLineKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_7__1__Impl
+	rule__LibIterationCS__Group_7__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedParametersAssignment_7_1()); }
+(rule__LibIterationCS__OwnedParametersAssignment_7_1)
+{ after(grammarAccess.getLibIterationCSAccess().getOwnedParametersAssignment_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group_7__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_7__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_7__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getGroup_7_2()); }
+(rule__LibIterationCS__Group_7_2__0)*
+{ after(grammarAccess.getLibIterationCSAccess().getGroup_7_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LibIterationCS__Group_7_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_7_2__0__Impl
+	rule__LibIterationCS__Group_7_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_7_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getCommaKeyword_7_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getCommaKeyword_7_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group_7_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_7_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_7_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedParametersAssignment_7_2_1()); }
+(rule__LibIterationCS__OwnedParametersAssignment_7_2_1)
+{ after(grammarAccess.getLibIterationCSAccess().getOwnedParametersAssignment_7_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibIterationCS__Group_13__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_13__0__Impl
+	rule__LibIterationCS__Group_13__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_13__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getEqualsSignGreaterThanSignKeyword_13_0()); }
+
+	'=>' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getEqualsSignGreaterThanSignKeyword_13_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group_13__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_13__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_13__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getImplementationAssignment_13_1()); }
+(rule__LibIterationCS__ImplementationAssignment_13_1)
+{ after(grammarAccess.getLibIterationCSAccess().getImplementationAssignment_13_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibIterationCS__Group_14_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_14_0__0__Impl
+	rule__LibIterationCS__Group_14_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_14_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getLeftCurlyBracketKeyword_14_0_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getLeftCurlyBracketKeyword_14_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group_14_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_14_0__1__Impl
+	rule__LibIterationCS__Group_14_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_14_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getAlternatives_14_0_1()); }
+(rule__LibIterationCS__Alternatives_14_0_1)*
+{ after(grammarAccess.getLibIterationCSAccess().getAlternatives_14_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibIterationCS__Group_14_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibIterationCS__Group_14_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__Group_14_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getRightCurlyBracketKeyword_14_0_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getRightCurlyBracketKeyword_14_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__IteratorCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IteratorCS__Group__0__Impl
+	rule__IteratorCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IteratorCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIteratorCSAccess().getNameAssignment_0()); }
+(rule__IteratorCS__NameAssignment_0)
+{ after(grammarAccess.getIteratorCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IteratorCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IteratorCS__Group__1__Impl
+	rule__IteratorCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IteratorCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIteratorCSAccess().getColonKeyword_1()); }
+
+	':' 
+
+{ after(grammarAccess.getIteratorCSAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IteratorCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IteratorCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IteratorCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIteratorCSAccess().getOwnedTypeAssignment_2()); }
+(rule__IteratorCS__OwnedTypeAssignment_2)
+{ after(grammarAccess.getIteratorCSAccess().getOwnedTypeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LambdaTypeCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaTypeCS__Group__0__Impl
+	rule__LambdaTypeCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getNameAssignment_0()); }
+(rule__LambdaTypeCS__NameAssignment_0)
+{ after(grammarAccess.getLambdaTypeCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaTypeCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaTypeCS__Group__1__Impl
+	rule__LambdaTypeCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedSignatureAssignment_1()); }
+(rule__LambdaTypeCS__OwnedSignatureAssignment_1)?
+{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedSignatureAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaTypeCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaTypeCS__Group__2__Impl
+	rule__LambdaTypeCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedContextTypeAssignment_2()); }
+(rule__LambdaTypeCS__OwnedContextTypeAssignment_2)
+{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedContextTypeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaTypeCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaTypeCS__Group__3__Impl
+	rule__LambdaTypeCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getLeftParenthesisKeyword_3()); }
+
+	'(' 
+
+{ after(grammarAccess.getLambdaTypeCSAccess().getLeftParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaTypeCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaTypeCS__Group__4__Impl
+	rule__LambdaTypeCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getGroup_4()); }
+(rule__LambdaTypeCS__Group_4__0)?
+{ after(grammarAccess.getLambdaTypeCSAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaTypeCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaTypeCS__Group__5__Impl
+	rule__LambdaTypeCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getRightParenthesisKeyword_5()); }
+
+	')' 
+
+{ after(grammarAccess.getLambdaTypeCSAccess().getRightParenthesisKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaTypeCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaTypeCS__Group__6__Impl
+	rule__LambdaTypeCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getColonKeyword_6()); }
+
+	':' 
+
+{ after(grammarAccess.getLambdaTypeCSAccess().getColonKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaTypeCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaTypeCS__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedResultTypeAssignment_7()); }
+(rule__LambdaTypeCS__OwnedResultTypeAssignment_7)
+{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedResultTypeAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LambdaTypeCS__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaTypeCS__Group_4__0__Impl
+	rule__LambdaTypeCS__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesAssignment_4_0()); }
+(rule__LambdaTypeCS__OwnedParameterTypesAssignment_4_0)
+{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesAssignment_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaTypeCS__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaTypeCS__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getGroup_4_1()); }
+(rule__LambdaTypeCS__Group_4_1__0)*
+{ after(grammarAccess.getLambdaTypeCSAccess().getGroup_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LambdaTypeCS__Group_4_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaTypeCS__Group_4_1__0__Impl
+	rule__LambdaTypeCS__Group_4_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__Group_4_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getCommaKeyword_4_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getLambdaTypeCSAccess().getCommaKeyword_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaTypeCS__Group_4_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaTypeCS__Group_4_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__Group_4_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesAssignment_4_1_1()); }
+(rule__LambdaTypeCS__OwnedParameterTypesAssignment_4_1_1)
+{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesAssignment_4_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibraryCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibraryCS__Group__0__Impl
+	rule__LibraryCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibraryCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryCSAccess().getImportKeyword_0()); }
+
+	'import' 
+
+{ after(grammarAccess.getLibraryCSAccess().getImportKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibraryCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibraryCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibraryCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryCSAccess().getReferredPackageAssignment_1()); }
+(rule__LibraryCS__ReferredPackageAssignment_1)
+{ after(grammarAccess.getLibraryCSAccess().getReferredPackageAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibOperationCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group__0__Impl
+	rule__LibOperationCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getIsStaticAssignment_0()); }
+(rule__LibOperationCS__IsStaticAssignment_0)?
+{ after(grammarAccess.getLibOperationCSAccess().getIsStaticAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group__1__Impl
+	rule__LibOperationCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOperationKeyword_1()); }
+
+	'operation' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getOperationKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group__2__Impl
+	rule__LibOperationCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getNameAssignment_2()); }
+(rule__LibOperationCS__NameAssignment_2)
+{ after(grammarAccess.getLibOperationCSAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group__3__Impl
+	rule__LibOperationCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedSignatureAssignment_3()); }
+(rule__LibOperationCS__OwnedSignatureAssignment_3)?
+{ after(grammarAccess.getLibOperationCSAccess().getOwnedSignatureAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group__4__Impl
+	rule__LibOperationCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getLeftParenthesisKeyword_4()); }
+
+	'(' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getLeftParenthesisKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group__5__Impl
+	rule__LibOperationCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getGroup_5()); }
+(rule__LibOperationCS__Group_5__0)?
+{ after(grammarAccess.getLibOperationCSAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group__6__Impl
+	rule__LibOperationCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getRightParenthesisKeyword_6()); }
+
+	')' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getRightParenthesisKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group__7__Impl
+	rule__LibOperationCS__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getColonKeyword_7()); }
+
+	':' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getColonKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group__8__Impl
+	rule__LibOperationCS__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedTypeAssignment_8()); }
+(rule__LibOperationCS__OwnedTypeAssignment_8)
+{ after(grammarAccess.getLibOperationCSAccess().getOwnedTypeAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group__9__Impl
+	rule__LibOperationCS__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getIsValidatingAssignment_9()); }
+(rule__LibOperationCS__IsValidatingAssignment_9)?
+{ after(grammarAccess.getLibOperationCSAccess().getIsValidatingAssignment_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group__10__Impl
+	rule__LibOperationCS__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getIsInvalidatingAssignment_10()); }
+(rule__LibOperationCS__IsInvalidatingAssignment_10)?
+{ after(grammarAccess.getLibOperationCSAccess().getIsInvalidatingAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group__11__Impl
+	rule__LibOperationCS__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getGroup_11()); }
+(rule__LibOperationCS__Group_11__0)?
+{ after(grammarAccess.getLibOperationCSAccess().getGroup_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group__12__Impl
+	rule__LibOperationCS__Group__13
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getGroup_12()); }
+(rule__LibOperationCS__Group_12__0)?
+{ after(grammarAccess.getLibOperationCSAccess().getGroup_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group__13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group__13__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group__13__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getAlternatives_13()); }
+(rule__LibOperationCS__Alternatives_13)
+{ after(grammarAccess.getLibOperationCSAccess().getAlternatives_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LibOperationCS__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_5__0__Impl
+	rule__LibOperationCS__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedParametersAssignment_5_0()); }
+(rule__LibOperationCS__OwnedParametersAssignment_5_0)
+{ after(grammarAccess.getLibOperationCSAccess().getOwnedParametersAssignment_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getGroup_5_1()); }
+(rule__LibOperationCS__Group_5_1__0)*
+{ after(grammarAccess.getLibOperationCSAccess().getGroup_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibOperationCS__Group_5_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_5_1__0__Impl
+	rule__LibOperationCS__Group_5_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_5_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getCommaKeyword_5_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getCommaKeyword_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group_5_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_5_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_5_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedParametersAssignment_5_1_1()); }
+(rule__LibOperationCS__OwnedParametersAssignment_5_1_1)
+{ after(grammarAccess.getLibOperationCSAccess().getOwnedParametersAssignment_5_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibOperationCS__Group_11__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_11__0__Impl
+	rule__LibOperationCS__Group_11__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_11__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getPrecedenceKeyword_11_0()); }
+
+	'precedence' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getPrecedenceKeyword_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group_11__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_11__1__Impl
+	rule__LibOperationCS__Group_11__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_11__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getEqualsSignKeyword_11_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getEqualsSignKeyword_11_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group_11__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_11__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_11__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getPrecedenceAssignment_11_2()); }
+(rule__LibOperationCS__PrecedenceAssignment_11_2)
+{ after(grammarAccess.getLibOperationCSAccess().getPrecedenceAssignment_11_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LibOperationCS__Group_12__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_12__0__Impl
+	rule__LibOperationCS__Group_12__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_12__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getEqualsSignGreaterThanSignKeyword_12_0()); }
+
+	'=>' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getEqualsSignGreaterThanSignKeyword_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group_12__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_12__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_12__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getImplementationAssignment_12_1()); }
+(rule__LibOperationCS__ImplementationAssignment_12_1)
+{ after(grammarAccess.getLibOperationCSAccess().getImplementationAssignment_12_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibOperationCS__Group_13_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_13_0__0__Impl
+	rule__LibOperationCS__Group_13_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_13_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getLeftCurlyBracketKeyword_13_0_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getLeftCurlyBracketKeyword_13_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group_13_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_13_0__1__Impl
+	rule__LibOperationCS__Group_13_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_13_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getAlternatives_13_0_1()); }
+(rule__LibOperationCS__Alternatives_13_0_1)*
+{ after(grammarAccess.getLibOperationCSAccess().getAlternatives_13_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group_13_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_13_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_13_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getRightCurlyBracketKeyword_13_0_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getRightCurlyBracketKeyword_13_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LibOperationCS__Group_13_0_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_13_0_1_1__0__Impl
+	rule__LibOperationCS__Group_13_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_13_0_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getBodyKeyword_13_0_1_1_0()); }
+
+	'body' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getBodyKeyword_13_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group_13_0_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_13_0_1_1__1__Impl
+	rule__LibOperationCS__Group_13_0_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_13_0_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getUnrestrictedNameParserRuleCall_13_0_1_1_1()); }
+(	ruleUnrestrictedName)?
+{ after(grammarAccess.getLibOperationCSAccess().getUnrestrictedNameParserRuleCall_13_0_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group_13_0_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_13_0_1_1__2__Impl
+	rule__LibOperationCS__Group_13_0_1_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_13_0_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getColonKeyword_13_0_1_1_2()); }
+
+	':' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getColonKeyword_13_0_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group_13_0_1_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_13_0_1_1__3__Impl
+	rule__LibOperationCS__Group_13_0_1_1__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_13_0_1_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedBodyExpressionsAssignment_13_0_1_1_3()); }
+(rule__LibOperationCS__OwnedBodyExpressionsAssignment_13_0_1_1_3)
+{ after(grammarAccess.getLibOperationCSAccess().getOwnedBodyExpressionsAssignment_13_0_1_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibOperationCS__Group_13_0_1_1__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibOperationCS__Group_13_0_1_1__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__Group_13_0_1_1__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getSemicolonKeyword_13_0_1_1_4()); }
+
+	';' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getSemicolonKeyword_13_0_1_1_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LibPackageCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPackageCS__Group__0__Impl
+	rule__LibPackageCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getLibraryKeyword_0()); }
+
+	'library' 
+
+{ after(grammarAccess.getLibPackageCSAccess().getLibraryKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPackageCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPackageCS__Group__1__Impl
+	rule__LibPackageCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getNameAssignment_1()); }
+(rule__LibPackageCS__NameAssignment_1)
+{ after(grammarAccess.getLibPackageCSAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPackageCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPackageCS__Group__2__Impl
+	rule__LibPackageCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getGroup_2()); }
+(rule__LibPackageCS__Group_2__0)?
+{ after(grammarAccess.getLibPackageCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPackageCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPackageCS__Group__3__Impl
+	rule__LibPackageCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getLibPackageCSAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPackageCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPackageCS__Group__4__Impl
+	rule__LibPackageCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getAlternatives_4()); }
+(rule__LibPackageCS__Alternatives_4)*
+{ after(grammarAccess.getLibPackageCSAccess().getAlternatives_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPackageCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPackageCS__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getLibPackageCSAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LibPackageCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPackageCS__Group_2__0__Impl
+	rule__LibPackageCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getLibPackageCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPackageCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPackageCS__Group_2__1__Impl
+	rule__LibPackageCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getNsPrefixAssignment_2_1()); }
+(rule__LibPackageCS__NsPrefixAssignment_2_1)
+{ after(grammarAccess.getLibPackageCSAccess().getNsPrefixAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPackageCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPackageCS__Group_2__2__Impl
+	rule__LibPackageCS__Group_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getEqualsSignKeyword_2_2()); }
+
+	'=' 
+
+{ after(grammarAccess.getLibPackageCSAccess().getEqualsSignKeyword_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPackageCS__Group_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPackageCS__Group_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__Group_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getNsURIAssignment_2_3()); }
+(rule__LibPackageCS__NsURIAssignment_2_3)
+{ after(grammarAccess.getLibPackageCSAccess().getNsURIAssignment_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__LibPackageCS__Group_4_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPackageCS__Group_4_1__0__Impl
+	rule__LibPackageCS__Group_4_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__Group_4_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getPrecedenceKeyword_4_1_0()); }
+
+	'precedence' 
+
+{ after(grammarAccess.getLibPackageCSAccess().getPrecedenceKeyword_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPackageCS__Group_4_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPackageCS__Group_4_1__1__Impl
+	rule__LibPackageCS__Group_4_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__Group_4_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+(
+{ before(grammarAccess.getLibPackageCSAccess().getOwnedPrecedencesAssignment_4_1_1()); }
+(rule__LibPackageCS__OwnedPrecedencesAssignment_4_1_1)
+{ after(grammarAccess.getLibPackageCSAccess().getOwnedPrecedencesAssignment_4_1_1()); }
+)
+(
+{ before(grammarAccess.getLibPackageCSAccess().getOwnedPrecedencesAssignment_4_1_1()); }
+(rule__LibPackageCS__OwnedPrecedencesAssignment_4_1_1)*
+{ after(grammarAccess.getLibPackageCSAccess().getOwnedPrecedencesAssignment_4_1_1()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPackageCS__Group_4_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPackageCS__Group_4_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__Group_4_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getSemicolonKeyword_4_1_2()); }
+
+	';' 
+
+{ after(grammarAccess.getLibPackageCSAccess().getSemicolonKeyword_4_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PackageCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group__0__Impl
+	rule__PackageCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getPackageKeyword_0()); }
+
+	'package' 
+
+{ after(grammarAccess.getPackageCSAccess().getPackageKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group__1__Impl
+	rule__PackageCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getNameAssignment_1()); }
+(rule__PackageCS__NameAssignment_1)
+{ after(grammarAccess.getPackageCSAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group__2__Impl
+	rule__PackageCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getGroup_2()); }
+(rule__PackageCS__Group_2__0)?
+{ after(grammarAccess.getPackageCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group__3__Impl
+	rule__PackageCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getPackageCSAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group__4__Impl
+	rule__PackageCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getAlternatives_4()); }
+(rule__PackageCS__Alternatives_4)*
+{ after(grammarAccess.getPackageCSAccess().getAlternatives_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getPackageCSAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PackageCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group_2__0__Impl
+	rule__PackageCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getPackageCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group_2__1__Impl
+	rule__PackageCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getNsPrefixAssignment_2_1()); }
+(rule__PackageCS__NsPrefixAssignment_2_1)
+{ after(grammarAccess.getPackageCSAccess().getNsPrefixAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group_2__2__Impl
+	rule__PackageCS__Group_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getEqualsSignKeyword_2_2()); }
+
+	'=' 
+
+{ after(grammarAccess.getPackageCSAccess().getEqualsSignKeyword_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PackageCS__Group_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PackageCS__Group_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__Group_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getNsURIAssignment_2_3()); }
+(rule__PackageCS__NsURIAssignment_2_3)
+{ after(grammarAccess.getPackageCSAccess().getNsURIAssignment_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__ParameterCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group__0__Impl
+	rule__ParameterCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getNameAssignment_0()); }
+(rule__ParameterCS__NameAssignment_0)
+{ after(grammarAccess.getParameterCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ParameterCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group__1__Impl
+	rule__ParameterCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getColonKeyword_1()); }
+
+	':' 
+
+{ after(grammarAccess.getParameterCSAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ParameterCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ParameterCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getOwnedTypeAssignment_2()); }
+(rule__ParameterCS__OwnedTypeAssignment_2)
+{ after(grammarAccess.getParameterCSAccess().getOwnedTypeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LibPropertyCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPropertyCS__Group__0__Impl
+	rule__LibPropertyCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getIsStaticAssignment_0()); }
+(rule__LibPropertyCS__IsStaticAssignment_0)?
+{ after(grammarAccess.getLibPropertyCSAccess().getIsStaticAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPropertyCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPropertyCS__Group__1__Impl
+	rule__LibPropertyCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getPropertyKeyword_1()); }
+
+	'property' 
+
+{ after(grammarAccess.getLibPropertyCSAccess().getPropertyKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPropertyCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPropertyCS__Group__2__Impl
+	rule__LibPropertyCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getNameAssignment_2()); }
+(rule__LibPropertyCS__NameAssignment_2)
+{ after(grammarAccess.getLibPropertyCSAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPropertyCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPropertyCS__Group__3__Impl
+	rule__LibPropertyCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getColonKeyword_3()); }
+
+	':' 
+
+{ after(grammarAccess.getLibPropertyCSAccess().getColonKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPropertyCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPropertyCS__Group__4__Impl
+	rule__LibPropertyCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getOwnedTypeAssignment_4()); }
+(rule__LibPropertyCS__OwnedTypeAssignment_4)
+{ after(grammarAccess.getLibPropertyCSAccess().getOwnedTypeAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPropertyCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPropertyCS__Group__5__Impl
+	rule__LibPropertyCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getGroup_5()); }
+(rule__LibPropertyCS__Group_5__0)?
+{ after(grammarAccess.getLibPropertyCSAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPropertyCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPropertyCS__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getAlternatives_6()); }
+(rule__LibPropertyCS__Alternatives_6)
+{ after(grammarAccess.getLibPropertyCSAccess().getAlternatives_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LibPropertyCS__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPropertyCS__Group_5__0__Impl
+	rule__LibPropertyCS__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getEqualsSignGreaterThanSignKeyword_5_0()); }
+
+	'=>' 
+
+{ after(grammarAccess.getLibPropertyCSAccess().getEqualsSignGreaterThanSignKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPropertyCS__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPropertyCS__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getImplementationAssignment_5_1()); }
+(rule__LibPropertyCS__ImplementationAssignment_5_1)
+{ after(grammarAccess.getLibPropertyCSAccess().getImplementationAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LibPropertyCS__Group_6_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPropertyCS__Group_6_0__0__Impl
+	rule__LibPropertyCS__Group_6_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__Group_6_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getLeftCurlyBracketKeyword_6_0_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getLibPropertyCSAccess().getLeftCurlyBracketKeyword_6_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPropertyCS__Group_6_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPropertyCS__Group_6_0__1__Impl
+	rule__LibPropertyCS__Group_6_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__Group_6_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getOwnedAnnotationsAssignment_6_0_1()); }
+(rule__LibPropertyCS__OwnedAnnotationsAssignment_6_0_1)*
+{ after(grammarAccess.getLibPropertyCSAccess().getOwnedAnnotationsAssignment_6_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LibPropertyCS__Group_6_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LibPropertyCS__Group_6_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__Group_6_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getRightCurlyBracketKeyword_6_0_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getLibPropertyCSAccess().getRightCurlyBracketKeyword_6_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PostCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostCS__Group__0__Impl
+	rule__PostCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostCSAccess().getStereotypeAssignment_0()); }
+(rule__PostCS__StereotypeAssignment_0)
+{ after(grammarAccess.getPostCSAccess().getStereotypeAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PostCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostCS__Group__1__Impl
+	rule__PostCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostCSAccess().getGroup_1()); }
+(rule__PostCS__Group_1__0)?
+{ after(grammarAccess.getPostCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PostCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostCS__Group__2__Impl
+	rule__PostCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostCSAccess().getColonKeyword_2()); }
+
+	':' 
+
+{ after(grammarAccess.getPostCSAccess().getColonKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PostCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostCS__Group__3__Impl
+	rule__PostCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostCSAccess().getOwnedSpecificationAssignment_3()); }
+(rule__PostCS__OwnedSpecificationAssignment_3)
+{ after(grammarAccess.getPostCSAccess().getOwnedSpecificationAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PostCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostCSAccess().getSemicolonKeyword_4()); }
+
+	';' 
+
+{ after(grammarAccess.getPostCSAccess().getSemicolonKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PostCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostCS__Group_1__0__Impl
+	rule__PostCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostCSAccess().getNameAssignment_1_0()); }
+(rule__PostCS__NameAssignment_1_0)
+{ after(grammarAccess.getPostCSAccess().getNameAssignment_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PostCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostCSAccess().getGroup_1_1()); }
+(rule__PostCS__Group_1_1__0)?
+{ after(grammarAccess.getPostCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PostCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostCS__Group_1_1__0__Impl
+	rule__PostCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostCSAccess().getLeftParenthesisKeyword_1_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getPostCSAccess().getLeftParenthesisKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PostCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostCS__Group_1_1__1__Impl
+	rule__PostCS__Group_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }
+(rule__PostCS__OwnedMessageSpecificationAssignment_1_1_1)
+{ after(grammarAccess.getPostCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PostCS__Group_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PostCS__Group_1_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostCS__Group_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostCSAccess().getRightParenthesisKeyword_1_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getPostCSAccess().getRightParenthesisKeyword_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PreCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreCS__Group__0__Impl
+	rule__PreCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreCSAccess().getStereotypeAssignment_0()); }
+(rule__PreCS__StereotypeAssignment_0)
+{ after(grammarAccess.getPreCSAccess().getStereotypeAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PreCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreCS__Group__1__Impl
+	rule__PreCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreCSAccess().getGroup_1()); }
+(rule__PreCS__Group_1__0)?
+{ after(grammarAccess.getPreCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PreCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreCS__Group__2__Impl
+	rule__PreCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreCSAccess().getColonKeyword_2()); }
+
+	':' 
+
+{ after(grammarAccess.getPreCSAccess().getColonKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PreCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreCS__Group__3__Impl
+	rule__PreCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreCSAccess().getOwnedSpecificationAssignment_3()); }
+(rule__PreCS__OwnedSpecificationAssignment_3)
+{ after(grammarAccess.getPreCSAccess().getOwnedSpecificationAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PreCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreCSAccess().getSemicolonKeyword_4()); }
+
+	';' 
+
+{ after(grammarAccess.getPreCSAccess().getSemicolonKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PreCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreCS__Group_1__0__Impl
+	rule__PreCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreCSAccess().getNameAssignment_1_0()); }
+(rule__PreCS__NameAssignment_1_0)
+{ after(grammarAccess.getPreCSAccess().getNameAssignment_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PreCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreCSAccess().getGroup_1_1()); }
+(rule__PreCS__Group_1_1__0)?
+{ after(grammarAccess.getPreCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PreCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreCS__Group_1_1__0__Impl
+	rule__PreCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreCSAccess().getLeftParenthesisKeyword_1_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getPreCSAccess().getLeftParenthesisKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PreCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreCS__Group_1_1__1__Impl
+	rule__PreCS__Group_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }
+(rule__PreCS__OwnedMessageSpecificationAssignment_1_1_1)
+{ after(grammarAccess.getPreCSAccess().getOwnedMessageSpecificationAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PreCS__Group_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PreCS__Group_1_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreCS__Group_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreCSAccess().getRightParenthesisKeyword_1_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getPreCSAccess().getRightParenthesisKeyword_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PrecedenceCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrecedenceCS__Group__0__Impl
+	rule__PrecedenceCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrecedenceCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrecedenceCSAccess().getAlternatives_0()); }
+(rule__PrecedenceCS__Alternatives_0)
+{ after(grammarAccess.getPrecedenceCSAccess().getAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrecedenceCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrecedenceCS__Group__1__Impl
+	rule__PrecedenceCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrecedenceCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrecedenceCSAccess().getColonKeyword_1()); }
+
+	':' 
+
+{ after(grammarAccess.getPrecedenceCSAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrecedenceCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrecedenceCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrecedenceCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrecedenceCSAccess().getNameAssignment_2()); }
+(rule__PrecedenceCS__NameAssignment_2)
+{ after(grammarAccess.getPrecedenceCSAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TypedMultiplicityRefCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedMultiplicityRefCS__Group__0__Impl
+	rule__TypedMultiplicityRefCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedMultiplicityRefCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getAlternatives_0()); }
+(rule__TypedMultiplicityRefCS__Alternatives_0)
+{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedMultiplicityRefCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedMultiplicityRefCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedMultiplicityRefCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityAssignment_1()); }
+(rule__TypedMultiplicityRefCS__OwnedMultiplicityAssignment_1)?
+{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypedTypeRefCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedTypeRefCS__Group_0__0__Impl
+	rule__TypedTypeRefCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getIsTypeofAssignment_0_0()); }
+(rule__TypedTypeRefCS__IsTypeofAssignment_0_0)
+{ after(grammarAccess.getTypedTypeRefCSAccess().getIsTypeofAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedTypeRefCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedTypeRefCS__Group_0__1__Impl
+	rule__TypedTypeRefCS__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getLeftParenthesisKeyword_0_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getTypedTypeRefCSAccess().getLeftParenthesisKeyword_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedTypeRefCS__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedTypeRefCS__Group_0__2__Impl
+	rule__TypedTypeRefCS__Group_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0_2()); }
+(rule__TypedTypeRefCS__OwnedPathNameAssignment_0_2)
+{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedTypeRefCS__Group_0__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedTypeRefCS__Group_0__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Group_0__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getRightParenthesisKeyword_0_3()); }
+
+	')' 
+
+{ after(grammarAccess.getTypedTypeRefCSAccess().getRightParenthesisKeyword_0_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TypedTypeRefCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedTypeRefCS__Group_1__0__Impl
+	rule__TypedTypeRefCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_1_0()); }
+(rule__TypedTypeRefCS__OwnedPathNameAssignment_1_0)
+{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameAssignment_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedTypeRefCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedTypeRefCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1_1()); }
+(rule__TypedTypeRefCS__OwnedBindingAssignment_1_1)?
+{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TuplePartCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TuplePartCS__Group__0__Impl
+	rule__TuplePartCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }
+(rule__TuplePartCS__NameAssignment_0)
+{ after(grammarAccess.getTuplePartCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TuplePartCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TuplePartCS__Group__1__Impl
+	rule__TuplePartCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }
+
+	':' 
+
+{ after(grammarAccess.getTuplePartCSAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TuplePartCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TuplePartCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }
+(rule__TuplePartCS__OwnedTypeAssignment_2)
+{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__URIFirstPathElementCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIFirstPathElementCS__Group_1__0__Impl
+	rule__URIFirstPathElementCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }
+(
+
+)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__URIFirstPathElementCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__URIFirstPathElementCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }
+(rule__URIFirstPathElementCS__ReferredElementAssignment_1_1)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionTypeCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group__0__Impl
+	rule__CollectionTypeCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }
+(rule__CollectionTypeCS__NameAssignment_0)
+{ after(grammarAccess.getCollectionTypeCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionTypeCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }
+(rule__CollectionTypeCS__Group_1__0)?
+{ after(grammarAccess.getCollectionTypeCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionTypeCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group_1__0__Impl
+	rule__CollectionTypeCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionTypeCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group_1__1__Impl
+	rule__CollectionTypeCS__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }
+(rule__CollectionTypeCS__OwnedTypeAssignment_1_1)
+{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionTypeCS__Group_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionTypeCS__Group_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__Group_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TupleTypeCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group__0__Impl
+	rule__TupleTypeCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }
+(rule__TupleTypeCS__NameAssignment_0)
+{ after(grammarAccess.getTupleTypeCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }
+(rule__TupleTypeCS__Group_1__0)?
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TupleTypeCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1__0__Impl
+	rule__TupleTypeCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1__1__Impl
+	rule__TupleTypeCS__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }
+(rule__TupleTypeCS__Group_1_1__0)?
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TupleTypeCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1__0__Impl
+	rule__TupleTypeCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }
+(rule__TupleTypeCS__OwnedPartsAssignment_1_1_0)
+{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }
+(rule__TupleTypeCS__Group_1_1_1__0)*
+{ after(grammarAccess.getTupleTypeCSAccess().getGroup_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TupleTypeCS__Group_1_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1_1__0__Impl
+	rule__TupleTypeCS__Group_1_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleTypeCS__Group_1_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleTypeCS__Group_1_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__Group_1_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }
+(rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1)
+{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsAssignment_1_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__0__Impl
+	rule__CollectionLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }
+(rule__CollectionLiteralExpCS__OwnedTypeAssignment_0)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__1__Impl
+	rule__CollectionLiteralExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__2__Impl
+	rule__CollectionLiteralExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }
+(rule__CollectionLiteralExpCS__Group_2__0)?
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__CollectionLiteralExpCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2__0__Impl
+	rule__CollectionLiteralExpCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }
+(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }
+(rule__CollectionLiteralExpCS__Group_2_1__0)*
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionLiteralExpCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2_1__0__Impl
+	rule__CollectionLiteralExpCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralExpCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralExpCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }
+(rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1)
+{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionLiteralPartCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0__0__Impl
+	rule__CollectionLiteralPartCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }
+(rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralPartCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }
+(rule__CollectionLiteralPartCS__Group_0_1__0)?
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getGroup_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionLiteralPartCS__Group_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0_1__0__Impl
+	rule__CollectionLiteralPartCS__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }
+
+	'..' 
+
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionLiteralPartCS__Group_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionLiteralPartCS__Group_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__Group_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }
+(rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1)
+{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionAssignment_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionPatternCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__0__Impl
+	rule__CollectionPatternCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }
+(rule__CollectionPatternCS__OwnedTypeAssignment_0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__1__Impl
+	rule__CollectionPatternCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__2__Impl
+	rule__CollectionPatternCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }
+(rule__CollectionPatternCS__Group_2__0)?
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__CollectionPatternCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2__0__Impl
+	rule__CollectionPatternCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }
+(rule__CollectionPatternCS__OwnedPartsAssignment_2_0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2__1__Impl
+	rule__CollectionPatternCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }
+(rule__CollectionPatternCS__Group_2_1__0)*
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }
+(rule__CollectionPatternCS__Group_2_2__0)
+{ after(grammarAccess.getCollectionPatternCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__CollectionPatternCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_1__0__Impl
+	rule__CollectionPatternCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }
+(rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1)
+{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CollectionPatternCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_2__0__Impl
+	rule__CollectionPatternCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }
+
+	'++' 
+
+{ after(grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CollectionPatternCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CollectionPatternCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }
+(rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1)
+{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ConstructorPartCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstructorPartCS__Group__0__Impl
+	rule__ConstructorPartCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }
+(rule__ConstructorPartCS__ReferredPropertyAssignment_0)
+{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstructorPartCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstructorPartCS__Group__1__Impl
+	rule__ConstructorPartCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstructorPartCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstructorPartCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }
+(rule__ConstructorPartCS__OwnedInitExpressionAssignment_2)
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PatternExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PatternExpCS__Group__0__Impl
+	rule__PatternExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }
+(rule__PatternExpCS__PatternVariableNameAssignment_0)?
+{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PatternExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PatternExpCS__Group__1__Impl
+	rule__PatternExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }
+
+	':' 
+
+{ after(grammarAccess.getPatternExpCSAccess().getColonKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PatternExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PatternExpCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }
+(rule__PatternExpCS__OwnedPatternTypeAssignment_2)
+{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__LambdaLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__0__Impl
+	rule__LambdaLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }
+
+	'Lambda' 
+
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__1__Impl
+	rule__LambdaLiteralExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaLiteralExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__2__Impl
+	rule__LambdaLiteralExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }
+(rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2)
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LambdaLiteralExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LambdaLiteralExpCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TupleLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__0__Impl
+	rule__TupleLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }
+
+	'Tuple' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__1__Impl
+	rule__TupleLiteralExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__2__Impl
+	rule__TupleLiteralExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }
+(rule__TupleLiteralExpCS__OwnedPartsAssignment_2)
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__3__Impl
+	rule__TupleLiteralExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }
+(rule__TupleLiteralExpCS__Group_3__0)*
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__TupleLiteralExpCS__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group_3__0__Impl
+	rule__TupleLiteralExpCS__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralExpCS__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralExpCS__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }
+(rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1)
+{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TupleLiteralPartCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__0__Impl
+	rule__TupleLiteralPartCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }
+(rule__TupleLiteralPartCS__NameAssignment_0)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__1__Impl
+	rule__TupleLiteralPartCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }
+(rule__TupleLiteralPartCS__Group_1__0)?
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__2__Impl
+	rule__TupleLiteralPartCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }
+
+	'=' 
+
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }
+(rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TupleLiteralPartCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group_1__0__Impl
+	rule__TupleLiteralPartCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }
+
+	':' 
+
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TupleLiteralPartCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TupleLiteralPartCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }
+(rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1)
+{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__UnlimitedNaturalLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl
+	rule__UnlimitedNaturalLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UnlimitedNaturalLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__UnlimitedNaturalLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UnlimitedNaturalLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }
+
+	'*' 
+
+{ after(grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__InvalidLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvalidLiteralExpCS__Group__0__Impl
+	rule__InvalidLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvalidLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InvalidLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InvalidLiteralExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvalidLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }
+
+	'invalid' 
+
+{ after(grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NullLiteralExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NullLiteralExpCS__Group__0__Impl
+	rule__NullLiteralExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NullLiteralExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NullLiteralExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NullLiteralExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NullLiteralExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }
+
+	'null' 
+
+{ after(grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeLiteralWithMultiplicityCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeLiteralWithMultiplicityCS__Group__0__Impl
+	rule__TypeLiteralWithMultiplicityCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralWithMultiplicityCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }
+	ruleTypeLiteralCS
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeLiteralWithMultiplicityCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeLiteralWithMultiplicityCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralWithMultiplicityCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }
+(rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1)?
+{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeNameExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group__0__Impl
+	rule__TypeNameExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+(rule__TypeNameExpCS__OwnedPathNameAssignment_0)
+{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }
+(rule__TypeNameExpCS__Group_1__0)?
+{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeNameExpCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1__0__Impl
+	rule__TypeNameExpCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }
+(rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0)
+{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }
+(rule__TypeNameExpCS__Group_1_1__0)?
+{ after(grammarAccess.getTypeNameExpCSAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeNameExpCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1_1__0__Impl
+	rule__TypeNameExpCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1_1__1__Impl
+	rule__TypeNameExpCS__Group_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }
+(rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1)
+{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeNameExpCS__Group_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeNameExpCS__Group_1_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__Group_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TypeExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeExpCS__Group__0__Impl
+	rule__TypeExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }
+(rule__TypeExpCS__Alternatives_0)
+{ after(grammarAccess.getTypeExpCSAccess().getAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }
+(rule__TypeExpCS__OwnedMultiplicityAssignment_1)?
+{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ExpCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0__0__Impl
+	rule__ExpCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }
+	rulePrefixedPrimaryExpCS
+{ after(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExpCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getGroup_0_1()); }
+(rule__ExpCS__Group_0_1__0)?
+{ after(grammarAccess.getExpCSAccess().getGroup_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ExpCS__Group_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0_1__0__Impl
+	rule__ExpCS__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }
+(
+
+)
+{ after(grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExpCS__Group_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0_1__1__Impl
+	rule__ExpCS__Group_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }
+(rule__ExpCS__NameAssignment_0_1_1)
+{ after(grammarAccess.getExpCSAccess().getNameAssignment_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExpCS__Group_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExpCS__Group_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__Group_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }
+(rule__ExpCS__OwnedRightAssignment_0_1_2)
+{ after(grammarAccess.getExpCSAccess().getOwnedRightAssignment_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PrefixedLetExpCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedLetExpCS__Group_0__0__Impl
+	rule__PrefixedLetExpCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }
+(
+
+)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedLetExpCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedLetExpCS__Group_0__1__Impl
+	rule__PrefixedLetExpCS__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }
+(rule__PrefixedLetExpCS__NameAssignment_0_1)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedLetExpCS__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedLetExpCS__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }
+(rule__PrefixedLetExpCS__OwnedRightAssignment_0_2)
+{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightAssignment_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PrefixedPrimaryExpCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedPrimaryExpCS__Group_0__0__Impl
+	rule__PrefixedPrimaryExpCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }
+(
+
+)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedPrimaryExpCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedPrimaryExpCS__Group_0__1__Impl
+	rule__PrefixedPrimaryExpCS__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }
+(rule__PrefixedPrimaryExpCS__NameAssignment_0_1)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PrefixedPrimaryExpCS__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PrefixedPrimaryExpCS__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }
+(rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2)
+{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightAssignment_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NameExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__0__Impl
+	rule__NameExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+(rule__NameExpCS__OwnedPathNameAssignment_0)
+{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__1__Impl
+	rule__NameExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }
+(rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1)*
+{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__2__Impl
+	rule__NameExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }
+(rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2)?
+{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__3__Impl
+	rule__NameExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }
+(rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3)?
+{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getGroup_4()); }
+(rule__NameExpCS__Group_4__0)?
+{ after(grammarAccess.getNameExpCSAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NameExpCS__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group_4__0__Impl
+	rule__NameExpCS__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }
+(rule__NameExpCS__IsPreAssignment_4_0)
+{ after(grammarAccess.getNameExpCSAccess().getIsPreAssignment_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NameExpCS__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NameExpCS__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }
+
+	'pre' 
+
+{ after(grammarAccess.getNameExpCSAccess().getPreKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CurlyBracketedClauseCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__0__Impl
+	rule__CurlyBracketedClauseCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__1__Impl
+	rule__CurlyBracketedClauseCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__2__Impl
+	rule__CurlyBracketedClauseCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }
+(rule__CurlyBracketedClauseCS__Alternatives_2)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__CurlyBracketedClauseCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0__0__Impl
+	rule__CurlyBracketedClauseCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }
+(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }
+(rule__CurlyBracketedClauseCS__Group_2_0_1__0)*
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl
+	rule__CurlyBracketedClauseCS__Group_2_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__Group_2_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }
+(rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1)
+{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsAssignment_2_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__0__Impl
+	rule__RoundBracketedClauseCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__1__Impl
+	rule__RoundBracketedClauseCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__2__Impl
+	rule__RoundBracketedClauseCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }
+(rule__RoundBracketedClauseCS__Group_2__0)?
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }
+
+	')' 
+
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__0__Impl
+	rule__RoundBracketedClauseCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__1__Impl
+	rule__RoundBracketedClauseCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__2__Impl
+	rule__RoundBracketedClauseCS__Group_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }
+(rule__RoundBracketedClauseCS__Group_2_2__0)?
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }
+(rule__RoundBracketedClauseCS__Group_2_3__0)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getGroup_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_2__0__Impl
+	rule__RoundBracketedClauseCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RoundBracketedClauseCS__Group_2_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_3__0__Impl
+	rule__RoundBracketedClauseCS__Group_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0)
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoundBracketedClauseCS__Group_2_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoundBracketedClauseCS__Group_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__Group_2_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }
+(rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1)*
+{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsAssignment_2_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__SquareBracketedClauseCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__0__Impl
+	rule__SquareBracketedClauseCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__1__Impl
+	rule__SquareBracketedClauseCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }
+(rule__SquareBracketedClauseCS__OwnedTermsAssignment_1)
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__2__Impl
+	rule__SquareBracketedClauseCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }
+(rule__SquareBracketedClauseCS__Group_2__0)*
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }
+
+	']' 
+
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__SquareBracketedClauseCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group_2__0__Impl
+	rule__SquareBracketedClauseCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SquareBracketedClauseCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SquareBracketedClauseCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }
+(rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1)
+{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0__0__Impl
+	rule__NavigatingArgCS__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }
+(rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }
+(rule__NavigatingArgCS__Alternatives_0_1)?
+{ after(grammarAccess.getNavigatingArgCSAccess().getAlternatives_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0_1_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0__0__Impl
+	rule__NavigatingArgCS__Group_0_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0__1__Impl
+	rule__NavigatingArgCS__Group_0_1_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }
+(rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_0_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }
+(rule__NavigatingArgCS__Group_0_1_0_2__0)?
+{ after(grammarAccess.getNavigatingArgCSAccess().getGroup_0_1_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0_1_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0_2__0__Impl
+	rule__NavigatingArgCS__Group_0_1_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }
+(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_0_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_1__0__Impl
+	rule__NavigatingArgCS__Group_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }
+
+	'in' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_0_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_0_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_0_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }
+(rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionAssignment_0_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingArgCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_1__0__Impl
+	rule__NavigatingArgCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingArgCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingArgCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }
+(rule__NavigatingArgCS__OwnedTypeAssignment_1_1)
+{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingBarArgCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group__0__Impl
+	rule__NavigatingBarArgCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }
+(rule__NavigatingBarArgCS__PrefixAssignment_0)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group__1__Impl
+	rule__NavigatingBarArgCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+(rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }
+(rule__NavigatingBarArgCS__Group_2__0)?
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingBarArgCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2__0__Impl
+	rule__NavigatingBarArgCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2__1__Impl
+	rule__NavigatingBarArgCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }
+(rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }
+(rule__NavigatingBarArgCS__Group_2_2__0)?
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingBarArgCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2_2__0__Impl
+	rule__NavigatingBarArgCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingBarArgCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingBarArgCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+(rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1)
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group__0__Impl
+	rule__NavigatingCommaArgCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }
+(rule__NavigatingCommaArgCS__PrefixAssignment_0)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group__1__Impl
+	rule__NavigatingCommaArgCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+(rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }
+(rule__NavigatingCommaArgCS__Alternatives_2)?
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0__0__Impl
+	rule__NavigatingCommaArgCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0__1__Impl
+	rule__NavigatingCommaArgCS__Group_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }
+(rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }
+(rule__NavigatingCommaArgCS__Group_2_0_2__0)?
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getGroup_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group_2_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl
+	rule__NavigatingCommaArgCS__Group_2_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }
+(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingCommaArgCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_1__0__Impl
+	rule__NavigatingCommaArgCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }
+
+	'in' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingCommaArgCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingCommaArgCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }
+(rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1)
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NavigatingSemiArgCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group__0__Impl
+	rule__NavigatingSemiArgCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }
+(rule__NavigatingSemiArgCS__PrefixAssignment_0)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group__1__Impl
+	rule__NavigatingSemiArgCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+(rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }
+(rule__NavigatingSemiArgCS__Group_2__0)?
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingSemiArgCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2__0__Impl
+	rule__NavigatingSemiArgCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2__1__Impl
+	rule__NavigatingSemiArgCS__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }
+(rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }
+(rule__NavigatingSemiArgCS__Group_2_2__0)?
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__NavigatingSemiArgCS__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2_2__0__Impl
+	rule__NavigatingSemiArgCS__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+
+	'=' 
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NavigatingSemiArgCS__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NavigatingSemiArgCS__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+(rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1)
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__IfExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__0__Impl
+	rule__IfExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }
+
+	'if' 
+
+{ after(grammarAccess.getIfExpCSAccess().getIfKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__1__Impl
+	rule__IfExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }
+(rule__IfExpCS__OwnedConditionAssignment_1)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__2__Impl
+	rule__IfExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }
+
+	'then' 
+
+{ after(grammarAccess.getIfExpCSAccess().getThenKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__3__Impl
+	rule__IfExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+(rule__IfExpCS__OwnedThenExpressionAssignment_3)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__4__Impl
+	rule__IfExpCS__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }
+(rule__IfExpCS__OwnedIfThenExpressionsAssignment_4)*
+{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__5__Impl
+	rule__IfExpCS__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }
+
+	'else' 
+
+{ after(grammarAccess.getIfExpCSAccess().getElseKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__6__Impl
+	rule__IfExpCS__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }
+(rule__IfExpCS__OwnedElseExpressionAssignment_6)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfExpCS__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfExpCS__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }
+
+	'endif' 
+
+{ after(grammarAccess.getIfExpCSAccess().getEndifKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ElseIfThenExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__0__Impl
+	rule__ElseIfThenExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }
+
+	'elseif' 
+
+{ after(grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ElseIfThenExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__1__Impl
+	rule__ElseIfThenExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }
+(rule__ElseIfThenExpCS__OwnedConditionAssignment_1)
+{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ElseIfThenExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__2__Impl
+	rule__ElseIfThenExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }
+
+	'then' 
+
+{ after(grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ElseIfThenExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ElseIfThenExpCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+(rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3)
+{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__LetExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__0__Impl
+	rule__LetExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }
+
+	'let' 
+
+{ after(grammarAccess.getLetExpCSAccess().getLetKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__1__Impl
+	rule__LetExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }
+(rule__LetExpCS__OwnedVariablesAssignment_1)
+{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__2__Impl
+	rule__LetExpCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getGroup_2()); }
+(rule__LetExpCS__Group_2__0)*
+{ after(grammarAccess.getLetExpCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__3__Impl
+	rule__LetExpCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }
+
+	'in' 
+
+{ after(grammarAccess.getLetExpCSAccess().getInKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }
+(rule__LetExpCS__OwnedInExpressionAssignment_4)
+{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LetExpCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group_2__0__Impl
+	rule__LetExpCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetExpCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetExpCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }
+(rule__LetExpCS__OwnedVariablesAssignment_2_1)
+{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LetVariableCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__0__Impl
+	rule__LetVariableCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }
+(rule__LetVariableCS__NameAssignment_0)
+{ after(grammarAccess.getLetVariableCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__1__Impl
+	rule__LetVariableCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }
+(rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1)?
+{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__2__Impl
+	rule__LetVariableCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getGroup_2()); }
+(rule__LetVariableCS__Group_2__0)?
+{ after(grammarAccess.getLetVariableCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__3__Impl
+	rule__LetVariableCS__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }
+
+	'=' 
+
+{ after(grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }
+(rule__LetVariableCS__OwnedInitExpressionAssignment_4)
+{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__LetVariableCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group_2__0__Impl
+	rule__LetVariableCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }
+
+	':' 
+
+{ after(grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LetVariableCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LetVariableCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }
+(rule__LetVariableCS__OwnedTypeAssignment_2_1)
+{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NestedExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NestedExpCS__Group__0__Impl
+	rule__NestedExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NestedExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NestedExpCS__Group__1__Impl
+	rule__NestedExpCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }
+(rule__NestedExpCS__OwnedExpressionAssignment_1)
+{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NestedExpCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NestedExpCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }
+
+	')' 
+
+{ after(grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__SelfExpCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SelfExpCS__Group__0__Impl
+	rule__SelfExpCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SelfExpCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SelfExpCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SelfExpCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SelfExpCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }
+
+	'self' 
+
+{ after(grammarAccess.getSelfExpCSAccess().getSelfKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MultiplicityBoundsCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group__0__Impl
+	rule__MultiplicityBoundsCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }
+(rule__MultiplicityBoundsCS__LowerBoundAssignment_0)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityBoundsCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }
+(rule__MultiplicityBoundsCS__Group_1__0)?
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MultiplicityBoundsCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group_1__0__Impl
+	rule__MultiplicityBoundsCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }
+
+	'..' 
+
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityBoundsCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityBoundsCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }
+(rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1)
+{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__MultiplicityCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityCS__Group__0__Impl
+	rule__MultiplicityCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityCS__Group__1__Impl
+	rule__MultiplicityCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }
+(rule__MultiplicityCS__Alternatives_1)
+{ after(grammarAccess.getMultiplicityCSAccess().getAlternatives_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MultiplicityCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__MultiplicityCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }
+
+	']' 
+
+{ after(grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__PathNameCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group__0__Impl
+	rule__PathNameCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+(rule__PathNameCS__OwnedPathElementsAssignment_0)
+{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PathNameCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getGroup_1()); }
+(rule__PathNameCS__Group_1__0)*
+{ after(grammarAccess.getPathNameCSAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PathNameCS__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group_1__0__Impl
+	rule__PathNameCS__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }
+
+	'::' 
+
+{ after(grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PathNameCS__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PathNameCS__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+(rule__PathNameCS__OwnedPathElementsAssignment_1_1)
+{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TemplateBindingCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__0__Impl
+	rule__TemplateBindingCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__1__Impl
+	rule__TemplateBindingCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }
+(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1)
+{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__2__Impl
+	rule__TemplateBindingCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }
+(rule__TemplateBindingCS__Group_2__0)*
+{ after(grammarAccess.getTemplateBindingCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }
+
+	')' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TemplateBindingCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_2__0__Impl
+	rule__TemplateBindingCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateBindingCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateBindingCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }
+(rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1)
+{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TemplateSignatureCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group__0__Impl
+	rule__TemplateSignatureCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group__1__Impl
+	rule__TemplateSignatureCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1()); }
+(rule__TemplateSignatureCS__OwnedParametersAssignment_1)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group__2__Impl
+	rule__TemplateSignatureCS__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getGroup_2()); }
+(rule__TemplateSignatureCS__Group_2__0)*
+{ after(grammarAccess.getTemplateSignatureCSAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_3()); }
+
+	')' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TemplateSignatureCS__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_2__0__Impl
+	rule__TemplateSignatureCS__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_2_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TemplateSignatureCS__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TemplateSignatureCS__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_2_1()); }
+(rule__TemplateSignatureCS__OwnedParametersAssignment_2_1)
+{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeParameterCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group__0__Impl
+	rule__TypeParameterCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }
+(rule__TypeParameterCS__NameAssignment_0)
+{ after(grammarAccess.getTypeParameterCSAccess().getNameAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }
+(rule__TypeParameterCS__Alternatives_1)?
+{ after(grammarAccess.getTypeParameterCSAccess().getAlternatives_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__0__Impl
+	rule__TypeParameterCS__Group_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__1__Impl
+	rule__TypeParameterCS__Group_1_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }
+(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }
+(rule__TypeParameterCS__Group_1_0_2__0)*
+{ after(grammarAccess.getTypeParameterCSAccess().getGroup_1_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0_2__0__Impl
+	rule__TypeParameterCS__Group_1_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }
+
+	'&&' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_0_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }
+(rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsAssignment_1_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypeParameterCS__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_1__0__Impl
+	rule__TypeParameterCS__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }
+
+	'super' 
+
+{ after(grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypeParameterCS__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypeParameterCS__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }
+(rule__TypeParameterCS__OwnedSuperAssignment_1_1_1)
+{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__0__Impl
+	rule__WildcardTypeRefCS__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }
+(
+
+)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__1__Impl
+	rule__WildcardTypeRefCS__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }
+
+	'?' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }
+(rule__WildcardTypeRefCS__Alternatives_2)?
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_0__0__Impl
+	rule__WildcardTypeRefCS__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }
+(rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__WildcardTypeRefCS__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_1__0__Impl
+	rule__WildcardTypeRefCS__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }
+
+	'super' 
+
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WildcardTypeRefCS__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WildcardTypeRefCS__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }
+(rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1)
+{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+rule__Library__OwnedLibrariesAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryAccess().getOwnedLibrariesLibraryCSParserRuleCall_0_0_0()); }
+	ruleLibraryCS{ after(grammarAccess.getLibraryAccess().getOwnedLibrariesLibraryCSParserRuleCall_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Library__OwnedPackagesAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryAccess().getOwnedPackagesLibPackageCSParserRuleCall_1_0()); }
+	ruleLibPackageCS{ after(grammarAccess.getLibraryAccess().getOwnedPackagesLibPackageCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPathNameCS__OwnedPathElementsAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsLibPathElementCSParserRuleCall_0_0()); }
+	ruleLibPathElementCS{ after(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsLibPathElementCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPathNameCS__OwnedPathElementsAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsLibPathElementCSParserRuleCall_1_1_0()); }
+	ruleLibPathElementCS{ after(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsLibPathElementCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPathElementCS__ReferredElementAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+(
+{ before(grammarAccess.getLibPathElementCSAccess().getReferredElementNamedElementNameParserRuleCall_0_1()); }
+	ruleName{ after(grammarAccess.getLibPathElementCSAccess().getReferredElementNamedElementNameParserRuleCall_0_1()); }
+)
+{ after(grammarAccess.getLibPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AccumulatorCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAccumulatorCSAccess().getNameIdentifierParserRuleCall_0_0()); }
+	ruleIdentifier{ after(grammarAccess.getAccumulatorCSAccess().getNameIdentifierParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AccumulatorCS__OwnedTypeAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAccumulatorCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }
+	ruleTypedMultiplicityRefCS{ after(grammarAccess.getAccumulatorCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getNameAlternatives_1_0()); }
+(rule__AnnotationCS__NameAlternatives_1_0)
+{ after(grammarAccess.getAnnotationCSAccess().getNameAlternatives_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__OwnedDetailsAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_1_0()); }
+	ruleDetailCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__OwnedDetailsAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_2_1_0()); }
+	ruleDetailCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AnnotationCS__OwnedAnnotationsAssignment_3_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_3_0_1_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_3_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getNameAnyNameParserRuleCall_1_0()); }
+	ruleAnyName{ after(grammarAccess.getLibClassCSAccess().getNameAnyNameParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__OwnedSignatureAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }
+	ruleTemplateSignatureCS{ after(grammarAccess.getLibClassCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__MetaclassNameAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getMetaclassNameMetaclassNameCSCrossReference_3_1_0()); }
+(
+{ before(grammarAccess.getLibClassCSAccess().getMetaclassNameMetaclassNameCSAnyNameParserRuleCall_3_1_0_1()); }
+	ruleAnyName{ after(grammarAccess.getLibClassCSAccess().getMetaclassNameMetaclassNameCSAnyNameParserRuleCall_3_1_0_1()); }
+)
+{ after(grammarAccess.getLibClassCSAccess().getMetaclassNameMetaclassNameCSCrossReference_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__OwnedSuperTypesAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__OwnedSuperTypesAssignment_4_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_2_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__OwnedOperationsAssignment_6_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getOwnedOperationsOperationCSParserRuleCall_6_0_0()); }
+	ruleOperationCS{ after(grammarAccess.getLibClassCSAccess().getOwnedOperationsOperationCSParserRuleCall_6_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__OwnedPropertiesAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getOwnedPropertiesLibPropertyCSParserRuleCall_6_1_0()); }
+	ruleLibPropertyCS{ after(grammarAccess.getLibClassCSAccess().getOwnedPropertiesLibPropertyCSParserRuleCall_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__OwnedConstraintsAssignment_6_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getOwnedConstraintsInvCSParserRuleCall_6_2_0()); }
+	ruleInvCS{ after(grammarAccess.getLibClassCSAccess().getOwnedConstraintsInvCSParserRuleCall_6_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibClassCS__OwnedAnnotationsAssignment_6_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibClassCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_3_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getLibClassCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DetailCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDetailCSAccess().getNameAlternatives_0_0()); }
+(rule__DetailCS__NameAlternatives_0_0)
+{ after(grammarAccess.getDetailCSAccess().getNameAlternatives_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DetailCS__ValuesAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDetailCSAccess().getValuesAlternatives_2_0()); }
+(rule__DetailCS__ValuesAlternatives_2_0)
+{ after(grammarAccess.getDetailCSAccess().getValuesAlternatives_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__ValueAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getValueSINGLE_QUOTED_STRINGTerminalRuleCall_2_0()); }
+	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getDocumentationCSAccess().getValueSINGLE_QUOTED_STRINGTerminalRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__OwnedDetailsAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); }
+	ruleDetailCS{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DocumentationCS__OwnedDetailsAssignment_3_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); }
+	ruleDetailCS{ after(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvCS__StereotypeAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvCSAccess().getStereotypeInvKeyword_0_0()); }
+(
+{ before(grammarAccess.getInvCSAccess().getStereotypeInvKeyword_0_0()); }
+
+	'inv' 
+
+{ after(grammarAccess.getInvCSAccess().getStereotypeInvKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getInvCSAccess().getStereotypeInvKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvCS__NameAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getInvCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvCS__OwnedMessageSpecificationAssignment_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getInvCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InvCS__OwnedSpecificationAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInvCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getInvCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getNameNameParserRuleCall_1_0()); }
+	ruleName{ after(grammarAccess.getLibCoercionCSAccess().getNameNameParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__OwnedTypeAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_5_0()); }
+	ruleTypedMultiplicityRefCS{ after(grammarAccess.getLibCoercionCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__ImplementationAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getImplementationJavaClassCSCrossReference_6_1_0()); }
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_6_1_0_1()); }
+	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getLibCoercionCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_6_1_0_1()); }
+)
+{ after(grammarAccess.getLibCoercionCSAccess().getImplementationJavaClassCSCrossReference_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__OwnedAnnotationsAssignment_7_0_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getLibCoercionCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__OwnedPreconditionsAssignment_7_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getOwnedPreconditionsPostCSParserRuleCall_7_0_1_1_0()); }
+	rulePostCS{ after(grammarAccess.getLibCoercionCSAccess().getOwnedPreconditionsPostCSParserRuleCall_7_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibCoercionCS__OwnedPostconditionsAssignment_7_0_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibCoercionCSAccess().getOwnedPostconditionsPreCSParserRuleCall_7_0_1_2_0()); }
+	rulePreCS{ after(grammarAccess.getLibCoercionCSAccess().getOwnedPostconditionsPreCSParserRuleCall_7_0_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getNameNameParserRuleCall_1_0()); }
+	ruleName{ after(grammarAccess.getLibIterationCSAccess().getNameNameParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__OwnedSignatureAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }
+	ruleTemplateSignatureCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__OwnedIteratorsAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsIteratorCSParserRuleCall_4_0()); }
+	ruleIteratorCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsIteratorCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__OwnedIteratorsAssignment_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsIteratorCSParserRuleCall_5_1_0()); }
+	ruleIteratorCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsIteratorCSParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__OwnedAccumulatorsAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAccumulatorCSParserRuleCall_6_1_0()); }
+	ruleAccumulatorCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAccumulatorCSParserRuleCall_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__OwnedAccumulatorsAssignment_6_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAccumulatorCSParserRuleCall_6_2_1_0()); }
+	ruleAccumulatorCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAccumulatorCSParserRuleCall_6_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__OwnedParametersAssignment_7_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedParametersParameterCSParserRuleCall_7_1_0()); }
+	ruleParameterCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedParametersParameterCSParserRuleCall_7_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__OwnedParametersAssignment_7_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedParametersParameterCSParserRuleCall_7_2_1_0()); }
+	ruleParameterCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedParametersParameterCSParserRuleCall_7_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__OwnedTypeAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_10_0()); }
+	ruleTypedMultiplicityRefCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__IsInvalidatingAssignment_11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getIsInvalidatingInvalidatingKeyword_11_0()); }
+(
+{ before(grammarAccess.getLibIterationCSAccess().getIsInvalidatingInvalidatingKeyword_11_0()); }
+
+	'invalidating' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getIsInvalidatingInvalidatingKeyword_11_0()); }
+)
+
+{ after(grammarAccess.getLibIterationCSAccess().getIsInvalidatingInvalidatingKeyword_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__IsValidatingAssignment_12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getIsValidatingValidatingKeyword_12_0()); }
+(
+{ before(grammarAccess.getLibIterationCSAccess().getIsValidatingValidatingKeyword_12_0()); }
+
+	'validating' 
+
+{ after(grammarAccess.getLibIterationCSAccess().getIsValidatingValidatingKeyword_12_0()); }
+)
+
+{ after(grammarAccess.getLibIterationCSAccess().getIsValidatingValidatingKeyword_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__ImplementationAssignment_13_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getImplementationJavaClassCSCrossReference_13_1_0()); }
+(
+{ before(grammarAccess.getLibIterationCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_13_1_0_1()); }
+	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getLibIterationCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_13_1_0_1()); }
+)
+{ after(grammarAccess.getLibIterationCSAccess().getImplementationJavaClassCSCrossReference_13_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__OwnedAnnotationsAssignment_14_0_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_14_0_1_0_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_14_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__OwnedPreconditionsAssignment_14_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedPreconditionsPostCSParserRuleCall_14_0_1_1_0()); }
+	rulePostCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedPreconditionsPostCSParserRuleCall_14_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibIterationCS__OwnedPostconditionsAssignment_14_0_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibIterationCSAccess().getOwnedPostconditionsPreCSParserRuleCall_14_0_1_2_0()); }
+	rulePreCS{ after(grammarAccess.getLibIterationCSAccess().getOwnedPostconditionsPreCSParserRuleCall_14_0_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IteratorCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIteratorCSAccess().getNameIdentifierParserRuleCall_0_0()); }
+	ruleIdentifier{ after(grammarAccess.getIteratorCSAccess().getNameIdentifierParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IteratorCS__OwnedTypeAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIteratorCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }
+	ruleTypedMultiplicityRefCS{ after(grammarAccess.getIteratorCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getNameLambdaKeyword_0_0()); }
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getNameLambdaKeyword_0_0()); }
+
+	'Lambda' 
+
+{ after(grammarAccess.getLambdaTypeCSAccess().getNameLambdaKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getLambdaTypeCSAccess().getNameLambdaKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__OwnedSignatureAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); }
+	ruleTemplateSignatureCS{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__OwnedContextTypeAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedContextTypeLambdaContextTypeRefCSParserRuleCall_2_0()); }
+	ruleLambdaContextTypeRefCS{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedContextTypeLambdaContextTypeRefCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__OwnedParameterTypesAssignment_4_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesTypedMultiplicityRefCSParserRuleCall_4_0_0()); }
+	ruleTypedMultiplicityRefCS{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesTypedMultiplicityRefCSParserRuleCall_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__OwnedParameterTypesAssignment_4_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesTypedMultiplicityRefCSParserRuleCall_4_1_1_0()); }
+	ruleTypedMultiplicityRefCS{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesTypedMultiplicityRefCSParserRuleCall_4_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaTypeCS__OwnedResultTypeAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaTypeCSAccess().getOwnedResultTypeTypedRefCSParserRuleCall_7_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getLambdaTypeCSAccess().getOwnedResultTypeTypedRefCSParserRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaContextTypeRefCS__OwnedPathNameAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaContextTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_0()); }
+	ruleLibPathNameCS{ after(grammarAccess.getLambdaContextTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibraryCS__ReferredPackageAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_1_0()); }
+(
+{ before(grammarAccess.getLibraryCSAccess().getReferredPackagePackageURIParserRuleCall_1_0_1()); }
+	ruleURI{ after(grammarAccess.getLibraryCSAccess().getReferredPackagePackageURIParserRuleCall_1_0_1()); }
+)
+{ after(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__IsStaticAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getIsStaticStaticKeyword_0_0()); }
+(
+{ before(grammarAccess.getLibOperationCSAccess().getIsStaticStaticKeyword_0_0()); }
+
+	'static' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getIsStaticStaticKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getLibOperationCSAccess().getIsStaticStaticKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__NameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getNameNameParserRuleCall_2_0()); }
+	ruleName{ after(grammarAccess.getLibOperationCSAccess().getNameNameParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__OwnedSignatureAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); }
+	ruleTemplateSignatureCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__OwnedParametersAssignment_5_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_0_0()); }
+	ruleParameterCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__OwnedParametersAssignment_5_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_1_1_0()); }
+	ruleParameterCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__OwnedTypeAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_8_0()); }
+	ruleTypedMultiplicityRefCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__IsValidatingAssignment_9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getIsValidatingValidatingKeyword_9_0()); }
+(
+{ before(grammarAccess.getLibOperationCSAccess().getIsValidatingValidatingKeyword_9_0()); }
+
+	'validating' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getIsValidatingValidatingKeyword_9_0()); }
+)
+
+{ after(grammarAccess.getLibOperationCSAccess().getIsValidatingValidatingKeyword_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__IsInvalidatingAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getIsInvalidatingInvalidatingKeyword_10_0()); }
+(
+{ before(grammarAccess.getLibOperationCSAccess().getIsInvalidatingInvalidatingKeyword_10_0()); }
+
+	'invalidating' 
+
+{ after(grammarAccess.getLibOperationCSAccess().getIsInvalidatingInvalidatingKeyword_10_0()); }
+)
+
+{ after(grammarAccess.getLibOperationCSAccess().getIsInvalidatingInvalidatingKeyword_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__PrecedenceAssignment_11_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getPrecedencePrecedenceCrossReference_11_2_0()); }
+(
+{ before(grammarAccess.getLibOperationCSAccess().getPrecedencePrecedenceNameParserRuleCall_11_2_0_1()); }
+	ruleName{ after(grammarAccess.getLibOperationCSAccess().getPrecedencePrecedenceNameParserRuleCall_11_2_0_1()); }
+)
+{ after(grammarAccess.getLibOperationCSAccess().getPrecedencePrecedenceCrossReference_11_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__ImplementationAssignment_12_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getImplementationJavaClassCSCrossReference_12_1_0()); }
+(
+{ before(grammarAccess.getLibOperationCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_12_1_0_1()); }
+	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getLibOperationCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_12_1_0_1()); }
+)
+{ after(grammarAccess.getLibOperationCSAccess().getImplementationJavaClassCSCrossReference_12_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__OwnedAnnotationsAssignment_13_0_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_13_0_1_0_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_13_0_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__OwnedBodyExpressionsAssignment_13_0_1_1_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedBodyExpressionsSpecificationCSParserRuleCall_13_0_1_1_3_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedBodyExpressionsSpecificationCSParserRuleCall_13_0_1_1_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__OwnedPostconditionsAssignment_13_0_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedPostconditionsPostCSParserRuleCall_13_0_1_2_0()); }
+	rulePostCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedPostconditionsPostCSParserRuleCall_13_0_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibOperationCS__OwnedPreconditionsAssignment_13_0_1_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibOperationCSAccess().getOwnedPreconditionsPreCSParserRuleCall_13_0_1_3_0()); }
+	rulePreCS{ after(grammarAccess.getLibOperationCSAccess().getOwnedPreconditionsPreCSParserRuleCall_13_0_1_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getNameNameParserRuleCall_1_0()); }
+	ruleName{ after(grammarAccess.getLibPackageCSAccess().getNameNameParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__NsPrefixAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getNsPrefixIdentifierParserRuleCall_2_1_0()); }
+	ruleIdentifier{ after(grammarAccess.getLibPackageCSAccess().getNsPrefixIdentifierParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__NsURIAssignment_2_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getNsURIURIParserRuleCall_2_3_0()); }
+	ruleURI{ after(grammarAccess.getLibPackageCSAccess().getNsURIURIParserRuleCall_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__OwnedPackagesAssignment_4_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_0()); }
+	rulePackageCS{ after(grammarAccess.getLibPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__OwnedPrecedencesAssignment_4_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getOwnedPrecedencesPrecedenceCSParserRuleCall_4_1_1_0()); }
+	rulePrecedenceCS{ after(grammarAccess.getLibPackageCSAccess().getOwnedPrecedencesPrecedenceCSParserRuleCall_4_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__OwnedClassesAssignment_4_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_2_0()); }
+	ruleClassCS{ after(grammarAccess.getLibPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPackageCS__OwnedAnnotationsAssignment_4_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_3_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getLibPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getNameNameParserRuleCall_1_0()); }
+	ruleName{ after(grammarAccess.getPackageCSAccess().getNameNameParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__NsPrefixAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getNsPrefixIdentifierParserRuleCall_2_1_0()); }
+	ruleIdentifier{ after(grammarAccess.getPackageCSAccess().getNsPrefixIdentifierParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__NsURIAssignment_2_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getNsURIURIParserRuleCall_2_3_0()); }
+	ruleURI{ after(grammarAccess.getPackageCSAccess().getNsURIURIParserRuleCall_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__OwnedPackagesAssignment_4_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_0()); }
+	rulePackageCS{ after(grammarAccess.getPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__OwnedClassesAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_1_0()); }
+	ruleClassCS{ after(grammarAccess.getPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PackageCS__OwnedAnnotationsAssignment_4_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_2_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getNameIdentifierParserRuleCall_0_0()); }
+	ruleIdentifier{ after(grammarAccess.getParameterCSAccess().getNameIdentifierParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterCS__OwnedTypeAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }
+	ruleTypedMultiplicityRefCS{ after(grammarAccess.getParameterCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__IsStaticAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }
+
+	'static' 
+
+{ after(grammarAccess.getLibPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getLibPropertyCSAccess().getIsStaticStaticKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__NameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getNameNameParserRuleCall_2_0()); }
+	ruleName{ after(grammarAccess.getLibPropertyCSAccess().getNameNameParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__OwnedTypeAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_4_0()); }
+	ruleTypedMultiplicityRefCS{ after(grammarAccess.getLibPropertyCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__ImplementationAssignment_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getImplementationJavaClassCSCrossReference_5_1_0()); }
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0_1()); }
+	RULE_SINGLE_QUOTED_STRING{ after(grammarAccess.getLibPropertyCSAccess().getImplementationJavaClassCSSINGLE_QUOTED_STRINGTerminalRuleCall_5_1_0_1()); }
+)
+{ after(grammarAccess.getLibPropertyCSAccess().getImplementationJavaClassCSCrossReference_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LibPropertyCS__OwnedAnnotationsAssignment_6_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLibPropertyCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0()); }
+	ruleAnnotationElementCS{ after(grammarAccess.getLibPropertyCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostCS__StereotypeAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostCSAccess().getStereotypePostKeyword_0_0()); }
+(
+{ before(grammarAccess.getPostCSAccess().getStereotypePostKeyword_0_0()); }
+
+	'post' 
+
+{ after(grammarAccess.getPostCSAccess().getStereotypePostKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getPostCSAccess().getStereotypePostKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostCS__NameAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getPostCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostCS__OwnedMessageSpecificationAssignment_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getPostCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PostCS__OwnedSpecificationAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPostCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getPostCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreCS__StereotypeAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreCSAccess().getStereotypePreKeyword_0_0()); }
+(
+{ before(grammarAccess.getPreCSAccess().getStereotypePreKeyword_0_0()); }
+
+	'pre' 
+
+{ after(grammarAccess.getPreCSAccess().getStereotypePreKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getPreCSAccess().getStereotypePreKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreCS__NameAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getPreCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreCS__OwnedMessageSpecificationAssignment_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getPreCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PreCS__OwnedSpecificationAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPreCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }
+	ruleSpecificationCS{ after(grammarAccess.getPreCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrecedenceCS__IsRightAssociativeAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrecedenceCSAccess().getIsRightAssociativeRightKeyword_0_1_0()); }
+(
+{ before(grammarAccess.getPrecedenceCSAccess().getIsRightAssociativeRightKeyword_0_1_0()); }
+
+	'right' 
+
+{ after(grammarAccess.getPrecedenceCSAccess().getIsRightAssociativeRightKeyword_0_1_0()); }
+)
+
+{ after(grammarAccess.getPrecedenceCSAccess().getIsRightAssociativeRightKeyword_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrecedenceCS__NameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrecedenceCSAccess().getNameNameParserRuleCall_2_0()); }
+	ruleName{ after(grammarAccess.getPrecedenceCSAccess().getNameNameParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpecificationCS__OwnedExpressionAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0()); }
+	ruleExpCS{ after(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedMultiplicityRefCS__OwnedMultiplicityAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+	ruleMultiplicityCS{ after(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__IsTypeofAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getIsTypeofTypeofKeyword_0_0_0()); }
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getIsTypeofTypeofKeyword_0_0_0()); }
+
+	'typeof' 
+
+{ after(grammarAccess.getTypedTypeRefCSAccess().getIsTypeofTypeofKeyword_0_0_0()); }
+)
+
+{ after(grammarAccess.getTypedTypeRefCSAccess().getIsTypeofTypeofKeyword_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__OwnedPathNameAssignment_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_0_2_0()); }
+	ruleLibPathNameCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__OwnedPathNameAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_1_0_0()); }
+	ruleLibPathNameCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedTypeRefCS__OwnedBindingAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_1_0()); }
+	ruleTemplateBindingCS{ after(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getNameIdentifierParserRuleCall_0_0()); }
+	ruleIdentifier{ after(grammarAccess.getTuplePartCSAccess().getNameIdentifierParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TuplePartCS__OwnedTypeAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }
+	ruleTypedMultiplicityRefCS{ after(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__URIFirstPathElementCS__ReferredElementAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_0_1()); }
+)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__URIFirstPathElementCS__ReferredElementAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }
+(
+{ before(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }
+	ruleURI{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceURIParserRuleCall_1_1_0_1()); }
+)
+{ after(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrimitiveTypeCS__NameAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }
+	rulePrimitiveTypeIdentifier{ after(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }
+	ruleCollectionTypeIdentifier{ after(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionTypeCS__OwnedTypeAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+
+	'Tuple' 
+
+{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__OwnedPartsAssignment_1_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }
+	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleTypeCS__OwnedPartsAssignment_1_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }
+	ruleTuplePartCS{ after(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__OwnedTypeAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+	ruleCollectionTypeCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }
+	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralExpCS__OwnedPartsAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }
+	ruleCollectionLiteralPartCS{ after(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__OwnedExpressionAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }
+	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__OwnedLastExpressionAssignment_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionLiteralPartCS__OwnedExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }
+	rulePatternExpCS{ after(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__OwnedTypeAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+	ruleCollectionTypeCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__OwnedPartsAssignment_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }
+	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__OwnedPartsAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }
+	rulePatternExpCS{ after(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CollectionPatternCS__RestVariableNameAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }
+	ruleIdentifier{ after(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__ReferredPropertyAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyUnrestrictedNameParserRuleCall_0_0_1()); }
+)
+{ after(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstructorPartCS__OwnedInitExpressionAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }
+(rule__ConstructorPartCS__OwnedInitExpressionAlternatives_2_0)
+{ after(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionAlternatives_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__PatternVariableNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PatternExpCS__OwnedPatternTypeAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LambdaLiteralExpCS__OwnedExpressionCSAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }
+	ruleExpCS{ after(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__OwnedPartsAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }
+	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralExpCS__OwnedPartsAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }
+	ruleTupleLiteralPartCS{ after(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__OwnedTypeAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TupleLiteralPartCS__OwnedInitExpressionAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }
+	ruleExpCS{ after(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NumberLiteralExpCS__SymbolAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }
+	ruleNUMBER_LITERAL{ after(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StringLiteralExpCS__SegmentsAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }
+	ruleStringLiteral{ after(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanLiteralExpCS__SymbolAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+
+	'true' 
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanLiteralExpCS__SymbolAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+(
+{ before(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+
+	'false' 
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+)
+
+{ after(grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralWithMultiplicityCS__OwnedMultiplicityAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+	ruleMultiplicityCS{ after(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeLiteralExpCS__OwnedTypeAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }
+	ruleTypeLiteralWithMultiplicityCS{ after(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__OwnedPathNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+	rulePathNameCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__OwnedCurlyBracketedClauseAssignment_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }
+	ruleCurlyBracketedClauseCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeNameExpCS__OwnedPatternGuardAssignment_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeExpCS__OwnedMultiplicityAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+	ruleMultiplicityCS{ after(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__NameAssignment_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }
+	ruleBinaryOperatorName{ after(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExpCS__OwnedRightAssignment_0_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }
+	ruleExpCS{ after(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__NameAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedLetExpCS__OwnedRightAssignment_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }
+	rulePrefixedLetExpCS{ after(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__NameAssignment_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+	ruleUnaryOperatorName{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PrefixedPrimaryExpCS__OwnedRightAssignment_0_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }
+	rulePrefixedPrimaryExpCS{ after(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedPathNameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+	rulePathNameCS{ after(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedSquareBracketedClausesAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }
+	ruleSquareBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedRoundBracketedClauseAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }
+	ruleRoundBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__OwnedCurlyBracketedClauseAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }
+	ruleCurlyBracketedClauseCS{ after(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NameExpCS__IsPreAssignment_4_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+(
+{ before(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+
+	'@' 
+
+{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+)
+
+{ after(grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }
+	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__OwnedPartsAssignment_2_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }
+	ruleConstructorPartCS{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CurlyBracketedClauseCS__ValueAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }
+	ruleStringLiteral{ after(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }
+	ruleNavigatingArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }
+	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }
+	ruleNavigatingSemiArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }
+	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }
+	ruleNavigatingBarArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoundBracketedClauseCS__OwnedArgumentsAssignment_2_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }
+	ruleNavigatingCommaArgCS{ after(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__OwnedTermsAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }
+	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SquareBracketedClauseCS__OwnedTermsAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedNameExpressionAssignment_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedTypeAssignment_0_1_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedInitExpressionAssignment_0_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingArgCS__OwnedTypeAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__PrefixAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+
+	'|' 
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__OwnedNameExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__OwnedTypeAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingBarArgCS__OwnedInitExpressionAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__PrefixAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedNameExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedTypeAssignment_2_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingCommaArgCS__OwnedInitExpressionAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__PrefixAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+
+	';' 
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__OwnedNameExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+	ruleNavigatingArgExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__OwnedTypeAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NavigatingSemiArgCS__OwnedInitExpressionAssignment_2_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedConditionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }
+(rule__IfExpCS__OwnedConditionAlternatives_1_0)
+{ after(grammarAccess.getIfExpCSAccess().getOwnedConditionAlternatives_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedThenExpressionAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedIfThenExpressionsAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }
+	ruleElseIfThenExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfExpCS__OwnedElseExpressionAssignment_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }
+	ruleExpCS{ after(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__OwnedConditionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }
+	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ElseIfThenExpCS__OwnedThenExpressionAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+	ruleExpCS{ after(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__OwnedVariablesAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }
+	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__OwnedVariablesAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }
+	ruleLetVariableCS{ after(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetExpCS__OwnedInExpressionAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }
+	ruleExpCS{ after(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__OwnedRoundBracketedClauseAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }
+	ruleRoundBracketedClauseCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__OwnedTypeAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+	ruleTypeExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LetVariableCS__OwnedInitExpressionAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }
+	ruleExpCS{ after(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NestedExpCS__OwnedExpressionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }
+	ruleExpCS{ after(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__LowerBoundAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }
+	ruleLOWER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityBoundsCS__UpperBoundAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }
+	ruleUPPER{ after(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MultiplicityStringCS__StringBoundsAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }
+(rule__MultiplicityStringCS__StringBoundsAlternatives_0)
+{ after(grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAlternatives_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__OwnedPathElementsAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }
+	ruleFirstPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PathNameCS__OwnedPathElementsAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }
+	ruleNextPathElementCS{ after(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FirstPathElementCS__ReferredElementAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+(
+{ before(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }
+	ruleUnrestrictedName{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementUnrestrictedNameParserRuleCall_0_1()); }
+)
+{ after(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NextPathElementCS__ReferredElementAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+(
+{ before(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }
+	ruleUnreservedName{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementUnreservedNameParserRuleCall_0_1()); }
+)
+{ after(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__OwnedSubstitutionsAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }
+	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateBindingCS__OwnedSubstitutionsAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }
+	ruleTemplateParameterSubstitutionCS{ after(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateParameterSubstitutionCS__OwnedActualParameterAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }
+	ruleTypeRefCS{ after(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__OwnedParametersAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_0()); }
+	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TemplateSignatureCS__OwnedParametersAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_2_1_0()); }
+	ruleTypeParameterCS{ after(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__NameAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+	ruleUnrestrictedName{ after(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedExtendsAssignment_1_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedExtendsAssignment_1_0_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypeParameterCS__OwnedSuperAssignment_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__OwnedExtendsAssignment_2_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WildcardTypeRefCS__OwnedSuperAssignment_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }
+	ruleTypedRefCS{ after(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');
+
+fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');
+
+RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';
+
+RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';
+
+RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';
+
+RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;
+
+RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;
+
+RULE_INT : ('0'..'9')+;
+
+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/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/antlr/internal/InternalOCLstdlib.tokens b/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/antlr/internal/InternalOCLstdlib.tokens
index 08d5e7a..7cbdea7 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/antlr/internal/InternalOCLstdlib.tokens
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib.ui/src-gen/org/eclipse/ocl/xtext/oclstdlib/ui/contentassist/antlr/internal/InternalOCLstdlib.tokens
@@ -1,186 +1,186 @@
-'&&'=98

-'('=81

-')'=82

-'*'=52

-'+'=54

-'++'=91

-','=83

-'-'=51

-'->'=62

-'.'=61

-'..'=90

-'/'=53

-':'=80

-'::'=79

-';'=39

-'<'=56

-'<='=58

-'<>'=60

-'='=59

-'=>'=87

-'>'=55

-'>='=57

-'?'=78

-'?->'=64

-'?.'=63

-'@'=102

-'Bag'=74

-'Boolean'=65

-'Collection'=76

-'Integer'=66

-'Lambda'=37

-'OclAny'=70

-'OclInvalid'=71

-'OclVoid'=72

-'OrderedSet'=77

-'Real'=67

-'Sequence'=75

-'Set'=73

-'String'=68

-'Tuple'=38

-'UnlimitedNatural'=69

-'['=94

-']'=95

-'and'=40

-'annotation'=16

-'body'=89

-'coercion'=86

-'conformsTo'=17

-'documentation'=18

-'else'=41

-'elseif'=96

-'endif'=42

-'extends'=19

-'false'=101

-'if'=43

-'implies'=44

-'import'=20

-'in'=45

-'inv'=21

-'invalid'=92

-'invalidating'=22

-'iteration'=23

-'left'=24

-'let'=46

-'library'=25

-'not'=47

-'null'=93

-'operation'=26

-'or'=48

-'package'=27

-'post'=28

-'pre'=29

-'precedence'=30

-'property'=31

-'right'=32

-'self'=97

-'static'=33

-'super'=34

-'then'=49

-'true'=100

-'type'=35

-'typeof'=99

-'validating'=36

-'xor'=50

-'{'=84

-'|'=88

-'}'=85

-RULE_ANY_OTHER=15

-RULE_DOUBLE_QUOTED_STRING=6

-RULE_ESCAPED_CHARACTER=10

-RULE_ESCAPED_ID=9

-RULE_INT=4

-RULE_LETTER_CHARACTER=11

-RULE_ML_COMMENT=12

-RULE_ML_SINGLE_QUOTED_STRING=7

-RULE_SIMPLE_ID=8

-RULE_SINGLE_QUOTED_STRING=5

-RULE_SL_COMMENT=13

-RULE_WS=14

-T__100=100

-T__101=101

-T__102=102

-T__16=16

-T__17=17

-T__18=18

-T__19=19

-T__20=20

-T__21=21

-T__22=22

-T__23=23

-T__24=24

-T__25=25

-T__26=26

-T__27=27

-T__28=28

-T__29=29

-T__30=30

-T__31=31

-T__32=32

-T__33=33

-T__34=34

-T__35=35

-T__36=36

-T__37=37

-T__38=38

-T__39=39

-T__40=40

-T__41=41

-T__42=42

-T__43=43

-T__44=44

-T__45=45

-T__46=46

-T__47=47

-T__48=48

-T__49=49

-T__50=50

-T__51=51

-T__52=52

-T__53=53

-T__54=54

-T__55=55

-T__56=56

-T__57=57

-T__58=58

-T__59=59

-T__60=60

-T__61=61

-T__62=62

-T__63=63

-T__64=64

-T__65=65

-T__66=66

-T__67=67

-T__68=68

-T__69=69

-T__70=70

-T__71=71

-T__72=72

-T__73=73

-T__74=74

-T__75=75

-T__76=76

-T__77=77

-T__78=78

-T__79=79

-T__80=80

-T__81=81

-T__82=82

-T__83=83

-T__84=84

-T__85=85

-T__86=86

-T__87=87

-T__88=88

-T__89=89

-T__90=90

-T__91=91

-T__92=92

-T__93=93

-T__94=94

-T__95=95

-T__96=96

-T__97=97

-T__98=98

-T__99=99

+'&&'=98
+'('=81
+')'=82
+'*'=52
+'+'=54
+'++'=91
+','=83
+'-'=51
+'->'=62
+'.'=61
+'..'=90
+'/'=53
+':'=80
+'::'=79
+';'=39
+'<'=56
+'<='=58
+'<>'=60
+'='=59
+'=>'=87
+'>'=55
+'>='=57
+'?'=78
+'?->'=64
+'?.'=63
+'@'=102
+'Bag'=74
+'Boolean'=65
+'Collection'=76
+'Integer'=66
+'Lambda'=37
+'OclAny'=70
+'OclInvalid'=71
+'OclVoid'=72
+'OrderedSet'=77
+'Real'=67
+'Sequence'=75
+'Set'=73
+'String'=68
+'Tuple'=38
+'UnlimitedNatural'=69
+'['=94
+']'=95
+'and'=40
+'annotation'=16
+'body'=89
+'coercion'=86
+'conformsTo'=17
+'documentation'=18
+'else'=41
+'elseif'=96
+'endif'=42
+'extends'=19
+'false'=101
+'if'=43
+'implies'=44
+'import'=20
+'in'=45
+'inv'=21
+'invalid'=92
+'invalidating'=22
+'iteration'=23
+'left'=24
+'let'=46
+'library'=25
+'not'=47
+'null'=93
+'operation'=26
+'or'=48
+'package'=27
+'post'=28
+'pre'=29
+'precedence'=30
+'property'=31
+'right'=32
+'self'=97
+'static'=33
+'super'=34
+'then'=49
+'true'=100
+'type'=35
+'typeof'=99
+'validating'=36
+'xor'=50
+'{'=84
+'|'=88
+'}'=85
+RULE_ANY_OTHER=15
+RULE_DOUBLE_QUOTED_STRING=6
+RULE_ESCAPED_CHARACTER=10
+RULE_ESCAPED_ID=9
+RULE_INT=4
+RULE_LETTER_CHARACTER=11
+RULE_ML_COMMENT=12
+RULE_ML_SINGLE_QUOTED_STRING=7
+RULE_SIMPLE_ID=8
+RULE_SINGLE_QUOTED_STRING=5
+RULE_SL_COMMENT=13
+RULE_WS=14
+T__100=100
+T__101=101
+T__102=102
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/AbstractOCLstdlibRuntimeModule.java b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/AbstractOCLstdlibRuntimeModule.java
index 9c7166c..3d91add 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/AbstractOCLstdlibRuntimeModule.java
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/AbstractOCLstdlibRuntimeModule.java
@@ -6,7 +6,6 @@
 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;
@@ -14,8 +13,8 @@
 /**
  * Manual modifications go to {org.eclipse.ocl.xtext.oclstdlib.OCLstdlibRuntimeModule}
  */
- @SuppressWarnings("all")
-public abstract class AbstractOCLstdlibRuntimeModule extends DefaultRuntimeModule {
+@SuppressWarnings("all")
+public abstract class AbstractOCLstdlibRuntimeModule extends org.eclipse.xtext.service.DefaultRuntimeModule {
 
 	protected Properties properties = null;
 
diff --git a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/OCLstdlibStandaloneSetupGenerated.java b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/OCLstdlibStandaloneSetupGenerated.java
index 77c2354..0b4771e 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/OCLstdlibStandaloneSetupGenerated.java
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/OCLstdlibStandaloneSetupGenerated.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclstdlib;
 
 import org.eclipse.emf.ecore.EPackage;
@@ -16,6 +16,7 @@
 @SuppressWarnings("all")
 public class OCLstdlibStandaloneSetupGenerated implements ISetup {
 
+	@Override
 	public Injector createInjectorAndDoEMFRegistration() {
 		org.eclipse.ocl.xtext.essentialocl.EssentialOCLStandaloneSetup.doSetup();
 
diff --git a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/OCLstdlibAntlrTokenFileProvider.java b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/OCLstdlibAntlrTokenFileProvider.java
index 6bb6f25..a3aa942 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/OCLstdlibAntlrTokenFileProvider.java
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/OCLstdlibAntlrTokenFileProvider.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclstdlib.parser.antlr;
 
 import java.io.InputStream;
diff --git a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/OCLstdlibParser.java b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/OCLstdlibParser.java
index 8d211a7..f9b99e5 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/OCLstdlibParser.java
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/OCLstdlibParser.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclstdlib.parser.antlr;
 
 import com.google.inject.Inject;
diff --git a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/internal/InternalOCLstdlib.g b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/internal/InternalOCLstdlib.g
index cee6394..0f75716 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/internal/InternalOCLstdlib.g
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/internal/InternalOCLstdlib.g
@@ -1,8601 +1,8601 @@
-/*

-* generated by Xtext

-*/

-grammar InternalOCLstdlib;

-

-options {

-	superClass=AbstractInternalAntlrParser;

-	backtrack=true;

-	

-}

-

-@lexer::header {

-package org.eclipse.ocl.xtext.oclstdlib.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.ocl.xtext.oclstdlib.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.ocl.xtext.oclstdlib.services.OCLstdlibGrammarAccess;

-

-}

-

-@parser::members {

-

-/*

-  This grammar contains a lot of empty actions to work around a bug in ANTLR.

-  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.

-*/

- 

- 	private OCLstdlibGrammarAccess grammarAccess;

- 	

-    public InternalOCLstdlibParser(TokenStream input, OCLstdlibGrammarAccess grammarAccess) {

-        this(input);

-        this.grammarAccess = grammarAccess;

-        registerRules(grammarAccess.getGrammar());

-    }

-    

-    @Override

-    protected String getFirstRuleName() {

-    	return "Library";	

-   	}

-   	

-   	@Override

-   	protected OCLstdlibGrammarAccess getGrammarAccess() {

-   		return grammarAccess;

-   	}

-}

-

-@rulecatch { 

-    catch (RecognitionException re) { 

-        recover(input,re); 

-        appendSkippedTokens();

-    } 

-}

-

-

-

-

-// Entry rule entryRuleLibrary

-entryRuleLibrary returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLibraryRule()); }

-	 iv_ruleLibrary=ruleLibrary 

-	 { $current=$iv_ruleLibrary.current; } 

-	 EOF 

-;

-

-// Rule Library

-ruleLibrary returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibraryAccess().getOwnedLibrariesLibraryCSParserRuleCall_0_0_0()); 

-	    }

-		lv_ownedLibraries_0_0=ruleLibraryCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibraryRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedLibraries",

-        		lv_ownedLibraries_0_0, 

-        		"LibraryCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1=';' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getLibraryAccess().getSemicolonKeyword_0_1());

-    }

-)*(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibraryAccess().getOwnedPackagesLibPackageCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedPackages_2_0=ruleLibPackageCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibraryRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPackages",

-        		lv_ownedPackages_2_0, 

-        		"LibPackageCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*)

-;

-

-

-

-

-

-// Entry rule entryRuleIdentifier

-entryRuleIdentifier returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIdentifierRule()); } 

-	 iv_ruleIdentifier=ruleIdentifier 

-	 { $current=$iv_ruleIdentifier.current.getText(); }  

-	 EOF 

-;

-

-// Rule Identifier

-ruleIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getIdentifierAccess().getIDParserRuleCall_0()); 

-    }

-    this_ID_0=ruleID    {

-		$current.merge(this_ID_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getIdentifierAccess().getRestrictedKeywordsParserRuleCall_1()); 

-    }

-    this_RestrictedKeywords_1=ruleRestrictedKeywords    {

-		$current.merge(this_RestrictedKeywords_1);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleRestrictedKeywords

-entryRuleRestrictedKeywords returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getRestrictedKeywordsRule()); } 

-	 iv_ruleRestrictedKeywords=ruleRestrictedKeywords 

-	 { $current=$iv_ruleRestrictedKeywords.current.getText(); }  

-	 EOF 

-;

-

-// Rule RestrictedKeywords

-ruleRestrictedKeywords returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='annotation' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getAnnotationKeyword_0()); 

-    }

-

-    |

-	kw='conformsTo' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getConformsToKeyword_1()); 

-    }

-

-    |

-	kw='documentation' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getDocumentationKeyword_2()); 

-    }

-

-    |

-	kw='extends' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getExtendsKeyword_3()); 

-    }

-

-    |

-	kw='import' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getImportKeyword_4()); 

-    }

-

-    |

-	kw='inv' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getInvKeyword_5()); 

-    }

-

-    |

-	kw='invalidating' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getInvalidatingKeyword_6()); 

-    }

-

-    |

-	kw='iteration' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getIterationKeyword_7()); 

-    }

-

-    |

-	kw='left' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getLeftKeyword_8()); 

-    }

-

-    |

-	kw='library' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getLibraryKeyword_9()); 

-    }

-

-    |

-	kw='operation' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getOperationKeyword_10()); 

-    }

-

-    |

-	kw='package' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getPackageKeyword_11()); 

-    }

-

-    |

-	kw='post' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getPostKeyword_12()); 

-    }

-

-    |

-	kw='pre' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getPreKeyword_13()); 

-    }

-

-    |

-	kw='precedence' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getPrecedenceKeyword_14()); 

-    }

-

-    |

-	kw='property' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getPropertyKeyword_15()); 

-    }

-

-    |

-	kw='right' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getRightKeyword_16()); 

-    }

-

-    |

-	kw='static' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getStaticKeyword_17()); 

-    }

-

-    |

-	kw='super' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getSuperKeyword_18()); 

-    }

-

-    |

-	kw='type' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getTypeKeyword_19()); 

-    }

-

-    |

-	kw='validating' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getValidatingKeyword_20()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleName

-entryRuleName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNameRule()); } 

-	 iv_ruleName=ruleName 

-	 { $current=$iv_ruleName.current.getText(); }  

-	 EOF 

-;

-

-// Rule Name

-ruleName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getNameAccess().getIdentifierParserRuleCall_0()); 

-    }

-    this_Identifier_0=ruleIdentifier    {

-		$current.merge(this_Identifier_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |    this_DOUBLE_QUOTED_STRING_1=RULE_DOUBLE_QUOTED_STRING    {

-		$current.merge(this_DOUBLE_QUOTED_STRING_1);

-    }

-

-    { 

-    newLeafNode(this_DOUBLE_QUOTED_STRING_1, grammarAccess.getNameAccess().getDOUBLE_QUOTED_STRINGTerminalRuleCall_1()); 

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getNameAccess().getEssentialOCLReservedKeywordParserRuleCall_2()); 

-    }

-    this_EssentialOCLReservedKeyword_2=ruleEssentialOCLReservedKeyword    {

-		$current.merge(this_EssentialOCLReservedKeyword_2);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getNameAccess().getPrimitiveTypeIdentifierParserRuleCall_3()); 

-    }

-    this_PrimitiveTypeIdentifier_3=rulePrimitiveTypeIdentifier    {

-		$current.merge(this_PrimitiveTypeIdentifier_3);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getNameAccess().getCollectionTypeIdentifierParserRuleCall_4()); 

-    }

-    this_CollectionTypeIdentifier_4=ruleCollectionTypeIdentifier    {

-		$current.merge(this_CollectionTypeIdentifier_4);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleAnyName

-entryRuleAnyName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getAnyNameRule()); } 

-	 iv_ruleAnyName=ruleAnyName 

-	 { $current=$iv_ruleAnyName.current.getText(); }  

-	 EOF 

-;

-

-// Rule AnyName

-ruleAnyName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getAnyNameAccess().getNameParserRuleCall_0()); 

-    }

-    this_Name_0=ruleName    {

-		$current.merge(this_Name_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	kw='Lambda' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getAnyNameAccess().getLambdaKeyword_1()); 

-    }

-

-    |

-	kw='Tuple' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getAnyNameAccess().getTupleKeyword_2()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleLibPathNameCS

-entryRuleLibPathNameCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLibPathNameCSRule()); }

-	 iv_ruleLibPathNameCS=ruleLibPathNameCS 

-	 { $current=$iv_ruleLibPathNameCS.current; } 

-	 EOF 

-;

-

-// Rule LibPathNameCS

-ruleLibPathNameCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsLibPathElementCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathElements_0_0=ruleLibPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_0_0, 

-        		"LibPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='::' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getLibPathNameCSAccess().getColonColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsLibPathElementCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedPathElements_2_0=ruleLibPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_2_0, 

-        		"LibPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)

-;

-

-

-

-

-

-// Entry rule entryRuleLibPathElementCS

-entryRuleLibPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLibPathElementCSRule()); }

-	 iv_ruleLibPathElementCS=ruleLibPathElementCS 

-	 { $current=$iv_ruleLibPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule LibPathElementCS

-ruleLibPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getLibPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 

-	    }

-		ruleName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleAccumulatorCS

-entryRuleAccumulatorCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getAccumulatorCSRule()); }

-	 iv_ruleAccumulatorCS=ruleAccumulatorCS 

-	 { $current=$iv_ruleAccumulatorCS.current; } 

-	 EOF 

-;

-

-// Rule AccumulatorCS

-ruleAccumulatorCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAccumulatorCSAccess().getNameIdentifierParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAccumulatorCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"Identifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getAccumulatorCSAccess().getColonKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAccumulatorCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypedMultiplicityRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAccumulatorCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypedMultiplicityRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleAnnotationCS

-entryRuleAnnotationCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getAnnotationCSRule()); }

-	 iv_ruleAnnotationCS=ruleAnnotationCS 

-	 { $current=$iv_ruleAnnotationCS.current; } 

-	 EOF 

-;

-

-// Rule AnnotationCS

-ruleAnnotationCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='annotation' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getAnnotationCSAccess().getAnnotationKeyword_0());

-    }

-(

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getNameIdentifierParserRuleCall_1_0_0()); 

-	    }

-		lv_name_1_1=ruleIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_1, 

-        		"Identifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-    |		lv_name_1_2=RULE_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_name_1_2, grammarAccess.getAnnotationCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_1_0_1()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getAnnotationCSRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"name",

-        		lv_name_1_2, 

-        		"SINGLE_QUOTED_STRING");

-	    }

-

-)

-

-)

-)(	otherlv_2='(' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getAnnotationCSAccess().getLeftParenthesisKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedDetails_3_0=ruleDetailCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDetails",

-        		lv_ownedDetails_3_0, 

-        		"DetailCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_4=',' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getAnnotationCSAccess().getCommaKeyword_2_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_2_1_0()); 

-	    }

-		lv_ownedDetails_5_0=ruleDetailCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDetails",

-        		lv_ownedDetails_5_0, 

-        		"DetailCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_6=')' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getAnnotationCSAccess().getRightParenthesisKeyword_2_3());

-    }

-)?((	otherlv_7='{' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getAnnotationCSAccess().getLeftCurlyBracketKeyword_3_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_3_0_1_0()); 

-	    }

-		lv_ownedAnnotations_8_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_8_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_9='}' 

-    {

-    	newLeafNode(otherlv_9, grammarAccess.getAnnotationCSAccess().getRightCurlyBracketKeyword_3_0_2());

-    }

-)

-    |	otherlv_10=';' 

-    {

-    	newLeafNode(otherlv_10, grammarAccess.getAnnotationCSAccess().getSemicolonKeyword_3_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleAnnotationElementCS

-entryRuleAnnotationElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getAnnotationElementCSRule()); }

-	 iv_ruleAnnotationElementCS=ruleAnnotationElementCS 

-	 { $current=$iv_ruleAnnotationElementCS.current; } 

-	 EOF 

-;

-

-// Rule AnnotationElementCS

-ruleAnnotationElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getAnnotationElementCSAccess().getAnnotationCSParserRuleCall_0()); 

-    }

-    this_AnnotationCS_0=ruleAnnotationCS

-    { 

-        $current = $this_AnnotationCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getAnnotationElementCSAccess().getDocumentationCSParserRuleCall_1()); 

-    }

-    this_DocumentationCS_1=ruleDocumentationCS

-    { 

-        $current = $this_DocumentationCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleLibClassCS

-entryRuleLibClassCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLibClassCSRule()); }

-	 iv_ruleLibClassCS=ruleLibClassCS 

-	 { $current=$iv_ruleLibClassCS.current; } 

-	 EOF 

-;

-

-// Rule LibClassCS

-ruleLibClassCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='type' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLibClassCSAccess().getTypeKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibClassCSAccess().getNameAnyNameParserRuleCall_1_0()); 

-	    }

-		lv_name_1_0=ruleAnyName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"AnyName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibClassCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedSignature_2_0=ruleTemplateSignatureCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSignature",

-        		lv_ownedSignature_2_0, 

-        		"TemplateSignatureCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(	otherlv_3=':' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getLibClassCSAccess().getColonKeyword_3_0());

-    }

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibClassCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getLibClassCSAccess().getMetaclassNameMetaclassNameCSCrossReference_3_1_0()); 

-	    }

-		ruleAnyName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?(	otherlv_5='conformsTo' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getLibClassCSAccess().getConformsToKeyword_4_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_1_0()); 

-	    }

-		lv_ownedSuperTypes_6_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSuperTypes",

-        		lv_ownedSuperTypes_6_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_7=',' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getLibClassCSAccess().getCommaKeyword_4_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_2_1_0()); 

-	    }

-		lv_ownedSuperTypes_8_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSuperTypes",

-        		lv_ownedSuperTypes_8_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_9='{' 

-    {

-    	newLeafNode(otherlv_9, grammarAccess.getLibClassCSAccess().getLeftCurlyBracketKeyword_5());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibClassCSAccess().getOwnedOperationsOperationCSParserRuleCall_6_0_0()); 

-	    }

-		lv_ownedOperations_10_0=ruleOperationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedOperations",

-        		lv_ownedOperations_10_0, 

-        		"OperationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibClassCSAccess().getOwnedPropertiesLibPropertyCSParserRuleCall_6_1_0()); 

-	    }

-		lv_ownedProperties_11_0=ruleLibPropertyCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedProperties",

-        		lv_ownedProperties_11_0, 

-        		"LibPropertyCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibClassCSAccess().getOwnedConstraintsInvCSParserRuleCall_6_2_0()); 

-	    }

-		lv_ownedConstraints_12_0=ruleInvCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedConstraints",

-        		lv_ownedConstraints_12_0, 

-        		"InvCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibClassCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_3_0()); 

-	    }

-		lv_ownedAnnotations_13_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_13_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_14='}' 

-    {

-    	newLeafNode(otherlv_14, grammarAccess.getLibClassCSAccess().getRightCurlyBracketKeyword_7());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleClassCS

-entryRuleClassCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getClassCSRule()); }

-	 iv_ruleClassCS=ruleClassCS 

-	 { $current=$iv_ruleClassCS.current; } 

-	 EOF 

-;

-

-// Rule ClassCS

-ruleClassCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getClassCSAccess().getLibClassCSParserRuleCall()); 

-    }

-    this_LibClassCS_0=ruleLibClassCS

-    { 

-        $current = $this_LibClassCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-;

-

-

-

-

-

-// Entry rule entryRuleDetailCS

-entryRuleDetailCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getDetailCSRule()); }

-	 iv_ruleDetailCS=ruleDetailCS 

-	 { $current=$iv_ruleDetailCS.current; } 

-	 EOF 

-;

-

-// Rule DetailCS

-ruleDetailCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDetailCSAccess().getNameNameParserRuleCall_0_0_0()); 

-	    }

-		lv_name_0_1=ruleName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDetailCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_1, 

-        		"Name");

-	        afterParserOrEnumRuleCall();

-	    }

-

-    |		lv_name_0_2=RULE_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_name_0_2, grammarAccess.getDetailCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_0_0_1()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getDetailCSRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"name",

-        		lv_name_0_2, 

-        		"SINGLE_QUOTED_STRING");

-	    }

-

-)

-

-)

-)	otherlv_1='=' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getDetailCSAccess().getEqualsSignKeyword_1());

-    }

-(

-(

-(

-		lv_values_2_1=RULE_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_values_2_1, grammarAccess.getDetailCSAccess().getValuesSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getDetailCSRule());

-	        }

-       		addWithLastConsumed(

-       			$current, 

-       			"values",

-        		lv_values_2_1, 

-        		"SINGLE_QUOTED_STRING");

-	    }

-

-    |		lv_values_2_2=RULE_ML_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_values_2_2, grammarAccess.getDetailCSAccess().getValuesML_SINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getDetailCSRule());

-	        }

-       		addWithLastConsumed(

-       			$current, 

-       			"values",

-        		lv_values_2_2, 

-        		"ML_SINGLE_QUOTED_STRING");

-	    }

-

-)

-

-)

-)*)

-;

-

-

-

-

-

-// Entry rule entryRuleDocumentationCS

-entryRuleDocumentationCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getDocumentationCSRule()); }

-	 iv_ruleDocumentationCS=ruleDocumentationCS 

-	 { $current=$iv_ruleDocumentationCS.current; } 

-	 EOF 

-;

-

-// Rule DocumentationCS

-ruleDocumentationCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getDocumentationCSAccess().getDocumentationCSAction_0(),

-            $current);

-    }

-)	otherlv_1='documentation' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getDocumentationCSAccess().getDocumentationKeyword_1());

-    }

-(

-(

-		lv_value_2_0=RULE_SINGLE_QUOTED_STRING

-		{

-			newLeafNode(lv_value_2_0, grammarAccess.getDocumentationCSAccess().getValueSINGLE_QUOTED_STRINGTerminalRuleCall_2_0()); 

-		}

-		{

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getDocumentationCSRule());

-	        }

-       		setWithLastConsumed(

-       			$current, 

-       			"value",

-        		lv_value_2_0, 

-        		"SINGLE_QUOTED_STRING");

-	    }

-

-)

-)?(	otherlv_3='(' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getDocumentationCSAccess().getLeftParenthesisKeyword_3_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); 

-	    }

-		lv_ownedDetails_4_0=ruleDetailCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDocumentationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDetails",

-        		lv_ownedDetails_4_0, 

-        		"DetailCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_5=',' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getDocumentationCSAccess().getCommaKeyword_3_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); 

-	    }

-		lv_ownedDetails_6_0=ruleDetailCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getDocumentationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedDetails",

-        		lv_ownedDetails_6_0, 

-        		"DetailCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_7=')' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getDocumentationCSAccess().getRightParenthesisKeyword_3_3());

-    }

-)?	otherlv_8=';' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getDocumentationCSAccess().getSemicolonKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleInvCS

-entryRuleInvCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getInvCSRule()); }

-	 iv_ruleInvCS=ruleInvCS 

-	 { $current=$iv_ruleInvCS.current; } 

-	 EOF 

-;

-

-// Rule InvCS

-ruleInvCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_stereotype_0_0=	'inv' 

-    {

-        newLeafNode(lv_stereotype_0_0, grammarAccess.getInvCSAccess().getStereotypeInvKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getInvCSRule());

-	        }

-       		setWithLastConsumed($current, "stereotype", lv_stereotype_0_0, "inv");

-	    }

-

-)

-)((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getInvCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); 

-	    }

-		lv_name_1_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getInvCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2='(' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getInvCSAccess().getLeftParenthesisKeyword_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getInvCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); 

-	    }

-		lv_ownedMessageSpecification_3_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getInvCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMessageSpecification",

-        		lv_ownedMessageSpecification_3_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_4=')' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getInvCSAccess().getRightParenthesisKeyword_1_1_2());

-    }

-)?)?	otherlv_5=':' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getInvCSAccess().getColonKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getInvCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedSpecification_6_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getInvCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSpecification",

-        		lv_ownedSpecification_6_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_7=';' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getInvCSAccess().getSemicolonKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleLibCoercionCS

-entryRuleLibCoercionCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLibCoercionCSRule()); }

-	 iv_ruleLibCoercionCS=ruleLibCoercionCS 

-	 { $current=$iv_ruleLibCoercionCS.current; } 

-	 EOF 

-;

-

-// Rule LibCoercionCS

-ruleLibCoercionCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='coercion' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLibCoercionCSAccess().getCoercionKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibCoercionCSAccess().getNameNameParserRuleCall_1_0()); 

-	    }

-		lv_name_1_0=ruleName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibCoercionCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"Name");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_2='(' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getLibCoercionCSAccess().getLeftParenthesisKeyword_2());

-    }

-	otherlv_3=')' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getLibCoercionCSAccess().getRightParenthesisKeyword_3());

-    }

-	otherlv_4=':' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getLibCoercionCSAccess().getColonKeyword_4());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibCoercionCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_5_0()); 

-	    }

-		lv_ownedType_5_0=ruleTypedMultiplicityRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibCoercionCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_5_0, 

-        		"TypedMultiplicityRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_6='=>' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getLibCoercionCSAccess().getEqualsSignGreaterThanSignKeyword_6_0());

-    }

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibCoercionCSRule());

-	        }

-        }

-	otherlv_7=RULE_SINGLE_QUOTED_STRING

-	{

-		newLeafNode(otherlv_7, grammarAccess.getLibCoercionCSAccess().getImplementationJavaClassCSCrossReference_6_1_0()); 

-	}

-

-)

-))?((	otherlv_8='{' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getLibCoercionCSAccess().getLeftCurlyBracketKeyword_7_0_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibCoercionCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); 

-	    }

-		lv_ownedAnnotations_9_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibCoercionCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_9_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibCoercionCSAccess().getOwnedPreconditionsPostCSParserRuleCall_7_0_1_1_0()); 

-	    }

-		lv_ownedPreconditions_10_0=rulePostCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibCoercionCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPreconditions",

-        		lv_ownedPreconditions_10_0, 

-        		"PostCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibCoercionCSAccess().getOwnedPostconditionsPreCSParserRuleCall_7_0_1_2_0()); 

-	    }

-		lv_ownedPostconditions_11_0=rulePreCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibCoercionCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPostconditions",

-        		lv_ownedPostconditions_11_0, 

-        		"PreCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_12='}' 

-    {

-    	newLeafNode(otherlv_12, grammarAccess.getLibCoercionCSAccess().getRightCurlyBracketKeyword_7_0_2());

-    }

-)

-    |	otherlv_13=';' 

-    {

-    	newLeafNode(otherlv_13, grammarAccess.getLibCoercionCSAccess().getSemicolonKeyword_7_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLibIterationCS

-entryRuleLibIterationCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLibIterationCSRule()); }

-	 iv_ruleLibIterationCS=ruleLibIterationCS 

-	 { $current=$iv_ruleLibIterationCS.current; } 

-	 EOF 

-;

-

-// Rule LibIterationCS

-ruleLibIterationCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='iteration' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLibIterationCSAccess().getIterationKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getNameNameParserRuleCall_1_0()); 

-	    }

-		lv_name_1_0=ruleName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"Name");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedSignature_2_0=ruleTemplateSignatureCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSignature",

-        		lv_ownedSignature_2_0, 

-        		"TemplateSignatureCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_3='(' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getLibIterationCSAccess().getLeftParenthesisKeyword_3());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsIteratorCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedIterators_4_0=ruleIteratorCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedIterators",

-        		lv_ownedIterators_4_0, 

-        		"IteratorCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_5=',' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getLibIterationCSAccess().getCommaKeyword_5_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsIteratorCSParserRuleCall_5_1_0()); 

-	    }

-		lv_ownedIterators_6_0=ruleIteratorCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedIterators",

-        		lv_ownedIterators_6_0, 

-        		"IteratorCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*(	otherlv_7=';' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getLibIterationCSAccess().getSemicolonKeyword_6_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAccumulatorCSParserRuleCall_6_1_0()); 

-	    }

-		lv_ownedAccumulators_8_0=ruleAccumulatorCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAccumulators",

-        		lv_ownedAccumulators_8_0, 

-        		"AccumulatorCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_9=',' 

-    {

-    	newLeafNode(otherlv_9, grammarAccess.getLibIterationCSAccess().getCommaKeyword_6_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAccumulatorCSParserRuleCall_6_2_1_0()); 

-	    }

-		lv_ownedAccumulators_10_0=ruleAccumulatorCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAccumulators",

-        		lv_ownedAccumulators_10_0, 

-        		"AccumulatorCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?(	otherlv_11='|' 

-    {

-    	newLeafNode(otherlv_11, grammarAccess.getLibIterationCSAccess().getVerticalLineKeyword_7_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedParametersParameterCSParserRuleCall_7_1_0()); 

-	    }

-		lv_ownedParameters_12_0=ruleParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_12_0, 

-        		"ParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_13=',' 

-    {

-    	newLeafNode(otherlv_13, grammarAccess.getLibIterationCSAccess().getCommaKeyword_7_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedParametersParameterCSParserRuleCall_7_2_1_0()); 

-	    }

-		lv_ownedParameters_14_0=ruleParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_14_0, 

-        		"ParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_15=')' 

-    {

-    	newLeafNode(otherlv_15, grammarAccess.getLibIterationCSAccess().getRightParenthesisKeyword_8());

-    }

-	otherlv_16=':' 

-    {

-    	newLeafNode(otherlv_16, grammarAccess.getLibIterationCSAccess().getColonKeyword_9());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_10_0()); 

-	    }

-		lv_ownedType_17_0=ruleTypedMultiplicityRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_17_0, 

-        		"TypedMultiplicityRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		lv_isInvalidating_18_0=	'invalidating' 

-    {

-        newLeafNode(lv_isInvalidating_18_0, grammarAccess.getLibIterationCSAccess().getIsInvalidatingInvalidatingKeyword_11_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibIterationCSRule());

-	        }

-       		setWithLastConsumed($current, "isInvalidating", true, "invalidating");

-	    }

-

-)

-)?(

-(

-		lv_isValidating_19_0=	'validating' 

-    {

-        newLeafNode(lv_isValidating_19_0, grammarAccess.getLibIterationCSAccess().getIsValidatingValidatingKeyword_12_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibIterationCSRule());

-	        }

-       		setWithLastConsumed($current, "isValidating", true, "validating");

-	    }

-

-)

-)?(	otherlv_20='=>' 

-    {

-    	newLeafNode(otherlv_20, grammarAccess.getLibIterationCSAccess().getEqualsSignGreaterThanSignKeyword_13_0());

-    }

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibIterationCSRule());

-	        }

-        }

-	otherlv_21=RULE_SINGLE_QUOTED_STRING

-	{

-		newLeafNode(otherlv_21, grammarAccess.getLibIterationCSAccess().getImplementationJavaClassCSCrossReference_13_1_0()); 

-	}

-

-)

-))?((	otherlv_22='{' 

-    {

-    	newLeafNode(otherlv_22, grammarAccess.getLibIterationCSAccess().getLeftCurlyBracketKeyword_14_0_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_14_0_1_0_0()); 

-	    }

-		lv_ownedAnnotations_23_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_23_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedPreconditionsPostCSParserRuleCall_14_0_1_1_0()); 

-	    }

-		lv_ownedPreconditions_24_0=rulePostCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPreconditions",

-        		lv_ownedPreconditions_24_0, 

-        		"PostCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedPostconditionsPreCSParserRuleCall_14_0_1_2_0()); 

-	    }

-		lv_ownedPostconditions_25_0=rulePreCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPostconditions",

-        		lv_ownedPostconditions_25_0, 

-        		"PreCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_26='}' 

-    {

-    	newLeafNode(otherlv_26, grammarAccess.getLibIterationCSAccess().getRightCurlyBracketKeyword_14_0_2());

-    }

-)

-    |	otherlv_27=';' 

-    {

-    	newLeafNode(otherlv_27, grammarAccess.getLibIterationCSAccess().getSemicolonKeyword_14_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleIteratorCS

-entryRuleIteratorCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIteratorCSRule()); }

-	 iv_ruleIteratorCS=ruleIteratorCS 

-	 { $current=$iv_ruleIteratorCS.current; } 

-	 EOF 

-;

-

-// Rule IteratorCS

-ruleIteratorCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIteratorCSAccess().getNameIdentifierParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIteratorCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"Identifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getIteratorCSAccess().getColonKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIteratorCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypedMultiplicityRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIteratorCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypedMultiplicityRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLambdaTypeCS

-entryRuleLambdaTypeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLambdaTypeCSRule()); }

-	 iv_ruleLambdaTypeCS=ruleLambdaTypeCS 

-	 { $current=$iv_ruleLambdaTypeCS.current; } 

-	 EOF 

-;

-

-// Rule LambdaTypeCS

-ruleLambdaTypeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_name_0_0=	'Lambda' 

-    {

-        newLeafNode(lv_name_0_0, grammarAccess.getLambdaTypeCSAccess().getNameLambdaKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLambdaTypeCSRule());

-	        }

-       		setWithLastConsumed($current, "name", lv_name_0_0, "Lambda");

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLambdaTypeCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedSignature_1_0=ruleTemplateSignatureCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLambdaTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSignature",

-        		lv_ownedSignature_1_0, 

-        		"TemplateSignatureCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLambdaTypeCSAccess().getOwnedContextTypeLambdaContextTypeRefCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedContextType_2_0=ruleLambdaContextTypeRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLambdaTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedContextType",

-        		lv_ownedContextType_2_0, 

-        		"LambdaContextTypeRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_3='(' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getLambdaTypeCSAccess().getLeftParenthesisKeyword_3());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesTypedMultiplicityRefCSParserRuleCall_4_0_0()); 

-	    }

-		lv_ownedParameterTypes_4_0=ruleTypedMultiplicityRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLambdaTypeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameterTypes",

-        		lv_ownedParameterTypes_4_0, 

-        		"TypedMultiplicityRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_5=',' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getLambdaTypeCSAccess().getCommaKeyword_4_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesTypedMultiplicityRefCSParserRuleCall_4_1_1_0()); 

-	    }

-		lv_ownedParameterTypes_6_0=ruleTypedMultiplicityRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLambdaTypeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameterTypes",

-        		lv_ownedParameterTypes_6_0, 

-        		"TypedMultiplicityRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_7=')' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getLambdaTypeCSAccess().getRightParenthesisKeyword_5());

-    }

-	otherlv_8=':' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getLambdaTypeCSAccess().getColonKeyword_6());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLambdaTypeCSAccess().getOwnedResultTypeTypedRefCSParserRuleCall_7_0()); 

-	    }

-		lv_ownedResultType_9_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLambdaTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedResultType",

-        		lv_ownedResultType_9_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLambdaContextTypeRefCS

-entryRuleLambdaContextTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLambdaContextTypeRefCSRule()); }

-	 iv_ruleLambdaContextTypeRefCS=ruleLambdaContextTypeRefCS 

-	 { $current=$iv_ruleLambdaContextTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule LambdaContextTypeRefCS

-ruleLambdaContextTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLambdaContextTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_0()); 

-	    }

-		lv_ownedPathName_0_0=ruleLibPathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLambdaContextTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_0_0, 

-        		"LibPathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleLibraryCS

-entryRuleLibraryCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLibraryCSRule()); }

-	 iv_ruleLibraryCS=ruleLibraryCS 

-	 { $current=$iv_ruleLibraryCS.current; } 

-	 EOF 

-;

-

-// Rule LibraryCS

-ruleLibraryCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='import' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLibraryCSAccess().getImportKeyword_0());

-    }

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibraryCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_1_0()); 

-	    }

-		ruleURI		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleOperationCS

-entryRuleOperationCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getOperationCSRule()); }

-	 iv_ruleOperationCS=ruleOperationCS 

-	 { $current=$iv_ruleOperationCS.current; } 

-	 EOF 

-;

-

-// Rule OperationCS

-ruleOperationCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getOperationCSAccess().getLibCoercionCSParserRuleCall_0()); 

-    }

-    this_LibCoercionCS_0=ruleLibCoercionCS

-    { 

-        $current = $this_LibCoercionCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getOperationCSAccess().getLibIterationCSParserRuleCall_1()); 

-    }

-    this_LibIterationCS_1=ruleLibIterationCS

-    { 

-        $current = $this_LibIterationCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getOperationCSAccess().getLibOperationCSParserRuleCall_2()); 

-    }

-    this_LibOperationCS_2=ruleLibOperationCS

-    { 

-        $current = $this_LibOperationCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleLibOperationCS

-entryRuleLibOperationCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLibOperationCSRule()); }

-	 iv_ruleLibOperationCS=ruleLibOperationCS 

-	 { $current=$iv_ruleLibOperationCS.current; } 

-	 EOF 

-;

-

-// Rule LibOperationCS

-ruleLibOperationCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_isStatic_0_0=	'static' 

-    {

-        newLeafNode(lv_isStatic_0_0, grammarAccess.getLibOperationCSAccess().getIsStaticStaticKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibOperationCSRule());

-	        }

-       		setWithLastConsumed($current, "isStatic", true, "static");

-	    }

-

-)

-)?	otherlv_1='operation' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getLibOperationCSAccess().getOperationKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getNameNameParserRuleCall_2_0()); 

-	    }

-		lv_name_2_0=ruleName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_2_0, 

-        		"Name");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedSignature_3_0=ruleTemplateSignatureCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSignature",

-        		lv_ownedSignature_3_0, 

-        		"TemplateSignatureCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_4='(' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getLibOperationCSAccess().getLeftParenthesisKeyword_4());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_0_0()); 

-	    }

-		lv_ownedParameters_5_0=ruleParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_5_0, 

-        		"ParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_6=',' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getLibOperationCSAccess().getCommaKeyword_5_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_1_1_0()); 

-	    }

-		lv_ownedParameters_7_0=ruleParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_7_0, 

-        		"ParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_8=')' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getLibOperationCSAccess().getRightParenthesisKeyword_6());

-    }

-	otherlv_9=':' 

-    {

-    	newLeafNode(otherlv_9, grammarAccess.getLibOperationCSAccess().getColonKeyword_7());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_8_0()); 

-	    }

-		lv_ownedType_10_0=ruleTypedMultiplicityRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_10_0, 

-        		"TypedMultiplicityRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		lv_isValidating_11_0=	'validating' 

-    {

-        newLeafNode(lv_isValidating_11_0, grammarAccess.getLibOperationCSAccess().getIsValidatingValidatingKeyword_9_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibOperationCSRule());

-	        }

-       		setWithLastConsumed($current, "isValidating", true, "validating");

-	    }

-

-)

-)?(

-(

-		lv_isInvalidating_12_0=	'invalidating' 

-    {

-        newLeafNode(lv_isInvalidating_12_0, grammarAccess.getLibOperationCSAccess().getIsInvalidatingInvalidatingKeyword_10_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibOperationCSRule());

-	        }

-       		setWithLastConsumed($current, "isInvalidating", true, "invalidating");

-	    }

-

-)

-)?(	otherlv_13='precedence' 

-    {

-    	newLeafNode(otherlv_13, grammarAccess.getLibOperationCSAccess().getPrecedenceKeyword_11_0());

-    }

-	otherlv_14='=' 

-    {

-    	newLeafNode(otherlv_14, grammarAccess.getLibOperationCSAccess().getEqualsSignKeyword_11_1());

-    }

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibOperationCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getPrecedencePrecedenceCrossReference_11_2_0()); 

-	    }

-		ruleName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?(	otherlv_16='=>' 

-    {

-    	newLeafNode(otherlv_16, grammarAccess.getLibOperationCSAccess().getEqualsSignGreaterThanSignKeyword_12_0());

-    }

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibOperationCSRule());

-	        }

-        }

-	otherlv_17=RULE_SINGLE_QUOTED_STRING

-	{

-		newLeafNode(otherlv_17, grammarAccess.getLibOperationCSAccess().getImplementationJavaClassCSCrossReference_12_1_0()); 

-	}

-

-)

-))?((	otherlv_18='{' 

-    {

-    	newLeafNode(otherlv_18, grammarAccess.getLibOperationCSAccess().getLeftCurlyBracketKeyword_13_0_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_13_0_1_0_0()); 

-	    }

-		lv_ownedAnnotations_19_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_19_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(	otherlv_20='body' 

-    {

-    	newLeafNode(otherlv_20, grammarAccess.getLibOperationCSAccess().getBodyKeyword_13_0_1_1_0());

-    }

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getLibOperationCSAccess().getUnrestrictedNameParserRuleCall_13_0_1_1_1()); 

-    }

-ruleUnrestrictedName

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)?	otherlv_22=':' 

-    {

-    	newLeafNode(otherlv_22, grammarAccess.getLibOperationCSAccess().getColonKeyword_13_0_1_1_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedBodyExpressionsSpecificationCSParserRuleCall_13_0_1_1_3_0()); 

-	    }

-		lv_ownedBodyExpressions_23_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedBodyExpressions",

-        		lv_ownedBodyExpressions_23_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_24=';' 

-    {

-    	newLeafNode(otherlv_24, grammarAccess.getLibOperationCSAccess().getSemicolonKeyword_13_0_1_1_4());

-    }

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedPostconditionsPostCSParserRuleCall_13_0_1_2_0()); 

-	    }

-		lv_ownedPostconditions_25_0=rulePostCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPostconditions",

-        		lv_ownedPostconditions_25_0, 

-        		"PostCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedPreconditionsPreCSParserRuleCall_13_0_1_3_0()); 

-	    }

-		lv_ownedPreconditions_26_0=rulePreCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPreconditions",

-        		lv_ownedPreconditions_26_0, 

-        		"PreCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_27='}' 

-    {

-    	newLeafNode(otherlv_27, grammarAccess.getLibOperationCSAccess().getRightCurlyBracketKeyword_13_0_2());

-    }

-)

-    |	otherlv_28=';' 

-    {

-    	newLeafNode(otherlv_28, grammarAccess.getLibOperationCSAccess().getSemicolonKeyword_13_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLibPackageCS

-entryRuleLibPackageCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLibPackageCSRule()); }

-	 iv_ruleLibPackageCS=ruleLibPackageCS 

-	 { $current=$iv_ruleLibPackageCS.current; } 

-	 EOF 

-;

-

-// Rule LibPackageCS

-ruleLibPackageCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='library' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLibPackageCSAccess().getLibraryKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibPackageCSAccess().getNameNameParserRuleCall_1_0()); 

-	    }

-		lv_name_1_0=ruleName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibPackageCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"Name");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getLibPackageCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibPackageCSAccess().getNsPrefixIdentifierParserRuleCall_2_1_0()); 

-	    }

-		lv_nsPrefix_3_0=ruleIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibPackageCSRule());

-	        }

-       		set(

-       			$current, 

-       			"nsPrefix",

-        		lv_nsPrefix_3_0, 

-        		"Identifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getLibPackageCSAccess().getEqualsSignKeyword_2_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibPackageCSAccess().getNsURIURIParserRuleCall_2_3_0()); 

-	    }

-		lv_nsURI_5_0=ruleURI		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibPackageCSRule());

-	        }

-       		set(

-       			$current, 

-       			"nsURI",

-        		lv_nsURI_5_0, 

-        		"URI");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?	otherlv_6='{' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getLibPackageCSAccess().getLeftCurlyBracketKeyword_3());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_0()); 

-	    }

-		lv_ownedPackages_7_0=rulePackageCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibPackageCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPackages",

-        		lv_ownedPackages_7_0, 

-        		"PackageCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(	otherlv_8='precedence' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getLibPackageCSAccess().getPrecedenceKeyword_4_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibPackageCSAccess().getOwnedPrecedencesPrecedenceCSParserRuleCall_4_1_1_0()); 

-	    }

-		lv_ownedPrecedences_9_0=rulePrecedenceCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibPackageCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPrecedences",

-        		lv_ownedPrecedences_9_0, 

-        		"PrecedenceCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)+	otherlv_10=';' 

-    {

-    	newLeafNode(otherlv_10, grammarAccess.getLibPackageCSAccess().getSemicolonKeyword_4_1_2());

-    }

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_2_0()); 

-	    }

-		lv_ownedClasses_11_0=ruleClassCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibPackageCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedClasses",

-        		lv_ownedClasses_11_0, 

-        		"ClassCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_3_0()); 

-	    }

-		lv_ownedAnnotations_12_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibPackageCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_12_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_13='}' 

-    {

-    	newLeafNode(otherlv_13, grammarAccess.getLibPackageCSAccess().getRightCurlyBracketKeyword_5());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePackageCS

-entryRulePackageCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPackageCSRule()); }

-	 iv_rulePackageCS=rulePackageCS 

-	 { $current=$iv_rulePackageCS.current; } 

-	 EOF 

-;

-

-// Rule PackageCS

-rulePackageCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='package' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getPackageCSAccess().getPackageKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageCSAccess().getNameNameParserRuleCall_1_0()); 

-	    }

-		lv_name_1_0=ruleName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"Name");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getPackageCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageCSAccess().getNsPrefixIdentifierParserRuleCall_2_1_0()); 

-	    }

-		lv_nsPrefix_3_0=ruleIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());

-	        }

-       		set(

-       			$current, 

-       			"nsPrefix",

-        		lv_nsPrefix_3_0, 

-        		"Identifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getPackageCSAccess().getEqualsSignKeyword_2_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageCSAccess().getNsURIURIParserRuleCall_2_3_0()); 

-	    }

-		lv_nsURI_5_0=ruleURI		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());

-	        }

-       		set(

-       			$current, 

-       			"nsURI",

-        		lv_nsURI_5_0, 

-        		"URI");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?	otherlv_6='{' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getPackageCSAccess().getLeftCurlyBracketKeyword_3());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_0()); 

-	    }

-		lv_ownedPackages_7_0=rulePackageCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPackages",

-        		lv_ownedPackages_7_0, 

-        		"PackageCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_1_0()); 

-	    }

-		lv_ownedClasses_8_0=ruleClassCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedClasses",

-        		lv_ownedClasses_8_0, 

-        		"ClassCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_2_0()); 

-	    }

-		lv_ownedAnnotations_9_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_9_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_10='}' 

-    {

-    	newLeafNode(otherlv_10, grammarAccess.getPackageCSAccess().getRightCurlyBracketKeyword_5());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleParameterCS

-entryRuleParameterCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getParameterCSRule()); }

-	 iv_ruleParameterCS=ruleParameterCS 

-	 { $current=$iv_ruleParameterCS.current; } 

-	 EOF 

-;

-

-// Rule ParameterCS

-ruleParameterCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getParameterCSAccess().getNameIdentifierParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"Identifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getParameterCSAccess().getColonKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getParameterCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypedMultiplicityRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypedMultiplicityRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLibPropertyCS

-entryRuleLibPropertyCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLibPropertyCSRule()); }

-	 iv_ruleLibPropertyCS=ruleLibPropertyCS 

-	 { $current=$iv_ruleLibPropertyCS.current; } 

-	 EOF 

-;

-

-// Rule LibPropertyCS

-ruleLibPropertyCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_isStatic_0_0=	'static' 

-    {

-        newLeafNode(lv_isStatic_0_0, grammarAccess.getLibPropertyCSAccess().getIsStaticStaticKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibPropertyCSRule());

-	        }

-       		setWithLastConsumed($current, "isStatic", true, "static");

-	    }

-

-)

-)?	otherlv_1='property' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getLibPropertyCSAccess().getPropertyKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibPropertyCSAccess().getNameNameParserRuleCall_2_0()); 

-	    }

-		lv_name_2_0=ruleName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibPropertyCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_2_0, 

-        		"Name");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_3=':' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getLibPropertyCSAccess().getColonKeyword_3());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibPropertyCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedType_4_0=ruleTypedMultiplicityRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibPropertyCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_4_0, 

-        		"TypedMultiplicityRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_5='=>' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getLibPropertyCSAccess().getEqualsSignGreaterThanSignKeyword_5_0());

-    }

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getLibPropertyCSRule());

-	        }

-        }

-	otherlv_6=RULE_SINGLE_QUOTED_STRING

-	{

-		newLeafNode(otherlv_6, grammarAccess.getLibPropertyCSAccess().getImplementationJavaClassCSCrossReference_5_1_0()); 

-	}

-

-)

-))?((	otherlv_7='{' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getLibPropertyCSAccess().getLeftCurlyBracketKeyword_6_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLibPropertyCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0()); 

-	    }

-		lv_ownedAnnotations_8_0=ruleAnnotationElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLibPropertyCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedAnnotations",

-        		lv_ownedAnnotations_8_0, 

-        		"AnnotationElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_9='}' 

-    {

-    	newLeafNode(otherlv_9, grammarAccess.getLibPropertyCSAccess().getRightCurlyBracketKeyword_6_0_2());

-    }

-)

-    |	otherlv_10=';' 

-    {

-    	newLeafNode(otherlv_10, grammarAccess.getLibPropertyCSAccess().getSemicolonKeyword_6_1());

-    }

-))

-;

-

-

-

-

-

-// Entry rule entryRulePostCS

-entryRulePostCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPostCSRule()); }

-	 iv_rulePostCS=rulePostCS 

-	 { $current=$iv_rulePostCS.current; } 

-	 EOF 

-;

-

-// Rule PostCS

-rulePostCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_stereotype_0_0=	'post' 

-    {

-        newLeafNode(lv_stereotype_0_0, grammarAccess.getPostCSAccess().getStereotypePostKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getPostCSRule());

-	        }

-       		setWithLastConsumed($current, "stereotype", lv_stereotype_0_0, "post");

-	    }

-

-)

-)((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPostCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); 

-	    }

-		lv_name_1_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPostCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2='(' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getPostCSAccess().getLeftParenthesisKeyword_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPostCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); 

-	    }

-		lv_ownedMessageSpecification_3_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPostCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMessageSpecification",

-        		lv_ownedMessageSpecification_3_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_4=')' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getPostCSAccess().getRightParenthesisKeyword_1_1_2());

-    }

-)?)?	otherlv_5=':' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getPostCSAccess().getColonKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPostCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedSpecification_6_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPostCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSpecification",

-        		lv_ownedSpecification_6_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_7=';' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getPostCSAccess().getSemicolonKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePreCS

-entryRulePreCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPreCSRule()); }

-	 iv_rulePreCS=rulePreCS 

-	 { $current=$iv_rulePreCS.current; } 

-	 EOF 

-;

-

-// Rule PreCS

-rulePreCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_stereotype_0_0=	'pre' 

-    {

-        newLeafNode(lv_stereotype_0_0, grammarAccess.getPreCSAccess().getStereotypePreKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getPreCSRule());

-	        }

-       		setWithLastConsumed($current, "stereotype", lv_stereotype_0_0, "pre");

-	    }

-

-)

-)((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPreCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); 

-	    }

-		lv_name_1_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPreCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2='(' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getPreCSAccess().getLeftParenthesisKeyword_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPreCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); 

-	    }

-		lv_ownedMessageSpecification_3_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPreCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMessageSpecification",

-        		lv_ownedMessageSpecification_3_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_4=')' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getPreCSAccess().getRightParenthesisKeyword_1_1_2());

-    }

-)?)?	otherlv_5=':' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getPreCSAccess().getColonKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPreCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedSpecification_6_0=ruleSpecificationCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPreCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSpecification",

-        		lv_ownedSpecification_6_0, 

-        		"SpecificationCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_7=';' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getPreCSAccess().getSemicolonKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrecedenceCS

-entryRulePrecedenceCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrecedenceCSRule()); }

-	 iv_rulePrecedenceCS=rulePrecedenceCS 

-	 { $current=$iv_rulePrecedenceCS.current; } 

-	 EOF 

-;

-

-// Rule PrecedenceCS

-rulePrecedenceCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((	otherlv_0='left' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getPrecedenceCSAccess().getLeftKeyword_0_0());

-    }

-

-    |(

-(

-		lv_isRightAssociative_1_0=	'right' 

-    {

-        newLeafNode(lv_isRightAssociative_1_0, grammarAccess.getPrecedenceCSAccess().getIsRightAssociativeRightKeyword_0_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getPrecedenceCSRule());

-	        }

-       		setWithLastConsumed($current, "isRightAssociative", true, "right");

-	    }

-

-)

-))	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getPrecedenceCSAccess().getColonKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrecedenceCSAccess().getNameNameParserRuleCall_2_0()); 

-	    }

-		lv_name_3_0=ruleName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrecedenceCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_3_0, 

-        		"Name");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleSpecificationCS

-entryRuleSpecificationCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getSpecificationCSRule()); }

-	 iv_ruleSpecificationCS=ruleSpecificationCS 

-	 { $current=$iv_ruleSpecificationCS.current; } 

-	 EOF 

-;

-

-// Rule SpecificationCS

-ruleSpecificationCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0()); 

-	    }

-		lv_ownedExpression_0_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getSpecificationCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_0_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypedMultiplicityRefCS

-entryRuleTypedMultiplicityRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypedMultiplicityRefCSRule()); }

-	 iv_ruleTypedMultiplicityRefCS=ruleTypedMultiplicityRefCS 

-	 { $current=$iv_ruleTypedMultiplicityRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypedMultiplicityRefCS

-ruleTypedMultiplicityRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypedMultiplicityRefCSAccess().getTupleTypeCSParserRuleCall_0_0()); 

-    }

-    this_TupleTypeCS_0=ruleTupleTypeCS

-    { 

-        $current = $this_TupleTypeCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypedMultiplicityRefCSAccess().getTypedTypeRefCSParserRuleCall_0_1()); 

-    }

-    this_TypedTypeRefCS_1=ruleTypedTypeRefCS

-    { 

-        $current = $this_TypedTypeRefCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypedMultiplicityRefCSAccess().getLambdaTypeCSParserRuleCall_0_2()); 

-    }

-    this_LambdaTypeCS_2=ruleLambdaTypeCS

-    { 

-        $current = $this_LambdaTypeCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedMultiplicity_3_0=ruleMultiplicityCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypedMultiplicityRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMultiplicity",

-        		lv_ownedMultiplicity_3_0, 

-        		"MultiplicityCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTypedRefCS

-entryRuleTypedRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypedRefCSRule()); }

-	 iv_ruleTypedRefCS=ruleTypedRefCS 

-	 { $current=$iv_ruleTypedRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypedRefCS

-ruleTypedRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTupleTypeCSParserRuleCall_0()); 

-    }

-    this_TupleTypeCS_0=ruleTupleTypeCS

-    { 

-        $current = $this_TupleTypeCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); 

-    }

-    this_TypedTypeRefCS_1=ruleTypedTypeRefCS

-    { 

-        $current = $this_TypedTypeRefCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypedRefCSAccess().getLambdaTypeCSParserRuleCall_2()); 

-    }

-    this_LambdaTypeCS_2=ruleLambdaTypeCS

-    { 

-        $current = $this_LambdaTypeCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypedTypeRefCS

-entryRuleTypedTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypedTypeRefCSRule()); }

-	 iv_ruleTypedTypeRefCS=ruleTypedTypeRefCS 

-	 { $current=$iv_ruleTypedTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypedTypeRefCS

-ruleTypedTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-(

-		lv_isTypeof_0_0=	'typeof' 

-    {

-        newLeafNode(lv_isTypeof_0_0, grammarAccess.getTypedTypeRefCSAccess().getIsTypeofTypeofKeyword_0_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getTypedTypeRefCSRule());

-	        }

-       		setWithLastConsumed($current, "isTypeof", true, "typeof");

-	    }

-

-)

-)	otherlv_1='(' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTypedTypeRefCSAccess().getLeftParenthesisKeyword_0_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_0_2_0()); 

-	    }

-		lv_ownedPathName_2_0=ruleLibPathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_2_0, 

-        		"LibPathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_3=')' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTypedTypeRefCSAccess().getRightParenthesisKeyword_0_3());

-    }

-)

-    |((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_1_0_0()); 

-	    }

-		lv_ownedPathName_4_0=ruleLibPathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_4_0, 

-        		"LibPathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedBinding_5_0=ruleTemplateBindingCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedBinding",

-        		lv_ownedBinding_5_0, 

-        		"TemplateBindingCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?))

-;

-

-

-

-

-

-// Entry rule entryRuleTuplePartCS

-entryRuleTuplePartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTuplePartCSRule()); }

-	 iv_ruleTuplePartCS=ruleTuplePartCS 

-	 { $current=$iv_ruleTuplePartCS.current; } 

-	 EOF 

-;

-

-// Rule TuplePartCS

-ruleTuplePartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getNameIdentifierParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"Identifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTuplePartCSAccess().getColonKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypedMultiplicityRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypedMultiplicityRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLReservedKeyword

-entryRuleEssentialOCLReservedKeyword returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLReservedKeywordRule()); } 

-	 iv_ruleEssentialOCLReservedKeyword=ruleEssentialOCLReservedKeyword 

-	 { $current=$iv_ruleEssentialOCLReservedKeyword.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLReservedKeyword

-ruleEssentialOCLReservedKeyword returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='and' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getAndKeyword_0()); 

-    }

-

-    |

-	kw='else' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getElseKeyword_1()); 

-    }

-

-    |

-	kw='endif' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getEndifKeyword_2()); 

-    }

-

-    |

-	kw='if' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getIfKeyword_3()); 

-    }

-

-    |

-	kw='implies' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getImpliesKeyword_4()); 

-    }

-

-    |

-	kw='in' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getInKeyword_5()); 

-    }

-

-    |

-	kw='let' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getLetKeyword_6()); 

-    }

-

-    |

-	kw='not' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getNotKeyword_7()); 

-    }

-

-    |

-	kw='or' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getOrKeyword_8()); 

-    }

-

-    |

-	kw='then' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getThenKeyword_9()); 

-    }

-

-    |

-	kw='xor' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getXorKeyword_10()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnaryOperatorName

-entryRuleEssentialOCLUnaryOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 

-	 iv_ruleEssentialOCLUnaryOperatorName=ruleEssentialOCLUnaryOperatorName 

-	 { $current=$iv_ruleEssentialOCLUnaryOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLUnaryOperatorName

-ruleEssentialOCLUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='-' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); 

-    }

-

-    |

-	kw='not' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLInfixOperatorName

-entryRuleEssentialOCLInfixOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 

-	 iv_ruleEssentialOCLInfixOperatorName=ruleEssentialOCLInfixOperatorName 

-	 { $current=$iv_ruleEssentialOCLInfixOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLInfixOperatorName

-ruleEssentialOCLInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='*' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); 

-    }

-

-    |

-	kw='/' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); 

-    }

-

-    |

-	kw='+' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); 

-    }

-

-    |

-	kw='-' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); 

-    }

-

-    |

-	kw='>' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); 

-    }

-

-    |

-	kw='<' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); 

-    }

-

-    |

-	kw='>=' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); 

-    }

-

-    |

-	kw='<=' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); 

-    }

-

-    |

-	kw='=' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); 

-    }

-

-    |

-	kw='<>' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); 

-    }

-

-    |

-	kw='and' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); 

-    }

-

-    |

-	kw='or' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); 

-    }

-

-    |

-	kw='xor' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); 

-    }

-

-    |

-	kw='implies' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLNavigationOperatorName

-entryRuleEssentialOCLNavigationOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 

-	 iv_ruleEssentialOCLNavigationOperatorName=ruleEssentialOCLNavigationOperatorName 

-	 { $current=$iv_ruleEssentialOCLNavigationOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLNavigationOperatorName

-ruleEssentialOCLNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='.' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); 

-    }

-

-    |

-	kw='->' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); 

-    }

-

-    |

-	kw='?.' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); 

-    }

-

-    |

-	kw='?->' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleBinaryOperatorName

-entryRuleBinaryOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getBinaryOperatorNameRule()); } 

-	 iv_ruleBinaryOperatorName=ruleBinaryOperatorName 

-	 { $current=$iv_ruleBinaryOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule BinaryOperatorName

-ruleBinaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); 

-    }

-    this_InfixOperatorName_0=ruleInfixOperatorName    {

-		$current.merge(this_InfixOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); 

-    }

-    this_NavigationOperatorName_1=ruleNavigationOperatorName    {

-		$current.merge(this_NavigationOperatorName_1);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleInfixOperatorName

-entryRuleInfixOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getInfixOperatorNameRule()); } 

-	 iv_ruleInfixOperatorName=ruleInfixOperatorName 

-	 { $current=$iv_ruleInfixOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule InfixOperatorName

-ruleInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); 

-    }

-    this_EssentialOCLInfixOperatorName_0=ruleEssentialOCLInfixOperatorName    {

-		$current.merge(this_EssentialOCLInfixOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleNavigationOperatorName

-entryRuleNavigationOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigationOperatorNameRule()); } 

-	 iv_ruleNavigationOperatorName=ruleNavigationOperatorName 

-	 { $current=$iv_ruleNavigationOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule NavigationOperatorName

-ruleNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); 

-    }

-    this_EssentialOCLNavigationOperatorName_0=ruleEssentialOCLNavigationOperatorName    {

-		$current.merge(this_EssentialOCLNavigationOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleUnaryOperatorName

-entryRuleUnaryOperatorName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnaryOperatorNameRule()); } 

-	 iv_ruleUnaryOperatorName=ruleUnaryOperatorName 

-	 { $current=$iv_ruleUnaryOperatorName.current.getText(); }  

-	 EOF 

-;

-

-// Rule UnaryOperatorName

-ruleUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); 

-    }

-    this_EssentialOCLUnaryOperatorName_0=ruleEssentialOCLUnaryOperatorName    {

-		$current.merge(this_EssentialOCLUnaryOperatorName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnrestrictedName

-entryRuleEssentialOCLUnrestrictedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 

-	 iv_ruleEssentialOCLUnrestrictedName=ruleEssentialOCLUnrestrictedName 

-	 { $current=$iv_ruleEssentialOCLUnrestrictedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLUnrestrictedName

-ruleEssentialOCLUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); 

-    }

-    this_Identifier_0=ruleIdentifier    {

-		$current.merge(this_Identifier_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleUnrestrictedName

-entryRuleUnrestrictedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnrestrictedNameRule()); } 

-	 iv_ruleUnrestrictedName=ruleUnrestrictedName 

-	 { $current=$iv_ruleUnrestrictedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule UnrestrictedName

-ruleUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall()); 

-    }

-    this_EssentialOCLUnrestrictedName_0=ruleEssentialOCLUnrestrictedName    {

-		$current.merge(this_EssentialOCLUnrestrictedName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleEssentialOCLUnreservedName

-entryRuleEssentialOCLUnreservedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameRule()); } 

-	 iv_ruleEssentialOCLUnreservedName=ruleEssentialOCLUnreservedName 

-	 { $current=$iv_ruleEssentialOCLUnreservedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule EssentialOCLUnreservedName

-ruleEssentialOCLUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); 

-    }

-    this_UnrestrictedName_0=ruleUnrestrictedName    {

-		$current.merge(this_UnrestrictedName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); 

-    }

-    this_CollectionTypeIdentifier_1=ruleCollectionTypeIdentifier    {

-		$current.merge(this_CollectionTypeIdentifier_1);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-    { 

-        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); 

-    }

-    this_PrimitiveTypeIdentifier_2=rulePrimitiveTypeIdentifier    {

-		$current.merge(this_PrimitiveTypeIdentifier_2);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	kw='Tuple' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleUnreservedName

-entryRuleUnreservedName returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnreservedNameRule()); } 

-	 iv_ruleUnreservedName=ruleUnreservedName 

-	 { $current=$iv_ruleUnreservedName.current.getText(); }  

-	 EOF 

-;

-

-// Rule UnreservedName

-ruleUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-    { 

-        newCompositeNode(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); 

-    }

-    this_EssentialOCLUnreservedName_0=ruleEssentialOCLUnreservedName    {

-		$current.merge(this_EssentialOCLUnreservedName_0);

-    }

-

-    { 

-        afterParserOrEnumRuleCall();

-    }

-

-    ;

-

-

-

-

-

-

-

-// Entry rule entryRuleURIFirstPathElementCS

-entryRuleURIFirstPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getURIFirstPathElementCSRule()); }

-	 iv_ruleURIFirstPathElementCS=ruleURIFirstPathElementCS 

-	 { $current=$iv_ruleURIFirstPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule URIFirstPathElementCS

-ruleURIFirstPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-    |((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0(),

-            $current);

-    }

-)(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); 

-	    }

-		ruleURI		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))

-;

-

-

-

-

-

-// Entry rule entryRulePrimitiveTypeIdentifier

-entryRulePrimitiveTypeIdentifier returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimitiveTypeIdentifierRule()); } 

-	 iv_rulePrimitiveTypeIdentifier=rulePrimitiveTypeIdentifier 

-	 { $current=$iv_rulePrimitiveTypeIdentifier.current.getText(); }  

-	 EOF 

-;

-

-// Rule PrimitiveTypeIdentifier

-rulePrimitiveTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='Boolean' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); 

-    }

-

-    |

-	kw='Integer' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); 

-    }

-

-    |

-	kw='Real' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); 

-    }

-

-    |

-	kw='String' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); 

-    }

-

-    |

-	kw='UnlimitedNatural' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); 

-    }

-

-    |

-	kw='OclAny' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); 

-    }

-

-    |

-	kw='OclInvalid' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); 

-    }

-

-    |

-	kw='OclVoid' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRulePrimitiveTypeCS

-entryRulePrimitiveTypeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimitiveTypeCSRule()); }

-	 iv_rulePrimitiveTypeCS=rulePrimitiveTypeCS 

-	 { $current=$iv_rulePrimitiveTypeCS.current; } 

-	 EOF 

-;

-

-// Rule PrimitiveTypeCS

-rulePrimitiveTypeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); 

-	    }

-		lv_name_0_0=rulePrimitiveTypeIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrimitiveTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"PrimitiveTypeIdentifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionTypeIdentifier

-entryRuleCollectionTypeIdentifier returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionTypeIdentifierRule()); } 

-	 iv_ruleCollectionTypeIdentifier=ruleCollectionTypeIdentifier 

-	 { $current=$iv_ruleCollectionTypeIdentifier.current.getText(); }  

-	 EOF 

-;

-

-// Rule CollectionTypeIdentifier

-ruleCollectionTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	kw='Set' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); 

-    }

-

-    |

-	kw='Bag' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); 

-    }

-

-    |

-	kw='Sequence' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); 

-    }

-

-    |

-	kw='Collection' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); 

-    }

-

-    |

-	kw='OrderedSet' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleCollectionTypeCS

-entryRuleCollectionTypeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionTypeCSRule()); }

-	 iv_ruleCollectionTypeCS=ruleCollectionTypeCS 

-	 { $current=$iv_ruleCollectionTypeCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionTypeCS

-ruleCollectionTypeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleCollectionTypeIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"CollectionTypeIdentifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='(' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_3=')' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2());

-    }

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTupleTypeCS

-entryRuleTupleTypeCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTupleTypeCSRule()); }

-	 iv_ruleTupleTypeCS=ruleTupleTypeCS 

-	 { $current=$iv_ruleTupleTypeCS.current; } 

-	 EOF 

-;

-

-// Rule TupleTypeCS

-ruleTupleTypeCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_name_0_0=	'Tuple' 

-    {

-        newLeafNode(lv_name_0_0, grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getTupleTypeCSRule());

-	        }

-       		setWithLastConsumed($current, "name", lv_name_0_0, "Tuple");

-	    }

-

-)

-)(	otherlv_1='(' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); 

-	    }

-		lv_ownedParts_2_0=ruleTuplePartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"TuplePartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleTuplePartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"TuplePartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_5=')' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2());

-    }

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionLiteralExpCS

-entryRuleCollectionLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionLiteralExpCSRule()); }

-	 iv_ruleCollectionLiteralExpCS=ruleCollectionLiteralExpCS 

-	 { $current=$iv_ruleCollectionLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionLiteralExpCS

-ruleCollectionLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedType_0_0=ruleCollectionTypeCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_0_0, 

-        		"CollectionTypeCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedParts_2_0=ruleCollectionLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"CollectionLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleCollectionLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"CollectionLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?	otherlv_5='}' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionLiteralPartCS

-entryRuleCollectionLiteralPartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionLiteralPartCSRule()); }

-	 iv_ruleCollectionLiteralPartCS=ruleCollectionLiteralPartCS 

-	 { $current=$iv_ruleCollectionLiteralPartCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionLiteralPartCS

-ruleCollectionLiteralPartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); 

-	    }

-		lv_ownedExpression_0_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_0_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='..' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); 

-	    }

-		lv_ownedLastExpression_2_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedLastExpression",

-        		lv_ownedLastExpression_2_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedExpression_3_0=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_3_0, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleCollectionPatternCS

-entryRuleCollectionPatternCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCollectionPatternCSRule()); }

-	 iv_ruleCollectionPatternCS=ruleCollectionPatternCS 

-	 { $current=$iv_ruleCollectionPatternCS.current; } 

-	 EOF 

-;

-

-// Rule CollectionPatternCS

-ruleCollectionPatternCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedType_0_0=ruleCollectionTypeCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_0_0, 

-        		"CollectionTypeCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedParts_2_0=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*(	otherlv_5='++' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); 

-	    }

-		lv_restVariableName_6_0=ruleIdentifier		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());

-	        }

-       		set(

-       			$current, 

-       			"restVariableName",

-        		lv_restVariableName_6_0, 

-        		"Identifier");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?	otherlv_7='}' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleConstructorPartCS

-entryRuleConstructorPartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getConstructorPartCSRule()); }

-	 iv_ruleConstructorPartCS=ruleConstructorPartCS 

-	 { $current=$iv_ruleConstructorPartCS.current; } 

-	 EOF 

-;

-

-// Rule ConstructorPartCS

-ruleConstructorPartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getConstructorPartCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_1='=' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1());

-    }

-(

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedInitExpression_2_1=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_2_1, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-    |		{ 

-	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); 

-	    }

-		lv_ownedInitExpression_2_2=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_2_2, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRulePatternExpCS

-entryRulePatternExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPatternExpCSRule()); }

-	 iv_rulePatternExpCS=rulePatternExpCS 

-	 { $current=$iv_rulePatternExpCS.current; } 

-	 EOF 

-;

-

-// Rule PatternExpCS

-rulePatternExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_patternVariableName_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"patternVariableName",

-        		lv_patternVariableName_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getPatternExpCSAccess().getColonKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedPatternType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPatternType",

-        		lv_ownedPatternType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLambdaLiteralExpCS

-entryRuleLambdaLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLambdaLiteralExpCSRule()); }

-	 iv_ruleLambdaLiteralExpCS=ruleLambdaLiteralExpCS 

-	 { $current=$iv_ruleLambdaLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule LambdaLiteralExpCS

-ruleLambdaLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='Lambda' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0());

-    }

-	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedExpressionCS_2_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLambdaLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpressionCS",

-        		lv_ownedExpressionCS_2_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_3='}' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrimitiveLiteralExpCS

-entryRulePrimitiveLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSRule()); }

-	 iv_rulePrimitiveLiteralExpCS=rulePrimitiveLiteralExpCS 

-	 { $current=$iv_rulePrimitiveLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrimitiveLiteralExpCS

-rulePrimitiveLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); 

-    }

-    this_NumberLiteralExpCS_0=ruleNumberLiteralExpCS

-    { 

-        $current = $this_NumberLiteralExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); 

-    }

-    this_StringLiteralExpCS_1=ruleStringLiteralExpCS

-    { 

-        $current = $this_StringLiteralExpCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); 

-    }

-    this_BooleanLiteralExpCS_2=ruleBooleanLiteralExpCS

-    { 

-        $current = $this_BooleanLiteralExpCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); 

-    }

-    this_UnlimitedNaturalLiteralExpCS_3=ruleUnlimitedNaturalLiteralExpCS

-    { 

-        $current = $this_UnlimitedNaturalLiteralExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); 

-    }

-    this_InvalidLiteralExpCS_4=ruleInvalidLiteralExpCS

-    { 

-        $current = $this_InvalidLiteralExpCS_4.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); 

-    }

-    this_NullLiteralExpCS_5=ruleNullLiteralExpCS

-    { 

-        $current = $this_NullLiteralExpCS_5.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTupleLiteralExpCS

-entryRuleTupleLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTupleLiteralExpCSRule()); }

-	 iv_ruleTupleLiteralExpCS=ruleTupleLiteralExpCS 

-	 { $current=$iv_ruleTupleLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule TupleLiteralExpCS

-ruleTupleLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='Tuple' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0());

-    }

-	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedParts_2_0=ruleTupleLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"TupleLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleTupleLiteralPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"TupleLiteralPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_5='}' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTupleLiteralPartCS

-entryRuleTupleLiteralPartCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTupleLiteralPartCSRule()); }

-	 iv_ruleTupleLiteralPartCS=ruleTupleLiteralPartCS 

-	 { $current=$iv_ruleTupleLiteralPartCS.current; } 

-	 EOF 

-;

-

-// Rule TupleLiteralPartCS

-ruleTupleLiteralPartCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?	otherlv_3='=' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedInitExpression_4_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_4_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleNumberLiteralExpCS

-entryRuleNumberLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNumberLiteralExpCSRule()); }

-	 iv_ruleNumberLiteralExpCS=ruleNumberLiteralExpCS 

-	 { $current=$iv_ruleNumberLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule NumberLiteralExpCS

-ruleNumberLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); 

-	    }

-		lv_symbol_0_0=ruleNUMBER_LITERAL		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNumberLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"symbol",

-        		lv_symbol_0_0, 

-        		"NUMBER_LITERAL");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleStringLiteralExpCS

-entryRuleStringLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getStringLiteralExpCSRule()); }

-	 iv_ruleStringLiteralExpCS=ruleStringLiteralExpCS 

-	 { $current=$iv_ruleStringLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule StringLiteralExpCS

-ruleStringLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); 

-	    }

-		lv_segments_0_0=ruleStringLiteral		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getStringLiteralExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"segments",

-        		lv_segments_0_0, 

-        		"StringLiteral");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)+

-;

-

-

-

-

-

-// Entry rule entryRuleBooleanLiteralExpCS

-entryRuleBooleanLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getBooleanLiteralExpCSRule()); }

-	 iv_ruleBooleanLiteralExpCS=ruleBooleanLiteralExpCS 

-	 { $current=$iv_ruleBooleanLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule BooleanLiteralExpCS

-ruleBooleanLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_symbol_0_0=	'true' 

-    {

-        newLeafNode(lv_symbol_0_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());

-	        }

-       		setWithLastConsumed($current, "symbol", lv_symbol_0_0, "true");

-	    }

-

-)

-)

-    |(

-(

-		lv_symbol_1_0=	'false' 

-    {

-        newLeafNode(lv_symbol_1_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());

-	        }

-       		setWithLastConsumed($current, "symbol", lv_symbol_1_0, "false");

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleUnlimitedNaturalLiteralExpCS

-entryRuleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }

-	 iv_ruleUnlimitedNaturalLiteralExpCS=ruleUnlimitedNaturalLiteralExpCS 

-	 { $current=$iv_ruleUnlimitedNaturalLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule UnlimitedNaturalLiteralExpCS

-ruleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='*' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleInvalidLiteralExpCS

-entryRuleInvalidLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getInvalidLiteralExpCSRule()); }

-	 iv_ruleInvalidLiteralExpCS=ruleInvalidLiteralExpCS 

-	 { $current=$iv_ruleInvalidLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule InvalidLiteralExpCS

-ruleInvalidLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='invalid' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNullLiteralExpCS

-entryRuleNullLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNullLiteralExpCSRule()); }

-	 iv_ruleNullLiteralExpCS=ruleNullLiteralExpCS 

-	 { $current=$iv_ruleNullLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule NullLiteralExpCS

-ruleNullLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='null' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeLiteralCS

-entryRuleTypeLiteralCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeLiteralCSRule()); }

-	 iv_ruleTypeLiteralCS=ruleTypeLiteralCS 

-	 { $current=$iv_ruleTypeLiteralCS.current; } 

-	 EOF 

-;

-

-// Rule TypeLiteralCS

-ruleTypeLiteralCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); 

-    }

-    this_PrimitiveTypeCS_0=rulePrimitiveTypeCS

-    { 

-        $current = $this_PrimitiveTypeCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); 

-    }

-    this_CollectionTypeCS_1=ruleCollectionTypeCS

-    { 

-        $current = $this_CollectionTypeCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); 

-    }

-    this_TupleTypeCS_2=ruleTupleTypeCS

-    { 

-        $current = $this_TupleTypeCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeLiteralWithMultiplicityCS

-entryRuleTypeLiteralWithMultiplicityCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }

-	 iv_ruleTypeLiteralWithMultiplicityCS=ruleTypeLiteralWithMultiplicityCS 

-	 { $current=$iv_ruleTypeLiteralWithMultiplicityCS.current; } 

-	 EOF 

-;

-

-// Rule TypeLiteralWithMultiplicityCS

-ruleTypeLiteralWithMultiplicityCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); 

-    }

-    this_TypeLiteralCS_0=ruleTypeLiteralCS

-    { 

-        $current = $this_TypeLiteralCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedMultiplicity_1_0=ruleMultiplicityCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeLiteralWithMultiplicityCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMultiplicity",

-        		lv_ownedMultiplicity_1_0, 

-        		"MultiplicityCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeLiteralExpCS

-entryRuleTypeLiteralExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeLiteralExpCSRule()); }

-	 iv_ruleTypeLiteralExpCS=ruleTypeLiteralExpCS 

-	 { $current=$iv_ruleTypeLiteralExpCS.current; } 

-	 EOF 

-;

-

-// Rule TypeLiteralExpCS

-ruleTypeLiteralExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); 

-	    }

-		lv_ownedType_0_0=ruleTypeLiteralWithMultiplicityCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeLiteralExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_0_0, 

-        		"TypeLiteralWithMultiplicityCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeNameExpCS

-entryRuleTypeNameExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeNameExpCSRule()); }

-	 iv_ruleTypeNameExpCS=ruleTypeNameExpCS 

-	 { $current=$iv_ruleTypeNameExpCS.current; } 

-	 EOF 

-;

-

-// Rule TypeNameExpCS

-ruleTypeNameExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathName_0_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_0_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); 

-	    }

-		lv_ownedCurlyBracketedClause_1_0=ruleCurlyBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCurlyBracketedClause",

-        		lv_ownedCurlyBracketedClause_1_0, 

-        		"CurlyBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2='{' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); 

-	    }

-		lv_ownedPatternGuard_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPatternGuard",

-        		lv_ownedPatternGuard_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_4='}' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2());

-    }

-)?)?)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeExpCS

-entryRuleTypeExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeExpCSRule()); }

-	 iv_ruleTypeExpCS=ruleTypeExpCS 

-	 { $current=$iv_ruleTypeExpCS.current; } 

-	 EOF 

-;

-

-// Rule TypeExpCS

-ruleTypeExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); 

-    }

-    this_TypeNameExpCS_0=ruleTypeNameExpCS

-    { 

-        $current = $this_TypeNameExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); 

-    }

-    this_TypeLiteralCS_1=ruleTypeLiteralCS

-    { 

-        $current = $this_TypeLiteralCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); 

-    }

-    this_CollectionPatternCS_2=ruleCollectionPatternCS

-    { 

-        $current = $this_CollectionPatternCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedMultiplicity_3_0=ruleMultiplicityCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedMultiplicity",

-        		lv_ownedMultiplicity_3_0, 

-        		"MultiplicityCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleExpCS

-entryRuleExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getExpCSRule()); }

-	 iv_ruleExpCS=ruleExpCS 

-	 { $current=$iv_ruleExpCS.current; } 

-	 EOF 

-;

-

-// Rule ExpCS

-ruleExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); 

-    }

-    this_PrefixedPrimaryExpCS_0=rulePrefixedPrimaryExpCS

-    { 

-        $current = $this_PrefixedPrimaryExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElementAndSet(

-            grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0(),

-            $current);

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); 

-	    }

-		lv_name_2_0=ruleBinaryOperatorName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_2_0, 

-        		"BinaryOperatorName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); 

-	    }

-		lv_ownedRight_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRight",

-        		lv_ownedRight_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); 

-    }

-    this_PrefixedLetExpCS_4=rulePrefixedLetExpCS

-    { 

-        $current = $this_PrefixedLetExpCS_4.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrefixedLetExpCS

-entryRulePrefixedLetExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrefixedLetExpCSRule()); }

-	 iv_rulePrefixedLetExpCS=rulePrefixedLetExpCS 

-	 { $current=$iv_rulePrefixedLetExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrefixedLetExpCS

-rulePrefixedLetExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0(),

-            $current);

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 

-	    }

-		lv_name_1_0=ruleUnaryOperatorName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnaryOperatorName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); 

-	    }

-		lv_ownedRight_2_0=rulePrefixedLetExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRight",

-        		lv_ownedRight_2_0, 

-        		"PrefixedLetExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); 

-    }

-    this_LetExpCS_3=ruleLetExpCS

-    { 

-        $current = $this_LetExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrefixedPrimaryExpCS

-entryRulePrefixedPrimaryExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSRule()); }

-	 iv_rulePrefixedPrimaryExpCS=rulePrefixedPrimaryExpCS 

-	 { $current=$iv_rulePrefixedPrimaryExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrefixedPrimaryExpCS

-rulePrefixedPrimaryExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0(),

-            $current);

-    }

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 

-	    }

-		lv_name_1_0=ruleUnaryOperatorName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_1_0, 

-        		"UnaryOperatorName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); 

-	    }

-		lv_ownedRight_2_0=rulePrefixedPrimaryExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRight",

-        		lv_ownedRight_2_0, 

-        		"PrefixedPrimaryExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); 

-    }

-    this_PrimaryExpCS_3=rulePrimaryExpCS

-    { 

-        $current = $this_PrimaryExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRulePrimaryExpCS

-entryRulePrimaryExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPrimaryExpCSRule()); }

-	 iv_rulePrimaryExpCS=rulePrimaryExpCS 

-	 { $current=$iv_rulePrimaryExpCS.current; } 

-	 EOF 

-;

-

-// Rule PrimaryExpCS

-rulePrimaryExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); 

-    }

-    this_NestedExpCS_0=ruleNestedExpCS

-    { 

-        $current = $this_NestedExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); 

-    }

-    this_IfExpCS_1=ruleIfExpCS

-    { 

-        $current = $this_IfExpCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); 

-    }

-    this_SelfExpCS_2=ruleSelfExpCS

-    { 

-        $current = $this_SelfExpCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); 

-    }

-    this_PrimitiveLiteralExpCS_3=rulePrimitiveLiteralExpCS

-    { 

-        $current = $this_PrimitiveLiteralExpCS_3.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); 

-    }

-    this_TupleLiteralExpCS_4=ruleTupleLiteralExpCS

-    { 

-        $current = $this_TupleLiteralExpCS_4.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); 

-    }

-    this_CollectionLiteralExpCS_5=ruleCollectionLiteralExpCS

-    { 

-        $current = $this_CollectionLiteralExpCS_5.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); 

-    }

-    this_LambdaLiteralExpCS_6=ruleLambdaLiteralExpCS

-    { 

-        $current = $this_LambdaLiteralExpCS_6.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); 

-    }

-    this_TypeLiteralExpCS_7=ruleTypeLiteralExpCS

-    { 

-        $current = $this_TypeLiteralExpCS_7.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); 

-    }

-    this_NameExpCS_8=ruleNameExpCS

-    { 

-        $current = $this_NameExpCS_8.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNameExpCS

-entryRuleNameExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNameExpCSRule()); }

-	 iv_ruleNameExpCS=ruleNameExpCS 

-	 { $current=$iv_ruleNameExpCS.current; } 

-	 EOF 

-;

-

-// Rule NameExpCS

-ruleNameExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathName_0_0=rulePathNameCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedPathName",

-        		lv_ownedPathName_0_0, 

-        		"PathNameCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedSquareBracketedClauses_1_0=ruleSquareBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSquareBracketedClauses",

-        		lv_ownedSquareBracketedClauses_1_0, 

-        		"SquareBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); 

-	    }

-		lv_ownedRoundBracketedClause_2_0=ruleRoundBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRoundBracketedClause",

-        		lv_ownedRoundBracketedClause_2_0, 

-        		"RoundBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedCurlyBracketedClause_3_0=ruleCurlyBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCurlyBracketedClause",

-        		lv_ownedCurlyBracketedClause_3_0, 

-        		"CurlyBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?((

-(

-		lv_isPre_4_0=	'@' 

-    {

-        newLeafNode(lv_isPre_4_0, grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNameExpCSRule());

-	        }

-       		setWithLastConsumed($current, "isPre", true, "@");

-	    }

-

-)

-)	otherlv_5='pre' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getNameExpCSAccess().getPreKeyword_4_1());

-    }

-)?)

-;

-

-

-

-

-

-// Entry rule entryRuleCurlyBracketedClauseCS

-entryRuleCurlyBracketedClauseCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getCurlyBracketedClauseCSRule()); }

-	 iv_ruleCurlyBracketedClauseCS=ruleCurlyBracketedClauseCS 

-	 { $current=$iv_ruleCurlyBracketedClauseCS.current; } 

-	 EOF 

-;

-

-// Rule CurlyBracketedClauseCS

-ruleCurlyBracketedClauseCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0(),

-            $current);

-    }

-)	otherlv_1='{' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1());

-    }

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); 

-	    }

-		lv_ownedParts_2_0=ruleConstructorPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_2_0, 

-        		"ConstructorPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3=',' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); 

-	    }

-		lv_ownedParts_4_0=ruleConstructorPartCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParts",

-        		lv_ownedParts_4_0, 

-        		"ConstructorPartCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)?

-    |(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); 

-	    }

-		lv_value_5_0=ruleStringLiteral		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());

-	        }

-       		set(

-       			$current, 

-       			"value",

-        		lv_value_5_0, 

-        		"StringLiteral");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))	otherlv_6='}' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleRoundBracketedClauseCS

-entryRuleRoundBracketedClauseCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getRoundBracketedClauseCSRule()); }

-	 iv_ruleRoundBracketedClauseCS=ruleRoundBracketedClauseCS 

-	 { $current=$iv_ruleRoundBracketedClauseCS.current; } 

-	 EOF 

-;

-

-// Rule RoundBracketedClauseCS

-ruleRoundBracketedClauseCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0(),

-            $current);

-    }

-)	otherlv_1='(' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1());

-    }

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); 

-	    }

-		lv_ownedArguments_2_0=ruleNavigatingArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_2_0, 

-        		"NavigatingArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedArguments_3_0=ruleNavigatingCommaArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_3_0, 

-        		"NavigatingCommaArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); 

-	    }

-		lv_ownedArguments_4_0=ruleNavigatingSemiArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_4_0, 

-        		"NavigatingSemiArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); 

-	    }

-		lv_ownedArguments_5_0=ruleNavigatingCommaArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_5_0, 

-        		"NavigatingCommaArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*)?((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); 

-	    }

-		lv_ownedArguments_6_0=ruleNavigatingBarArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_6_0, 

-        		"NavigatingBarArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); 

-	    }

-		lv_ownedArguments_7_0=ruleNavigatingCommaArgCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedArguments",

-        		lv_ownedArguments_7_0, 

-        		"NavigatingCommaArgCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*)*)?	otherlv_8=')' 

-    {

-    	newLeafNode(otherlv_8, grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleSquareBracketedClauseCS

-entryRuleSquareBracketedClauseCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getSquareBracketedClauseCSRule()); }

-	 iv_ruleSquareBracketedClauseCS=ruleSquareBracketedClauseCS 

-	 { $current=$iv_ruleSquareBracketedClauseCS.current; } 

-	 EOF 

-;

-

-// Rule SquareBracketedClauseCS

-ruleSquareBracketedClauseCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='[' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedTerms_1_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedTerms",

-        		lv_ownedTerms_1_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedTerms_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedTerms",

-        		lv_ownedTerms_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4=']' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingArgCS

-entryRuleNavigatingArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingArgCSRule()); }

-	 iv_ruleNavigatingArgCS=ruleNavigatingArgCS 

-	 { $current=$iv_ruleNavigatingArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingArgCS

-ruleNavigatingArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); 

-	    }

-		lv_ownedNameExpression_0_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_0_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((	otherlv_1=':' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); 

-	    }

-		lv_ownedType_2_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_2_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3='=' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); 

-	    }

-		lv_ownedInitExpression_4_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_4_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |(	otherlv_5='in' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); 

-	    }

-		lv_ownedInitExpression_6_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_6_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-    |(	otherlv_7=':' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedType_8_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_8_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingBarArgCS

-entryRuleNavigatingBarArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingBarArgCSRule()); }

-	 iv_ruleNavigatingBarArgCS=ruleNavigatingBarArgCS 

-	 { $current=$iv_ruleNavigatingBarArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingBarArgCS

-ruleNavigatingBarArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_prefix_0_0=	'|' 

-    {

-        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, "|");

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_1_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)?)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingCommaArgCS

-entryRuleNavigatingCommaArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingCommaArgCSRule()); }

-	 iv_ruleNavigatingCommaArgCS=ruleNavigatingCommaArgCS 

-	 { $current=$iv_ruleNavigatingCommaArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingCommaArgCS

-ruleNavigatingCommaArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_prefix_0_0=	',' 

-    {

-        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ",");

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_1_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-    |(	otherlv_6='in' 

-    {

-    	newLeafNode(otherlv_6, grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedInitExpression_7_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_7_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingSemiArgCS

-entryRuleNavigatingSemiArgCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingSemiArgCSRule()); }

-	 iv_ruleNavigatingSemiArgCS=ruleNavigatingSemiArgCS 

-	 { $current=$iv_ruleNavigatingSemiArgCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingSemiArgCS

-ruleNavigatingSemiArgCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		lv_prefix_0_0=	';' 

-    {

-        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ";");

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedNameExpression",

-        		lv_ownedNameExpression_1_0, 

-        		"NavigatingArgExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)?)

-;

-

-

-

-

-

-// Entry rule entryRuleNavigatingArgExpCS

-entryRuleNavigatingArgExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNavigatingArgExpCSRule()); }

-	 iv_ruleNavigatingArgExpCS=ruleNavigatingArgExpCS 

-	 { $current=$iv_ruleNavigatingArgExpCS.current; } 

-	 EOF 

-;

-

-// Rule NavigatingArgExpCS

-ruleNavigatingArgExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); 

-    }

-    this_ExpCS_0=ruleExpCS

-    { 

-        $current = $this_ExpCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-;

-

-

-

-

-

-// Entry rule entryRuleIfExpCS

-entryRuleIfExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIfExpCSRule()); }

-	 iv_ruleIfExpCS=ruleIfExpCS 

-	 { $current=$iv_ruleIfExpCS.current; } 

-	 EOF 

-;

-

-// Rule IfExpCS

-ruleIfExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='if' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getIfExpCSAccess().getIfKeyword_0());

-    }

-(

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); 

-	    }

-		lv_ownedCondition_1_1=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCondition",

-        		lv_ownedCondition_1_1, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-    |		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); 

-	    }

-		lv_ownedCondition_1_2=rulePatternExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCondition",

-        		lv_ownedCondition_1_2, 

-        		"PatternExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-

-)

-)	otherlv_2='then' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getIfExpCSAccess().getThenKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedThenExpression_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedThenExpression",

-        		lv_ownedThenExpression_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedIfThenExpressions_4_0=ruleElseIfThenExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedIfThenExpressions",

-        		lv_ownedIfThenExpressions_4_0, 

-        		"ElseIfThenExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)*	otherlv_5='else' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getIfExpCSAccess().getElseKeyword_5());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); 

-	    }

-		lv_ownedElseExpression_6_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedElseExpression",

-        		lv_ownedElseExpression_6_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_7='endif' 

-    {

-    	newLeafNode(otherlv_7, grammarAccess.getIfExpCSAccess().getEndifKeyword_7());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleElseIfThenExpCS

-entryRuleElseIfThenExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getElseIfThenExpCSRule()); }

-	 iv_ruleElseIfThenExpCS=ruleElseIfThenExpCS 

-	 { $current=$iv_ruleElseIfThenExpCS.current; } 

-	 EOF 

-;

-

-// Rule ElseIfThenExpCS

-ruleElseIfThenExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='elseif' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedCondition_1_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedCondition",

-        		lv_ownedCondition_1_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_2='then' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 

-	    }

-		lv_ownedThenExpression_3_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedThenExpression",

-        		lv_ownedThenExpression_3_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLetExpCS

-entryRuleLetExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLetExpCSRule()); }

-	 iv_ruleLetExpCS=ruleLetExpCS 

-	 { $current=$iv_ruleLetExpCS.current; } 

-	 EOF 

-;

-

-// Rule LetExpCS

-ruleLetExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='let' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getLetExpCSAccess().getLetKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedVariables_1_0=ruleLetVariableCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedVariables",

-        		lv_ownedVariables_1_0, 

-        		"LetVariableCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedVariables_3_0=ruleLetVariableCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedVariables",

-        		lv_ownedVariables_3_0, 

-        		"LetVariableCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4='in' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getLetExpCSAccess().getInKeyword_3());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedInExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInExpression",

-        		lv_ownedInExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleLetVariableCS

-entryRuleLetVariableCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLetVariableCSRule()); }

-	 iv_ruleLetVariableCS=ruleLetVariableCS 

-	 { $current=$iv_ruleLetVariableCS.current; } 

-	 EOF 

-;

-

-// Rule LetVariableCS

-ruleLetVariableCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedRoundBracketedClause_1_0=ruleRoundBracketedClauseCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedRoundBracketedClause",

-        		lv_ownedRoundBracketedClause_1_0, 

-        		"RoundBracketedClauseCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)?(	otherlv_2=':' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedType_3_0=ruleTypeExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedType",

-        		lv_ownedType_3_0, 

-        		"TypeExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?	otherlv_4='=' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); 

-	    }

-		lv_ownedInitExpression_5_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedInitExpression",

-        		lv_ownedInitExpression_5_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-;

-

-

-

-

-

-// Entry rule entryRuleNestedExpCS

-entryRuleNestedExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNestedExpCSRule()); }

-	 iv_ruleNestedExpCS=ruleNestedExpCS 

-	 { $current=$iv_ruleNestedExpCS.current; } 

-	 EOF 

-;

-

-// Rule NestedExpCS

-ruleNestedExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='(' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedExpression_1_0=ruleExpCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getNestedExpCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExpression",

-        		lv_ownedExpression_1_0, 

-        		"ExpCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)	otherlv_2=')' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleSelfExpCS

-entryRuleSelfExpCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getSelfExpCSRule()); }

-	 iv_ruleSelfExpCS=ruleSelfExpCS 

-	 { $current=$iv_ruleSelfExpCS.current; } 

-	 EOF 

-;

-

-// Rule SelfExpCS

-ruleSelfExpCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0(),

-            $current);

-    }

-)	otherlv_1='self' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getSelfExpCSAccess().getSelfKeyword_1());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleMultiplicityBoundsCS

-entryRuleMultiplicityBoundsCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMultiplicityBoundsCSRule()); }

-	 iv_ruleMultiplicityBoundsCS=ruleMultiplicityBoundsCS 

-	 { $current=$iv_ruleMultiplicityBoundsCS.current; } 

-	 EOF 

-;

-

-// Rule MultiplicityBoundsCS

-ruleMultiplicityBoundsCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); 

-	    }

-		lv_lowerBound_0_0=ruleLOWER		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());

-	        }

-       		set(

-       			$current, 

-       			"lowerBound",

-        		lv_lowerBound_0_0, 

-        		"LOWER");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='..' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); 

-	    }

-		lv_upperBound_2_0=ruleUPPER		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());

-	        }

-       		set(

-       			$current, 

-       			"upperBound",

-        		lv_upperBound_2_0, 

-        		"UPPER");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))?)

-;

-

-

-

-

-

-// Entry rule entryRuleMultiplicityCS

-entryRuleMultiplicityCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMultiplicityCSRule()); }

-	 iv_ruleMultiplicityCS=ruleMultiplicityCS 

-	 { $current=$iv_ruleMultiplicityCS.current; } 

-	 EOF 

-;

-

-// Rule MultiplicityCS

-ruleMultiplicityCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='[' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0());

-    }

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); 

-    }

-    this_MultiplicityBoundsCS_1=ruleMultiplicityBoundsCS

-    { 

-        $current = $this_MultiplicityBoundsCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); 

-    }

-    this_MultiplicityStringCS_2=ruleMultiplicityStringCS

-    { 

-        $current = $this_MultiplicityStringCS_2.current; 

-        afterParserOrEnumRuleCall();

-    }

-)	otherlv_3=']' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleMultiplicityStringCS

-entryRuleMultiplicityStringCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getMultiplicityStringCSRule()); }

-	 iv_ruleMultiplicityStringCS=ruleMultiplicityStringCS 

-	 { $current=$iv_ruleMultiplicityStringCS.current; } 

-	 EOF 

-;

-

-// Rule MultiplicityStringCS

-ruleMultiplicityStringCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-(

-		lv_stringBounds_0_1=	'*' 

-    {

-        newLeafNode(lv_stringBounds_0_1, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_1, null);

-	    }

-

-    |		lv_stringBounds_0_2=	'+' 

-    {

-        newLeafNode(lv_stringBounds_0_2, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_2, null);

-	    }

-

-    |		lv_stringBounds_0_3=	'?' 

-    {

-        newLeafNode(lv_stringBounds_0_3, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2());

-    }

- 

-	    {

-	        if ($current==null) {

-	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());

-	        }

-       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_3, null);

-	    }

-

-)

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRulePathNameCS

-entryRulePathNameCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getPathNameCSRule()); }

-	 iv_rulePathNameCS=rulePathNameCS 

-	 { $current=$iv_rulePathNameCS.current; } 

-	 EOF 

-;

-

-// Rule PathNameCS

-rulePathNameCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); 

-	    }

-		lv_ownedPathElements_0_0=ruleFirstPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_0_0, 

-        		"FirstPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_1='::' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 

-	    }

-		lv_ownedPathElements_2_0=ruleNextPathElementCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedPathElements",

-        		lv_ownedPathElements_2_0, 

-        		"NextPathElementCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)

-;

-

-

-

-

-

-// Entry rule entryRuleFirstPathElementCS

-entryRuleFirstPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getFirstPathElementCSRule()); }

-	 iv_ruleFirstPathElementCS=ruleFirstPathElementCS 

-	 { $current=$iv_ruleFirstPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule FirstPathElementCS

-ruleFirstPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getFirstPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 

-	    }

-		ruleUnrestrictedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleNextPathElementCS

-entryRuleNextPathElementCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNextPathElementCSRule()); }

-	 iv_ruleNextPathElementCS=ruleNextPathElementCS 

-	 { $current=$iv_ruleNextPathElementCS.current; } 

-	 EOF 

-;

-

-// Rule NextPathElementCS

-ruleNextPathElementCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-		  /* */ 

-		}

-		{

-			if ($current==null) {

-	            $current = createModelElement(grammarAccess.getNextPathElementCSRule());

-	        }

-        }

-		{ 

-	        newCompositeNode(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 

-	    }

-		ruleUnreservedName		{ 

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTemplateBindingCS

-entryRuleTemplateBindingCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTemplateBindingCSRule()); }

-	 iv_ruleTemplateBindingCS=ruleTemplateBindingCS 

-	 { $current=$iv_ruleTemplateBindingCS.current; } 

-	 EOF 

-;

-

-// Rule TemplateBindingCS

-ruleTemplateBindingCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='(' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedSubstitutions_1_0=ruleTemplateParameterSubstitutionCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSubstitutions",

-        		lv_ownedSubstitutions_1_0, 

-        		"TemplateParameterSubstitutionCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedSubstitutions_3_0=ruleTemplateParameterSubstitutionCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedSubstitutions",

-        		lv_ownedSubstitutions_3_0, 

-        		"TemplateParameterSubstitutionCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4=')' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTemplateParameterSubstitutionCS

-entryRuleTemplateParameterSubstitutionCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSRule()); }

-	 iv_ruleTemplateParameterSubstitutionCS=ruleTemplateParameterSubstitutionCS 

-	 { $current=$iv_ruleTemplateParameterSubstitutionCS.current; } 

-	 EOF 

-;

-

-// Rule TemplateParameterSubstitutionCS

-ruleTemplateParameterSubstitutionCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); 

-	    }

-		lv_ownedActualParameter_0_0=ruleTypeRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateParameterSubstitutionCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedActualParameter",

-        		lv_ownedActualParameter_0_0, 

-        		"TypeRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTemplateSignatureCS

-entryRuleTemplateSignatureCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTemplateSignatureCSRule()); }

-	 iv_ruleTemplateSignatureCS=ruleTemplateSignatureCS 

-	 { $current=$iv_ruleTemplateSignatureCS.current; } 

-	 EOF 

-;

-

-// Rule TemplateSignatureCS

-ruleTemplateSignatureCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(	otherlv_0='(' 

-    {

-    	newLeafNode(otherlv_0, grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_0()); 

-	    }

-		lv_ownedParameters_1_0=ruleTypeParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_1_0, 

-        		"TypeParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_2=',' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_2_1_0()); 

-	    }

-		lv_ownedParameters_3_0=ruleTypeParameterCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedParameters",

-        		lv_ownedParameters_3_0, 

-        		"TypeParameterCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*	otherlv_4=')' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_3());

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeParameterCS

-entryRuleTypeParameterCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeParameterCSRule()); }

-	 iv_ruleTypeParameterCS=ruleTypeParameterCS 

-	 { $current=$iv_ruleTypeParameterCS.current; } 

-	 EOF 

-;

-

-// Rule TypeParameterCS

-ruleTypeParameterCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 

-	    }

-		lv_name_0_0=ruleUnrestrictedName		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"name",

-        		lv_name_0_0, 

-        		"UnrestrictedName");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)((	otherlv_1='extends' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); 

-	    }

-		lv_ownedExtends_2_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_2_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)(	otherlv_3='&&' 

-    {

-    	newLeafNode(otherlv_3, grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); 

-	    }

-		lv_ownedExtends_4_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		add(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_4_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))*)

-    |(	otherlv_5='super' 

-    {

-    	newLeafNode(otherlv_5, grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); 

-	    }

-		lv_ownedSuper_6_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSuper",

-        		lv_ownedSuper_6_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-;

-

-

-

-

-

-// Entry rule entryRuleTypeRefCS

-entryRuleTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getTypeRefCSRule()); }

-	 iv_ruleTypeRefCS=ruleTypeRefCS 

-	 { $current=$iv_ruleTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule TypeRefCS

-ruleTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); 

-    }

-    this_TypedRefCS_0=ruleTypedRefCS

-    { 

-        $current = $this_TypedRefCS_0.current; 

-        afterParserOrEnumRuleCall();

-    }

-

-    |

-	{ 

-	  /* */ 

-	}

-    { 

-        newCompositeNode(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); 

-    }

-    this_WildcardTypeRefCS_1=ruleWildcardTypeRefCS

-    { 

-        $current = $this_WildcardTypeRefCS_1.current; 

-        afterParserOrEnumRuleCall();

-    }

-)

-;

-

-

-

-

-

-// Entry rule entryRuleWildcardTypeRefCS

-entryRuleWildcardTypeRefCS returns [EObject current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getWildcardTypeRefCSRule()); }

-	 iv_ruleWildcardTypeRefCS=ruleWildcardTypeRefCS 

-	 { $current=$iv_ruleWildcardTypeRefCS.current; } 

-	 EOF 

-;

-

-// Rule WildcardTypeRefCS

-ruleWildcardTypeRefCS returns [EObject current=null] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-((

-	{ 

-	  /* */ 

-	}

-    {

-        $current = forceCreateModelElement(

-            grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0(),

-            $current);

-    }

-)	otherlv_1='?' 

-    {

-    	newLeafNode(otherlv_1, grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1());

-    }

-((	otherlv_2='extends' 

-    {

-    	newLeafNode(otherlv_2, grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); 

-	    }

-		lv_ownedExtends_3_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedExtends",

-        		lv_ownedExtends_3_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-))

-    |(	otherlv_4='super' 

-    {

-    	newLeafNode(otherlv_4, grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0());

-    }

-(

-(

-		{ 

-	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); 

-	    }

-		lv_ownedSuper_5_0=ruleTypedRefCS		{

-	        if ($current==null) {

-	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());

-	        }

-       		set(

-       			$current, 

-       			"ownedSuper",

-        		lv_ownedSuper_5_0, 

-        		"TypedRefCS");

-	        afterParserOrEnumRuleCall();

-	    }

-

-)

-)))?)

-;

-

-

-

-

-

-// Entry rule entryRuleID

-entryRuleID returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getIDRule()); } 

-	 iv_ruleID=ruleID 

-	 { $current=$iv_ruleID.current.getText(); }  

-	 EOF 

-;

-

-// Rule ID

-ruleID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(    this_SIMPLE_ID_0=RULE_SIMPLE_ID    {

-		$current.merge(this_SIMPLE_ID_0);

-    }

-

-    { 

-    newLeafNode(this_SIMPLE_ID_0, grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); 

-    }

-

-    |    this_ESCAPED_ID_1=RULE_ESCAPED_ID    {

-		$current.merge(this_ESCAPED_ID_1);

-    }

-

-    { 

-    newLeafNode(this_ESCAPED_ID_1, grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleLOWER

-entryRuleLOWER returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getLOWERRule()); } 

-	 iv_ruleLOWER=ruleLOWER 

-	 { $current=$iv_ruleLOWER.current.getText(); }  

-	 EOF 

-;

-

-// Rule LOWER

-ruleLOWER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_INT_0=RULE_INT    {

-		$current.merge(this_INT_0);

-    }

-

-    { 

-    newLeafNode(this_INT_0, grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleNUMBER_LITERAL

-entryRuleNUMBER_LITERAL returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getNUMBER_LITERALRule()); } 

-	 iv_ruleNUMBER_LITERAL=ruleNUMBER_LITERAL 

-	 { $current=$iv_ruleNUMBER_LITERAL.current.getText(); }  

-	 EOF 

-;

-

-// Rule NUMBER_LITERAL

-ruleNUMBER_LITERAL returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_INT_0=RULE_INT    {

-		$current.merge(this_INT_0);

-    }

-

-    { 

-    newLeafNode(this_INT_0, grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleStringLiteral

-entryRuleStringLiteral returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getStringLiteralRule()); } 

-	 iv_ruleStringLiteral=ruleStringLiteral 

-	 { $current=$iv_ruleStringLiteral.current.getText(); }  

-	 EOF 

-;

-

-// Rule StringLiteral

-ruleStringLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {

-		$current.merge(this_SINGLE_QUOTED_STRING_0);

-    }

-

-    { 

-    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-// Entry rule entryRuleUPPER

-entryRuleUPPER returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getUPPERRule()); } 

-	 iv_ruleUPPER=ruleUPPER 

-	 { $current=$iv_ruleUPPER.current.getText(); }  

-	 EOF 

-;

-

-// Rule UPPER

-ruleUPPER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-(    this_INT_0=RULE_INT    {

-		$current.merge(this_INT_0);

-    }

-

-    { 

-    newLeafNode(this_INT_0, grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); 

-    }

-

-    |

-	kw='*' 

-    {

-        $current.merge(kw);

-        newLeafNode(kw, grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); 

-    }

-)

-    ;

-

-

-

-

-

-// Entry rule entryRuleURI

-entryRuleURI returns [String current=null] 

-	:

-	{ newCompositeNode(grammarAccess.getURIRule()); } 

-	 iv_ruleURI=ruleURI 

-	 { $current=$iv_ruleURI.current.getText(); }  

-	 EOF 

-;

-

-// Rule URI

-ruleURI returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 

-    @init { enterRule(); 

-    }

-    @after { leaveRule(); }:

-    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {

-		$current.merge(this_SINGLE_QUOTED_STRING_0);

-    }

-

-    { 

-    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 

-    }

-

-    ;

-

-

-

-

-

-fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');

-

-fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');

-

-RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';

-

-RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';

-

-RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';

-

-RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;

-

-RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;

-

-RULE_INT : ('0'..'9')+;

-

-RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';

-

-RULE_SL_COMMENT : '--' ~(('\n'|'\r'))* ('\r'? '\n')?;

-

-RULE_WS : (' '|'\t'|'\r'|'\n')+;

-

-RULE_ANY_OTHER : .;

-

-

+/*
+ * generated by Xtext
+ */
+grammar InternalOCLstdlib;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.ocl.xtext.oclstdlib.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.ocl.xtext.oclstdlib.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.ocl.xtext.oclstdlib.services.OCLstdlibGrammarAccess;
+
+}
+
+@parser::members {
+
+/*
+  This grammar contains a lot of empty actions to work around a bug in ANTLR.
+  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.
+*/
+ 
+ 	private OCLstdlibGrammarAccess grammarAccess;
+ 	
+    public InternalOCLstdlibParser(TokenStream input, OCLstdlibGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "Library";	
+   	}
+   	
+   	@Override
+   	protected OCLstdlibGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleLibrary
+entryRuleLibrary returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLibraryRule()); }
+	 iv_ruleLibrary=ruleLibrary 
+	 { $current=$iv_ruleLibrary.current; } 
+	 EOF 
+;
+
+// Rule Library
+ruleLibrary returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibraryAccess().getOwnedLibrariesLibraryCSParserRuleCall_0_0_0()); 
+	    }
+		lv_ownedLibraries_0_0=ruleLibraryCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibraryRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedLibraries",
+        		lv_ownedLibraries_0_0, 
+        		"LibraryCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1=';' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getLibraryAccess().getSemicolonKeyword_0_1());
+    }
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibraryAccess().getOwnedPackagesLibPackageCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedPackages_2_0=ruleLibPackageCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibraryRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPackages",
+        		lv_ownedPackages_2_0, 
+        		"LibPackageCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)
+;
+
+
+
+
+
+// Entry rule entryRuleIdentifier
+entryRuleIdentifier returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIdentifierRule()); } 
+	 iv_ruleIdentifier=ruleIdentifier 
+	 { $current=$iv_ruleIdentifier.current.getText(); }  
+	 EOF 
+;
+
+// Rule Identifier
+ruleIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getIdentifierAccess().getIDParserRuleCall_0()); 
+    }
+    this_ID_0=ruleID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getIdentifierAccess().getRestrictedKeywordsParserRuleCall_1()); 
+    }
+    this_RestrictedKeywords_1=ruleRestrictedKeywords    {
+		$current.merge(this_RestrictedKeywords_1);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleRestrictedKeywords
+entryRuleRestrictedKeywords returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRestrictedKeywordsRule()); } 
+	 iv_ruleRestrictedKeywords=ruleRestrictedKeywords 
+	 { $current=$iv_ruleRestrictedKeywords.current.getText(); }  
+	 EOF 
+;
+
+// Rule RestrictedKeywords
+ruleRestrictedKeywords returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='annotation' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getAnnotationKeyword_0()); 
+    }
+
+    |
+	kw='conformsTo' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getConformsToKeyword_1()); 
+    }
+
+    |
+	kw='documentation' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getDocumentationKeyword_2()); 
+    }
+
+    |
+	kw='extends' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getExtendsKeyword_3()); 
+    }
+
+    |
+	kw='import' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getImportKeyword_4()); 
+    }
+
+    |
+	kw='inv' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getInvKeyword_5()); 
+    }
+
+    |
+	kw='invalidating' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getInvalidatingKeyword_6()); 
+    }
+
+    |
+	kw='iteration' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getIterationKeyword_7()); 
+    }
+
+    |
+	kw='left' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getLeftKeyword_8()); 
+    }
+
+    |
+	kw='library' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getLibraryKeyword_9()); 
+    }
+
+    |
+	kw='operation' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getOperationKeyword_10()); 
+    }
+
+    |
+	kw='package' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getPackageKeyword_11()); 
+    }
+
+    |
+	kw='post' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getPostKeyword_12()); 
+    }
+
+    |
+	kw='pre' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getPreKeyword_13()); 
+    }
+
+    |
+	kw='precedence' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getPrecedenceKeyword_14()); 
+    }
+
+    |
+	kw='property' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getPropertyKeyword_15()); 
+    }
+
+    |
+	kw='right' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getRightKeyword_16()); 
+    }
+
+    |
+	kw='static' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getStaticKeyword_17()); 
+    }
+
+    |
+	kw='super' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getSuperKeyword_18()); 
+    }
+
+    |
+	kw='type' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getTypeKeyword_19()); 
+    }
+
+    |
+	kw='validating' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getRestrictedKeywordsAccess().getValidatingKeyword_20()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleName
+entryRuleName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNameRule()); } 
+	 iv_ruleName=ruleName 
+	 { $current=$iv_ruleName.current.getText(); }  
+	 EOF 
+;
+
+// Rule Name
+ruleName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getNameAccess().getIdentifierParserRuleCall_0()); 
+    }
+    this_Identifier_0=ruleIdentifier    {
+		$current.merge(this_Identifier_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |    this_DOUBLE_QUOTED_STRING_1=RULE_DOUBLE_QUOTED_STRING    {
+		$current.merge(this_DOUBLE_QUOTED_STRING_1);
+    }
+
+    { 
+    newLeafNode(this_DOUBLE_QUOTED_STRING_1, grammarAccess.getNameAccess().getDOUBLE_QUOTED_STRINGTerminalRuleCall_1()); 
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getNameAccess().getEssentialOCLReservedKeywordParserRuleCall_2()); 
+    }
+    this_EssentialOCLReservedKeyword_2=ruleEssentialOCLReservedKeyword    {
+		$current.merge(this_EssentialOCLReservedKeyword_2);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getNameAccess().getPrimitiveTypeIdentifierParserRuleCall_3()); 
+    }
+    this_PrimitiveTypeIdentifier_3=rulePrimitiveTypeIdentifier    {
+		$current.merge(this_PrimitiveTypeIdentifier_3);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getNameAccess().getCollectionTypeIdentifierParserRuleCall_4()); 
+    }
+    this_CollectionTypeIdentifier_4=ruleCollectionTypeIdentifier    {
+		$current.merge(this_CollectionTypeIdentifier_4);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleAnyName
+entryRuleAnyName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAnyNameRule()); } 
+	 iv_ruleAnyName=ruleAnyName 
+	 { $current=$iv_ruleAnyName.current.getText(); }  
+	 EOF 
+;
+
+// Rule AnyName
+ruleAnyName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getAnyNameAccess().getNameParserRuleCall_0()); 
+    }
+    this_Name_0=ruleName    {
+		$current.merge(this_Name_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	kw='Lambda' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getAnyNameAccess().getLambdaKeyword_1()); 
+    }
+
+    |
+	kw='Tuple' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getAnyNameAccess().getTupleKeyword_2()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleLibPathNameCS
+entryRuleLibPathNameCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLibPathNameCSRule()); }
+	 iv_ruleLibPathNameCS=ruleLibPathNameCS 
+	 { $current=$iv_ruleLibPathNameCS.current; } 
+	 EOF 
+;
+
+// Rule LibPathNameCS
+ruleLibPathNameCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsLibPathElementCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathElements_0_0=ruleLibPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_0_0, 
+        		"LibPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='::' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getLibPathNameCSAccess().getColonColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibPathNameCSAccess().getOwnedPathElementsLibPathElementCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedPathElements_2_0=ruleLibPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_2_0, 
+        		"LibPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleLibPathElementCS
+entryRuleLibPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLibPathElementCSRule()); }
+	 iv_ruleLibPathElementCS=ruleLibPathElementCS 
+	 { $current=$iv_ruleLibPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule LibPathElementCS
+ruleLibPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getLibPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 
+	    }
+		ruleName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleAccumulatorCS
+entryRuleAccumulatorCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAccumulatorCSRule()); }
+	 iv_ruleAccumulatorCS=ruleAccumulatorCS 
+	 { $current=$iv_ruleAccumulatorCS.current; } 
+	 EOF 
+;
+
+// Rule AccumulatorCS
+ruleAccumulatorCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAccumulatorCSAccess().getNameIdentifierParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAccumulatorCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"Identifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getAccumulatorCSAccess().getColonKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAccumulatorCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypedMultiplicityRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAccumulatorCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypedMultiplicityRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleAnnotationCS
+entryRuleAnnotationCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAnnotationCSRule()); }
+	 iv_ruleAnnotationCS=ruleAnnotationCS 
+	 { $current=$iv_ruleAnnotationCS.current; } 
+	 EOF 
+;
+
+// Rule AnnotationCS
+ruleAnnotationCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='annotation' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getAnnotationCSAccess().getAnnotationKeyword_0());
+    }
+(
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getNameIdentifierParserRuleCall_1_0_0()); 
+	    }
+		lv_name_1_1=ruleIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_1, 
+        		"Identifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		lv_name_1_2=RULE_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_name_1_2, grammarAccess.getAnnotationCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_1_0_1()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAnnotationCSRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_2, 
+        		"SINGLE_QUOTED_STRING");
+	    }
+
+)
+
+)
+)(	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getAnnotationCSAccess().getLeftParenthesisKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedDetails_3_0=ruleDetailCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDetails",
+        		lv_ownedDetails_3_0, 
+        		"DetailCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getAnnotationCSAccess().getCommaKeyword_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedDetailsDetailCSParserRuleCall_2_2_1_0()); 
+	    }
+		lv_ownedDetails_5_0=ruleDetailCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDetails",
+        		lv_ownedDetails_5_0, 
+        		"DetailCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_6=')' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getAnnotationCSAccess().getRightParenthesisKeyword_2_3());
+    }
+)?((	otherlv_7='{' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getAnnotationCSAccess().getLeftCurlyBracketKeyword_3_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_3_0_1_0()); 
+	    }
+		lv_ownedAnnotations_8_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_8_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_9='}' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getAnnotationCSAccess().getRightCurlyBracketKeyword_3_0_2());
+    }
+)
+    |	otherlv_10=';' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getAnnotationCSAccess().getSemicolonKeyword_3_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleAnnotationElementCS
+entryRuleAnnotationElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAnnotationElementCSRule()); }
+	 iv_ruleAnnotationElementCS=ruleAnnotationElementCS 
+	 { $current=$iv_ruleAnnotationElementCS.current; } 
+	 EOF 
+;
+
+// Rule AnnotationElementCS
+ruleAnnotationElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getAnnotationElementCSAccess().getAnnotationCSParserRuleCall_0()); 
+    }
+    this_AnnotationCS_0=ruleAnnotationCS
+    { 
+        $current = $this_AnnotationCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getAnnotationElementCSAccess().getDocumentationCSParserRuleCall_1()); 
+    }
+    this_DocumentationCS_1=ruleDocumentationCS
+    { 
+        $current = $this_DocumentationCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleLibClassCS
+entryRuleLibClassCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLibClassCSRule()); }
+	 iv_ruleLibClassCS=ruleLibClassCS 
+	 { $current=$iv_ruleLibClassCS.current; } 
+	 EOF 
+;
+
+// Rule LibClassCS
+ruleLibClassCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='type' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLibClassCSAccess().getTypeKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibClassCSAccess().getNameAnyNameParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleAnyName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"AnyName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibClassCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedSignature_2_0=ruleTemplateSignatureCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSignature",
+        		lv_ownedSignature_2_0, 
+        		"TemplateSignatureCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_3=':' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getLibClassCSAccess().getColonKeyword_3_0());
+    }
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibClassCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getLibClassCSAccess().getMetaclassNameMetaclassNameCSCrossReference_3_1_0()); 
+	    }
+		ruleAnyName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_5='conformsTo' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getLibClassCSAccess().getConformsToKeyword_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_1_0()); 
+	    }
+		lv_ownedSuperTypes_6_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSuperTypes",
+        		lv_ownedSuperTypes_6_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_7=',' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getLibClassCSAccess().getCommaKeyword_4_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibClassCSAccess().getOwnedSuperTypesTypedRefCSParserRuleCall_4_2_1_0()); 
+	    }
+		lv_ownedSuperTypes_8_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSuperTypes",
+        		lv_ownedSuperTypes_8_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_9='{' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getLibClassCSAccess().getLeftCurlyBracketKeyword_5());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibClassCSAccess().getOwnedOperationsOperationCSParserRuleCall_6_0_0()); 
+	    }
+		lv_ownedOperations_10_0=ruleOperationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedOperations",
+        		lv_ownedOperations_10_0, 
+        		"OperationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibClassCSAccess().getOwnedPropertiesLibPropertyCSParserRuleCall_6_1_0()); 
+	    }
+		lv_ownedProperties_11_0=ruleLibPropertyCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedProperties",
+        		lv_ownedProperties_11_0, 
+        		"LibPropertyCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibClassCSAccess().getOwnedConstraintsInvCSParserRuleCall_6_2_0()); 
+	    }
+		lv_ownedConstraints_12_0=ruleInvCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedConstraints",
+        		lv_ownedConstraints_12_0, 
+        		"InvCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibClassCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_3_0()); 
+	    }
+		lv_ownedAnnotations_13_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibClassCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_13_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_14='}' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getLibClassCSAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleClassCS
+entryRuleClassCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getClassCSRule()); }
+	 iv_ruleClassCS=ruleClassCS 
+	 { $current=$iv_ruleClassCS.current; } 
+	 EOF 
+;
+
+// Rule ClassCS
+ruleClassCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getClassCSAccess().getLibClassCSParserRuleCall()); 
+    }
+    this_LibClassCS_0=ruleLibClassCS
+    { 
+        $current = $this_LibClassCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleDetailCS
+entryRuleDetailCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDetailCSRule()); }
+	 iv_ruleDetailCS=ruleDetailCS 
+	 { $current=$iv_ruleDetailCS.current; } 
+	 EOF 
+;
+
+// Rule DetailCS
+ruleDetailCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDetailCSAccess().getNameNameParserRuleCall_0_0_0()); 
+	    }
+		lv_name_0_1=ruleName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDetailCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_1, 
+        		"Name");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		lv_name_0_2=RULE_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_name_0_2, grammarAccess.getDetailCSAccess().getNameSINGLE_QUOTED_STRINGTerminalRuleCall_0_0_1()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDetailCSRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_0_2, 
+        		"SINGLE_QUOTED_STRING");
+	    }
+
+)
+
+)
+)	otherlv_1='=' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDetailCSAccess().getEqualsSignKeyword_1());
+    }
+(
+(
+(
+		lv_values_2_1=RULE_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_values_2_1, grammarAccess.getDetailCSAccess().getValuesSINGLE_QUOTED_STRINGTerminalRuleCall_2_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDetailCSRule());
+	        }
+       		addWithLastConsumed(
+       			$current, 
+       			"values",
+        		lv_values_2_1, 
+        		"SINGLE_QUOTED_STRING");
+	    }
+
+    |		lv_values_2_2=RULE_ML_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_values_2_2, grammarAccess.getDetailCSAccess().getValuesML_SINGLE_QUOTED_STRINGTerminalRuleCall_2_0_1()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDetailCSRule());
+	        }
+       		addWithLastConsumed(
+       			$current, 
+       			"values",
+        		lv_values_2_2, 
+        		"ML_SINGLE_QUOTED_STRING");
+	    }
+
+)
+
+)
+)*)
+;
+
+
+
+
+
+// Entry rule entryRuleDocumentationCS
+entryRuleDocumentationCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDocumentationCSRule()); }
+	 iv_ruleDocumentationCS=ruleDocumentationCS 
+	 { $current=$iv_ruleDocumentationCS.current; } 
+	 EOF 
+;
+
+// Rule DocumentationCS
+ruleDocumentationCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDocumentationCSAccess().getDocumentationCSAction_0(),
+            $current);
+    }
+)	otherlv_1='documentation' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDocumentationCSAccess().getDocumentationKeyword_1());
+    }
+(
+(
+		lv_value_2_0=RULE_SINGLE_QUOTED_STRING
+		{
+			newLeafNode(lv_value_2_0, grammarAccess.getDocumentationCSAccess().getValueSINGLE_QUOTED_STRINGTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDocumentationCSRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_2_0, 
+        		"SINGLE_QUOTED_STRING");
+	    }
+
+)
+)?(	otherlv_3='(' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDocumentationCSAccess().getLeftParenthesisKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_1_0()); 
+	    }
+		lv_ownedDetails_4_0=ruleDetailCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDocumentationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDetails",
+        		lv_ownedDetails_4_0, 
+        		"DetailCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5=',' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDocumentationCSAccess().getCommaKeyword_3_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDocumentationCSAccess().getOwnedDetailsDetailCSParserRuleCall_3_2_1_0()); 
+	    }
+		lv_ownedDetails_6_0=ruleDetailCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDocumentationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedDetails",
+        		lv_ownedDetails_6_0, 
+        		"DetailCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_7=')' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDocumentationCSAccess().getRightParenthesisKeyword_3_3());
+    }
+)?	otherlv_8=';' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDocumentationCSAccess().getSemicolonKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleInvCS
+entryRuleInvCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInvCSRule()); }
+	 iv_ruleInvCS=ruleInvCS 
+	 { $current=$iv_ruleInvCS.current; } 
+	 EOF 
+;
+
+// Rule InvCS
+ruleInvCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_stereotype_0_0=	'inv' 
+    {
+        newLeafNode(lv_stereotype_0_0, grammarAccess.getInvCSAccess().getStereotypeInvKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getInvCSRule());
+	        }
+       		setWithLastConsumed($current, "stereotype", lv_stereotype_0_0, "inv");
+	    }
+
+)
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInvCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); 
+	    }
+		lv_name_1_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInvCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getInvCSAccess().getLeftParenthesisKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInvCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); 
+	    }
+		lv_ownedMessageSpecification_3_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInvCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMessageSpecification",
+        		lv_ownedMessageSpecification_3_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getInvCSAccess().getRightParenthesisKeyword_1_1_2());
+    }
+)?)?	otherlv_5=':' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getInvCSAccess().getColonKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInvCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedSpecification_6_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInvCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSpecification",
+        		lv_ownedSpecification_6_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7=';' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getInvCSAccess().getSemicolonKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleLibCoercionCS
+entryRuleLibCoercionCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLibCoercionCSRule()); }
+	 iv_ruleLibCoercionCS=ruleLibCoercionCS 
+	 { $current=$iv_ruleLibCoercionCS.current; } 
+	 EOF 
+;
+
+// Rule LibCoercionCS
+ruleLibCoercionCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='coercion' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLibCoercionCSAccess().getCoercionKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibCoercionCSAccess().getNameNameParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibCoercionCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"Name");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getLibCoercionCSAccess().getLeftParenthesisKeyword_2());
+    }
+	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getLibCoercionCSAccess().getRightParenthesisKeyword_3());
+    }
+	otherlv_4=':' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getLibCoercionCSAccess().getColonKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibCoercionCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_5_0()); 
+	    }
+		lv_ownedType_5_0=ruleTypedMultiplicityRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibCoercionCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_5_0, 
+        		"TypedMultiplicityRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6='=>' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getLibCoercionCSAccess().getEqualsSignGreaterThanSignKeyword_6_0());
+    }
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibCoercionCSRule());
+	        }
+        }
+	otherlv_7=RULE_SINGLE_QUOTED_STRING
+	{
+		newLeafNode(otherlv_7, grammarAccess.getLibCoercionCSAccess().getImplementationJavaClassCSCrossReference_6_1_0()); 
+	}
+
+)
+))?((	otherlv_8='{' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getLibCoercionCSAccess().getLeftCurlyBracketKeyword_7_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibCoercionCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_7_0_1_0_0()); 
+	    }
+		lv_ownedAnnotations_9_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibCoercionCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_9_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibCoercionCSAccess().getOwnedPreconditionsPostCSParserRuleCall_7_0_1_1_0()); 
+	    }
+		lv_ownedPreconditions_10_0=rulePostCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibCoercionCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPreconditions",
+        		lv_ownedPreconditions_10_0, 
+        		"PostCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibCoercionCSAccess().getOwnedPostconditionsPreCSParserRuleCall_7_0_1_2_0()); 
+	    }
+		lv_ownedPostconditions_11_0=rulePreCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibCoercionCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPostconditions",
+        		lv_ownedPostconditions_11_0, 
+        		"PreCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_12='}' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getLibCoercionCSAccess().getRightCurlyBracketKeyword_7_0_2());
+    }
+)
+    |	otherlv_13=';' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getLibCoercionCSAccess().getSemicolonKeyword_7_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLibIterationCS
+entryRuleLibIterationCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLibIterationCSRule()); }
+	 iv_ruleLibIterationCS=ruleLibIterationCS 
+	 { $current=$iv_ruleLibIterationCS.current; } 
+	 EOF 
+;
+
+// Rule LibIterationCS
+ruleLibIterationCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='iteration' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLibIterationCSAccess().getIterationKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getNameNameParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"Name");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedSignature_2_0=ruleTemplateSignatureCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSignature",
+        		lv_ownedSignature_2_0, 
+        		"TemplateSignatureCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_3='(' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getLibIterationCSAccess().getLeftParenthesisKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsIteratorCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedIterators_4_0=ruleIteratorCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedIterators",
+        		lv_ownedIterators_4_0, 
+        		"IteratorCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5=',' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getLibIterationCSAccess().getCommaKeyword_5_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedIteratorsIteratorCSParserRuleCall_5_1_0()); 
+	    }
+		lv_ownedIterators_6_0=ruleIteratorCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedIterators",
+        		lv_ownedIterators_6_0, 
+        		"IteratorCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*(	otherlv_7=';' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getLibIterationCSAccess().getSemicolonKeyword_6_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAccumulatorCSParserRuleCall_6_1_0()); 
+	    }
+		lv_ownedAccumulators_8_0=ruleAccumulatorCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAccumulators",
+        		lv_ownedAccumulators_8_0, 
+        		"AccumulatorCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_9=',' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getLibIterationCSAccess().getCommaKeyword_6_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedAccumulatorsAccumulatorCSParserRuleCall_6_2_1_0()); 
+	    }
+		lv_ownedAccumulators_10_0=ruleAccumulatorCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAccumulators",
+        		lv_ownedAccumulators_10_0, 
+        		"AccumulatorCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?(	otherlv_11='|' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getLibIterationCSAccess().getVerticalLineKeyword_7_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedParametersParameterCSParserRuleCall_7_1_0()); 
+	    }
+		lv_ownedParameters_12_0=ruleParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_12_0, 
+        		"ParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_13=',' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getLibIterationCSAccess().getCommaKeyword_7_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedParametersParameterCSParserRuleCall_7_2_1_0()); 
+	    }
+		lv_ownedParameters_14_0=ruleParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_14_0, 
+        		"ParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_15=')' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getLibIterationCSAccess().getRightParenthesisKeyword_8());
+    }
+	otherlv_16=':' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getLibIterationCSAccess().getColonKeyword_9());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_10_0()); 
+	    }
+		lv_ownedType_17_0=ruleTypedMultiplicityRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_17_0, 
+        		"TypedMultiplicityRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_isInvalidating_18_0=	'invalidating' 
+    {
+        newLeafNode(lv_isInvalidating_18_0, grammarAccess.getLibIterationCSAccess().getIsInvalidatingInvalidatingKeyword_11_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibIterationCSRule());
+	        }
+       		setWithLastConsumed($current, "isInvalidating", true, "invalidating");
+	    }
+
+)
+)?(
+(
+		lv_isValidating_19_0=	'validating' 
+    {
+        newLeafNode(lv_isValidating_19_0, grammarAccess.getLibIterationCSAccess().getIsValidatingValidatingKeyword_12_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibIterationCSRule());
+	        }
+       		setWithLastConsumed($current, "isValidating", true, "validating");
+	    }
+
+)
+)?(	otherlv_20='=>' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getLibIterationCSAccess().getEqualsSignGreaterThanSignKeyword_13_0());
+    }
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibIterationCSRule());
+	        }
+        }
+	otherlv_21=RULE_SINGLE_QUOTED_STRING
+	{
+		newLeafNode(otherlv_21, grammarAccess.getLibIterationCSAccess().getImplementationJavaClassCSCrossReference_13_1_0()); 
+	}
+
+)
+))?((	otherlv_22='{' 
+    {
+    	newLeafNode(otherlv_22, grammarAccess.getLibIterationCSAccess().getLeftCurlyBracketKeyword_14_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_14_0_1_0_0()); 
+	    }
+		lv_ownedAnnotations_23_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_23_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedPreconditionsPostCSParserRuleCall_14_0_1_1_0()); 
+	    }
+		lv_ownedPreconditions_24_0=rulePostCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPreconditions",
+        		lv_ownedPreconditions_24_0, 
+        		"PostCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibIterationCSAccess().getOwnedPostconditionsPreCSParserRuleCall_14_0_1_2_0()); 
+	    }
+		lv_ownedPostconditions_25_0=rulePreCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibIterationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPostconditions",
+        		lv_ownedPostconditions_25_0, 
+        		"PreCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_26='}' 
+    {
+    	newLeafNode(otherlv_26, grammarAccess.getLibIterationCSAccess().getRightCurlyBracketKeyword_14_0_2());
+    }
+)
+    |	otherlv_27=';' 
+    {
+    	newLeafNode(otherlv_27, grammarAccess.getLibIterationCSAccess().getSemicolonKeyword_14_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleIteratorCS
+entryRuleIteratorCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIteratorCSRule()); }
+	 iv_ruleIteratorCS=ruleIteratorCS 
+	 { $current=$iv_ruleIteratorCS.current; } 
+	 EOF 
+;
+
+// Rule IteratorCS
+ruleIteratorCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIteratorCSAccess().getNameIdentifierParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIteratorCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"Identifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getIteratorCSAccess().getColonKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIteratorCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypedMultiplicityRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIteratorCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypedMultiplicityRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLambdaTypeCS
+entryRuleLambdaTypeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLambdaTypeCSRule()); }
+	 iv_ruleLambdaTypeCS=ruleLambdaTypeCS 
+	 { $current=$iv_ruleLambdaTypeCS.current; } 
+	 EOF 
+;
+
+// Rule LambdaTypeCS
+ruleLambdaTypeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_name_0_0=	'Lambda' 
+    {
+        newLeafNode(lv_name_0_0, grammarAccess.getLambdaTypeCSAccess().getNameLambdaKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLambdaTypeCSRule());
+	        }
+       		setWithLastConsumed($current, "name", lv_name_0_0, "Lambda");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLambdaTypeCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedSignature_1_0=ruleTemplateSignatureCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLambdaTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSignature",
+        		lv_ownedSignature_1_0, 
+        		"TemplateSignatureCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLambdaTypeCSAccess().getOwnedContextTypeLambdaContextTypeRefCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedContextType_2_0=ruleLambdaContextTypeRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLambdaTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedContextType",
+        		lv_ownedContextType_2_0, 
+        		"LambdaContextTypeRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='(' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getLambdaTypeCSAccess().getLeftParenthesisKeyword_3());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesTypedMultiplicityRefCSParserRuleCall_4_0_0()); 
+	    }
+		lv_ownedParameterTypes_4_0=ruleTypedMultiplicityRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLambdaTypeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameterTypes",
+        		lv_ownedParameterTypes_4_0, 
+        		"TypedMultiplicityRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5=',' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getLambdaTypeCSAccess().getCommaKeyword_4_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLambdaTypeCSAccess().getOwnedParameterTypesTypedMultiplicityRefCSParserRuleCall_4_1_1_0()); 
+	    }
+		lv_ownedParameterTypes_6_0=ruleTypedMultiplicityRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLambdaTypeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameterTypes",
+        		lv_ownedParameterTypes_6_0, 
+        		"TypedMultiplicityRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_7=')' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getLambdaTypeCSAccess().getRightParenthesisKeyword_5());
+    }
+	otherlv_8=':' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getLambdaTypeCSAccess().getColonKeyword_6());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLambdaTypeCSAccess().getOwnedResultTypeTypedRefCSParserRuleCall_7_0()); 
+	    }
+		lv_ownedResultType_9_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLambdaTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedResultType",
+        		lv_ownedResultType_9_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLambdaContextTypeRefCS
+entryRuleLambdaContextTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLambdaContextTypeRefCSRule()); }
+	 iv_ruleLambdaContextTypeRefCS=ruleLambdaContextTypeRefCS 
+	 { $current=$iv_ruleLambdaContextTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule LambdaContextTypeRefCS
+ruleLambdaContextTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLambdaContextTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_0()); 
+	    }
+		lv_ownedPathName_0_0=ruleLibPathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLambdaContextTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_0_0, 
+        		"LibPathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleLibraryCS
+entryRuleLibraryCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLibraryCSRule()); }
+	 iv_ruleLibraryCS=ruleLibraryCS 
+	 { $current=$iv_ruleLibraryCS.current; } 
+	 EOF 
+;
+
+// Rule LibraryCS
+ruleLibraryCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='import' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLibraryCSAccess().getImportKeyword_0());
+    }
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibraryCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getLibraryCSAccess().getReferredPackagePackageCrossReference_1_0()); 
+	    }
+		ruleURI		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleOperationCS
+entryRuleOperationCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOperationCSRule()); }
+	 iv_ruleOperationCS=ruleOperationCS 
+	 { $current=$iv_ruleOperationCS.current; } 
+	 EOF 
+;
+
+// Rule OperationCS
+ruleOperationCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getOperationCSAccess().getLibCoercionCSParserRuleCall_0()); 
+    }
+    this_LibCoercionCS_0=ruleLibCoercionCS
+    { 
+        $current = $this_LibCoercionCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getOperationCSAccess().getLibIterationCSParserRuleCall_1()); 
+    }
+    this_LibIterationCS_1=ruleLibIterationCS
+    { 
+        $current = $this_LibIterationCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getOperationCSAccess().getLibOperationCSParserRuleCall_2()); 
+    }
+    this_LibOperationCS_2=ruleLibOperationCS
+    { 
+        $current = $this_LibOperationCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleLibOperationCS
+entryRuleLibOperationCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLibOperationCSRule()); }
+	 iv_ruleLibOperationCS=ruleLibOperationCS 
+	 { $current=$iv_ruleLibOperationCS.current; } 
+	 EOF 
+;
+
+// Rule LibOperationCS
+ruleLibOperationCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_isStatic_0_0=	'static' 
+    {
+        newLeafNode(lv_isStatic_0_0, grammarAccess.getLibOperationCSAccess().getIsStaticStaticKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibOperationCSRule());
+	        }
+       		setWithLastConsumed($current, "isStatic", true, "static");
+	    }
+
+)
+)?	otherlv_1='operation' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getLibOperationCSAccess().getOperationKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getNameNameParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"Name");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedSignatureTemplateSignatureCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedSignature_3_0=ruleTemplateSignatureCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSignature",
+        		lv_ownedSignature_3_0, 
+        		"TemplateSignatureCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_4='(' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getLibOperationCSAccess().getLeftParenthesisKeyword_4());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_0_0()); 
+	    }
+		lv_ownedParameters_5_0=ruleParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_5_0, 
+        		"ParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6=',' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getLibOperationCSAccess().getCommaKeyword_5_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedParametersParameterCSParserRuleCall_5_1_1_0()); 
+	    }
+		lv_ownedParameters_7_0=ruleParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_7_0, 
+        		"ParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_8=')' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getLibOperationCSAccess().getRightParenthesisKeyword_6());
+    }
+	otherlv_9=':' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getLibOperationCSAccess().getColonKeyword_7());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_8_0()); 
+	    }
+		lv_ownedType_10_0=ruleTypedMultiplicityRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_10_0, 
+        		"TypedMultiplicityRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_isValidating_11_0=	'validating' 
+    {
+        newLeafNode(lv_isValidating_11_0, grammarAccess.getLibOperationCSAccess().getIsValidatingValidatingKeyword_9_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibOperationCSRule());
+	        }
+       		setWithLastConsumed($current, "isValidating", true, "validating");
+	    }
+
+)
+)?(
+(
+		lv_isInvalidating_12_0=	'invalidating' 
+    {
+        newLeafNode(lv_isInvalidating_12_0, grammarAccess.getLibOperationCSAccess().getIsInvalidatingInvalidatingKeyword_10_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibOperationCSRule());
+	        }
+       		setWithLastConsumed($current, "isInvalidating", true, "invalidating");
+	    }
+
+)
+)?(	otherlv_13='precedence' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getLibOperationCSAccess().getPrecedenceKeyword_11_0());
+    }
+	otherlv_14='=' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getLibOperationCSAccess().getEqualsSignKeyword_11_1());
+    }
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibOperationCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getPrecedencePrecedenceCrossReference_11_2_0()); 
+	    }
+		ruleName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_16='=>' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getLibOperationCSAccess().getEqualsSignGreaterThanSignKeyword_12_0());
+    }
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibOperationCSRule());
+	        }
+        }
+	otherlv_17=RULE_SINGLE_QUOTED_STRING
+	{
+		newLeafNode(otherlv_17, grammarAccess.getLibOperationCSAccess().getImplementationJavaClassCSCrossReference_12_1_0()); 
+	}
+
+)
+))?((	otherlv_18='{' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getLibOperationCSAccess().getLeftCurlyBracketKeyword_13_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_13_0_1_0_0()); 
+	    }
+		lv_ownedAnnotations_19_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_19_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(	otherlv_20='body' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getLibOperationCSAccess().getBodyKeyword_13_0_1_1_0());
+    }
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getLibOperationCSAccess().getUnrestrictedNameParserRuleCall_13_0_1_1_1()); 
+    }
+ruleUnrestrictedName
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)?	otherlv_22=':' 
+    {
+    	newLeafNode(otherlv_22, grammarAccess.getLibOperationCSAccess().getColonKeyword_13_0_1_1_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedBodyExpressionsSpecificationCSParserRuleCall_13_0_1_1_3_0()); 
+	    }
+		lv_ownedBodyExpressions_23_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedBodyExpressions",
+        		lv_ownedBodyExpressions_23_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_24=';' 
+    {
+    	newLeafNode(otherlv_24, grammarAccess.getLibOperationCSAccess().getSemicolonKeyword_13_0_1_1_4());
+    }
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedPostconditionsPostCSParserRuleCall_13_0_1_2_0()); 
+	    }
+		lv_ownedPostconditions_25_0=rulePostCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPostconditions",
+        		lv_ownedPostconditions_25_0, 
+        		"PostCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibOperationCSAccess().getOwnedPreconditionsPreCSParserRuleCall_13_0_1_3_0()); 
+	    }
+		lv_ownedPreconditions_26_0=rulePreCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibOperationCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPreconditions",
+        		lv_ownedPreconditions_26_0, 
+        		"PreCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_27='}' 
+    {
+    	newLeafNode(otherlv_27, grammarAccess.getLibOperationCSAccess().getRightCurlyBracketKeyword_13_0_2());
+    }
+)
+    |	otherlv_28=';' 
+    {
+    	newLeafNode(otherlv_28, grammarAccess.getLibOperationCSAccess().getSemicolonKeyword_13_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLibPackageCS
+entryRuleLibPackageCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLibPackageCSRule()); }
+	 iv_ruleLibPackageCS=ruleLibPackageCS 
+	 { $current=$iv_ruleLibPackageCS.current; } 
+	 EOF 
+;
+
+// Rule LibPackageCS
+ruleLibPackageCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='library' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLibPackageCSAccess().getLibraryKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibPackageCSAccess().getNameNameParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibPackageCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"Name");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getLibPackageCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibPackageCSAccess().getNsPrefixIdentifierParserRuleCall_2_1_0()); 
+	    }
+		lv_nsPrefix_3_0=ruleIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibPackageCSRule());
+	        }
+       		set(
+       			$current, 
+       			"nsPrefix",
+        		lv_nsPrefix_3_0, 
+        		"Identifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getLibPackageCSAccess().getEqualsSignKeyword_2_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibPackageCSAccess().getNsURIURIParserRuleCall_2_3_0()); 
+	    }
+		lv_nsURI_5_0=ruleURI		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibPackageCSRule());
+	        }
+       		set(
+       			$current, 
+       			"nsURI",
+        		lv_nsURI_5_0, 
+        		"URI");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_6='{' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getLibPackageCSAccess().getLeftCurlyBracketKeyword_3());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_0()); 
+	    }
+		lv_ownedPackages_7_0=rulePackageCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibPackageCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPackages",
+        		lv_ownedPackages_7_0, 
+        		"PackageCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(	otherlv_8='precedence' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getLibPackageCSAccess().getPrecedenceKeyword_4_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibPackageCSAccess().getOwnedPrecedencesPrecedenceCSParserRuleCall_4_1_1_0()); 
+	    }
+		lv_ownedPrecedences_9_0=rulePrecedenceCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibPackageCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPrecedences",
+        		lv_ownedPrecedences_9_0, 
+        		"PrecedenceCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+	otherlv_10=';' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getLibPackageCSAccess().getSemicolonKeyword_4_1_2());
+    }
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_2_0()); 
+	    }
+		lv_ownedClasses_11_0=ruleClassCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibPackageCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedClasses",
+        		lv_ownedClasses_11_0, 
+        		"ClassCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_3_0()); 
+	    }
+		lv_ownedAnnotations_12_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibPackageCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_12_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_13='}' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getLibPackageCSAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePackageCS
+entryRulePackageCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPackageCSRule()); }
+	 iv_rulePackageCS=rulePackageCS 
+	 { $current=$iv_rulePackageCS.current; } 
+	 EOF 
+;
+
+// Rule PackageCS
+rulePackageCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='package' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPackageCSAccess().getPackageKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageCSAccess().getNameNameParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"Name");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPackageCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageCSAccess().getNsPrefixIdentifierParserRuleCall_2_1_0()); 
+	    }
+		lv_nsPrefix_3_0=ruleIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());
+	        }
+       		set(
+       			$current, 
+       			"nsPrefix",
+        		lv_nsPrefix_3_0, 
+        		"Identifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getPackageCSAccess().getEqualsSignKeyword_2_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageCSAccess().getNsURIURIParserRuleCall_2_3_0()); 
+	    }
+		lv_nsURI_5_0=ruleURI		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());
+	        }
+       		set(
+       			$current, 
+       			"nsURI",
+        		lv_nsURI_5_0, 
+        		"URI");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_6='{' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getPackageCSAccess().getLeftCurlyBracketKeyword_3());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageCSAccess().getOwnedPackagesPackageCSParserRuleCall_4_0_0()); 
+	    }
+		lv_ownedPackages_7_0=rulePackageCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPackages",
+        		lv_ownedPackages_7_0, 
+        		"PackageCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageCSAccess().getOwnedClassesClassCSParserRuleCall_4_1_0()); 
+	    }
+		lv_ownedClasses_8_0=ruleClassCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedClasses",
+        		lv_ownedClasses_8_0, 
+        		"ClassCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPackageCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_4_2_0()); 
+	    }
+		lv_ownedAnnotations_9_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPackageCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_9_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_10='}' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getPackageCSAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleParameterCS
+entryRuleParameterCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getParameterCSRule()); }
+	 iv_ruleParameterCS=ruleParameterCS 
+	 { $current=$iv_ruleParameterCS.current; } 
+	 EOF 
+;
+
+// Rule ParameterCS
+ruleParameterCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getParameterCSAccess().getNameIdentifierParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"Identifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getParameterCSAccess().getColonKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getParameterCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypedMultiplicityRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypedMultiplicityRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLibPropertyCS
+entryRuleLibPropertyCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLibPropertyCSRule()); }
+	 iv_ruleLibPropertyCS=ruleLibPropertyCS 
+	 { $current=$iv_ruleLibPropertyCS.current; } 
+	 EOF 
+;
+
+// Rule LibPropertyCS
+ruleLibPropertyCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_isStatic_0_0=	'static' 
+    {
+        newLeafNode(lv_isStatic_0_0, grammarAccess.getLibPropertyCSAccess().getIsStaticStaticKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibPropertyCSRule());
+	        }
+       		setWithLastConsumed($current, "isStatic", true, "static");
+	    }
+
+)
+)?	otherlv_1='property' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getLibPropertyCSAccess().getPropertyKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibPropertyCSAccess().getNameNameParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibPropertyCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"Name");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=':' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getLibPropertyCSAccess().getColonKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibPropertyCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedType_4_0=ruleTypedMultiplicityRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibPropertyCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_4_0, 
+        		"TypedMultiplicityRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5='=>' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getLibPropertyCSAccess().getEqualsSignGreaterThanSignKeyword_5_0());
+    }
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLibPropertyCSRule());
+	        }
+        }
+	otherlv_6=RULE_SINGLE_QUOTED_STRING
+	{
+		newLeafNode(otherlv_6, grammarAccess.getLibPropertyCSAccess().getImplementationJavaClassCSCrossReference_5_1_0()); 
+	}
+
+)
+))?((	otherlv_7='{' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getLibPropertyCSAccess().getLeftCurlyBracketKeyword_6_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLibPropertyCSAccess().getOwnedAnnotationsAnnotationElementCSParserRuleCall_6_0_1_0()); 
+	    }
+		lv_ownedAnnotations_8_0=ruleAnnotationElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLibPropertyCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedAnnotations",
+        		lv_ownedAnnotations_8_0, 
+        		"AnnotationElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_9='}' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getLibPropertyCSAccess().getRightCurlyBracketKeyword_6_0_2());
+    }
+)
+    |	otherlv_10=';' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getLibPropertyCSAccess().getSemicolonKeyword_6_1());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRulePostCS
+entryRulePostCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPostCSRule()); }
+	 iv_rulePostCS=rulePostCS 
+	 { $current=$iv_rulePostCS.current; } 
+	 EOF 
+;
+
+// Rule PostCS
+rulePostCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_stereotype_0_0=	'post' 
+    {
+        newLeafNode(lv_stereotype_0_0, grammarAccess.getPostCSAccess().getStereotypePostKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPostCSRule());
+	        }
+       		setWithLastConsumed($current, "stereotype", lv_stereotype_0_0, "post");
+	    }
+
+)
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPostCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); 
+	    }
+		lv_name_1_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPostCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPostCSAccess().getLeftParenthesisKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPostCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); 
+	    }
+		lv_ownedMessageSpecification_3_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPostCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMessageSpecification",
+        		lv_ownedMessageSpecification_3_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getPostCSAccess().getRightParenthesisKeyword_1_1_2());
+    }
+)?)?	otherlv_5=':' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getPostCSAccess().getColonKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPostCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedSpecification_6_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPostCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSpecification",
+        		lv_ownedSpecification_6_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7=';' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getPostCSAccess().getSemicolonKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePreCS
+entryRulePreCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPreCSRule()); }
+	 iv_rulePreCS=rulePreCS 
+	 { $current=$iv_rulePreCS.current; } 
+	 EOF 
+;
+
+// Rule PreCS
+rulePreCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_stereotype_0_0=	'pre' 
+    {
+        newLeafNode(lv_stereotype_0_0, grammarAccess.getPreCSAccess().getStereotypePreKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPreCSRule());
+	        }
+       		setWithLastConsumed($current, "stereotype", lv_stereotype_0_0, "pre");
+	    }
+
+)
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPreCSAccess().getNameUnrestrictedNameParserRuleCall_1_0_0()); 
+	    }
+		lv_name_1_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPreCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPreCSAccess().getLeftParenthesisKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPreCSAccess().getOwnedMessageSpecificationSpecificationCSParserRuleCall_1_1_1_0()); 
+	    }
+		lv_ownedMessageSpecification_3_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPreCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMessageSpecification",
+        		lv_ownedMessageSpecification_3_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getPreCSAccess().getRightParenthesisKeyword_1_1_2());
+    }
+)?)?	otherlv_5=':' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getPreCSAccess().getColonKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPreCSAccess().getOwnedSpecificationSpecificationCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedSpecification_6_0=ruleSpecificationCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPreCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSpecification",
+        		lv_ownedSpecification_6_0, 
+        		"SpecificationCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7=';' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getPreCSAccess().getSemicolonKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrecedenceCS
+entryRulePrecedenceCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrecedenceCSRule()); }
+	 iv_rulePrecedenceCS=rulePrecedenceCS 
+	 { $current=$iv_rulePrecedenceCS.current; } 
+	 EOF 
+;
+
+// Rule PrecedenceCS
+rulePrecedenceCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((	otherlv_0='left' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPrecedenceCSAccess().getLeftKeyword_0_0());
+    }
+
+    |(
+(
+		lv_isRightAssociative_1_0=	'right' 
+    {
+        newLeafNode(lv_isRightAssociative_1_0, grammarAccess.getPrecedenceCSAccess().getIsRightAssociativeRightKeyword_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPrecedenceCSRule());
+	        }
+       		setWithLastConsumed($current, "isRightAssociative", true, "right");
+	    }
+
+)
+))	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPrecedenceCSAccess().getColonKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrecedenceCSAccess().getNameNameParserRuleCall_2_0()); 
+	    }
+		lv_name_3_0=ruleName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrecedenceCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_3_0, 
+        		"Name");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleSpecificationCS
+entryRuleSpecificationCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSpecificationCSRule()); }
+	 iv_ruleSpecificationCS=ruleSpecificationCS 
+	 { $current=$iv_ruleSpecificationCS.current; } 
+	 EOF 
+;
+
+// Rule SpecificationCS
+ruleSpecificationCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSpecificationCSAccess().getOwnedExpressionExpCSParserRuleCall_0()); 
+	    }
+		lv_ownedExpression_0_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSpecificationCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_0_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypedMultiplicityRefCS
+entryRuleTypedMultiplicityRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedMultiplicityRefCSRule()); }
+	 iv_ruleTypedMultiplicityRefCS=ruleTypedMultiplicityRefCS 
+	 { $current=$iv_ruleTypedMultiplicityRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypedMultiplicityRefCS
+ruleTypedMultiplicityRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypedMultiplicityRefCSAccess().getTupleTypeCSParserRuleCall_0_0()); 
+    }
+    this_TupleTypeCS_0=ruleTupleTypeCS
+    { 
+        $current = $this_TupleTypeCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypedMultiplicityRefCSAccess().getTypedTypeRefCSParserRuleCall_0_1()); 
+    }
+    this_TypedTypeRefCS_1=ruleTypedTypeRefCS
+    { 
+        $current = $this_TypedTypeRefCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypedMultiplicityRefCSAccess().getLambdaTypeCSParserRuleCall_0_2()); 
+    }
+    this_LambdaTypeCS_2=ruleLambdaTypeCS
+    { 
+        $current = $this_LambdaTypeCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedMultiplicityRefCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedMultiplicity_3_0=ruleMultiplicityCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedMultiplicityRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMultiplicity",
+        		lv_ownedMultiplicity_3_0, 
+        		"MultiplicityCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTypedRefCS
+entryRuleTypedRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedRefCSRule()); }
+	 iv_ruleTypedRefCS=ruleTypedRefCS 
+	 { $current=$iv_ruleTypedRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypedRefCS
+ruleTypedRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTupleTypeCSParserRuleCall_0()); 
+    }
+    this_TupleTypeCS_0=ruleTupleTypeCS
+    { 
+        $current = $this_TupleTypeCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypedRefCSAccess().getTypedTypeRefCSParserRuleCall_1()); 
+    }
+    this_TypedTypeRefCS_1=ruleTypedTypeRefCS
+    { 
+        $current = $this_TypedTypeRefCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypedRefCSAccess().getLambdaTypeCSParserRuleCall_2()); 
+    }
+    this_LambdaTypeCS_2=ruleLambdaTypeCS
+    { 
+        $current = $this_LambdaTypeCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypedTypeRefCS
+entryRuleTypedTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedTypeRefCSRule()); }
+	 iv_ruleTypedTypeRefCS=ruleTypedTypeRefCS 
+	 { $current=$iv_ruleTypedTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypedTypeRefCS
+ruleTypedTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+		lv_isTypeof_0_0=	'typeof' 
+    {
+        newLeafNode(lv_isTypeof_0_0, grammarAccess.getTypedTypeRefCSAccess().getIsTypeofTypeofKeyword_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getTypedTypeRefCSRule());
+	        }
+       		setWithLastConsumed($current, "isTypeof", true, "typeof");
+	    }
+
+)
+)	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTypedTypeRefCSAccess().getLeftParenthesisKeyword_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_0_2_0()); 
+	    }
+		lv_ownedPathName_2_0=ruleLibPathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_2_0, 
+        		"LibPathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTypedTypeRefCSAccess().getRightParenthesisKeyword_0_3());
+    }
+)
+    |((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedPathNameLibPathNameCSParserRuleCall_1_0_0()); 
+	    }
+		lv_ownedPathName_4_0=ruleLibPathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_4_0, 
+        		"LibPathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedTypeRefCSAccess().getOwnedBindingTemplateBindingCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedBinding_5_0=ruleTemplateBindingCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedBinding",
+        		lv_ownedBinding_5_0, 
+        		"TemplateBindingCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?))
+;
+
+
+
+
+
+// Entry rule entryRuleTuplePartCS
+entryRuleTuplePartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTuplePartCSRule()); }
+	 iv_ruleTuplePartCS=ruleTuplePartCS 
+	 { $current=$iv_ruleTuplePartCS.current; } 
+	 EOF 
+;
+
+// Rule TuplePartCS
+ruleTuplePartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getNameIdentifierParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"Identifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTuplePartCSAccess().getColonKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTuplePartCSAccess().getOwnedTypeTypedMultiplicityRefCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypedMultiplicityRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTuplePartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypedMultiplicityRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLReservedKeyword
+entryRuleEssentialOCLReservedKeyword returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLReservedKeywordRule()); } 
+	 iv_ruleEssentialOCLReservedKeyword=ruleEssentialOCLReservedKeyword 
+	 { $current=$iv_ruleEssentialOCLReservedKeyword.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLReservedKeyword
+ruleEssentialOCLReservedKeyword returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='and' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getAndKeyword_0()); 
+    }
+
+    |
+	kw='else' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getElseKeyword_1()); 
+    }
+
+    |
+	kw='endif' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getEndifKeyword_2()); 
+    }
+
+    |
+	kw='if' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getIfKeyword_3()); 
+    }
+
+    |
+	kw='implies' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getImpliesKeyword_4()); 
+    }
+
+    |
+	kw='in' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getInKeyword_5()); 
+    }
+
+    |
+	kw='let' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getLetKeyword_6()); 
+    }
+
+    |
+	kw='not' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getNotKeyword_7()); 
+    }
+
+    |
+	kw='or' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getOrKeyword_8()); 
+    }
+
+    |
+	kw='then' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getThenKeyword_9()); 
+    }
+
+    |
+	kw='xor' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLReservedKeywordAccess().getXorKeyword_10()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnaryOperatorName
+entryRuleEssentialOCLUnaryOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLUnaryOperatorNameRule()); } 
+	 iv_ruleEssentialOCLUnaryOperatorName=ruleEssentialOCLUnaryOperatorName 
+	 { $current=$iv_ruleEssentialOCLUnaryOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLUnaryOperatorName
+ruleEssentialOCLUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getHyphenMinusKeyword_0()); 
+    }
+
+    |
+	kw='not' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLUnaryOperatorNameAccess().getNotKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLInfixOperatorName
+entryRuleEssentialOCLInfixOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLInfixOperatorNameRule()); } 
+	 iv_ruleEssentialOCLInfixOperatorName=ruleEssentialOCLInfixOperatorName 
+	 { $current=$iv_ruleEssentialOCLInfixOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLInfixOperatorName
+ruleEssentialOCLInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAsteriskKeyword_0()); 
+    }
+
+    |
+	kw='/' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getSolidusKeyword_1()); 
+    }
+
+    |
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getPlusSignKeyword_2()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getHyphenMinusKeyword_3()); 
+    }
+
+    |
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignKeyword_4()); 
+    }
+
+    |
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignKeyword_5()); 
+    }
+
+    |
+	kw='>=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getGreaterThanSignEqualsSignKeyword_6()); 
+    }
+
+    |
+	kw='<=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignEqualsSignKeyword_7()); 
+    }
+
+    |
+	kw='=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getEqualsSignKeyword_8()); 
+    }
+
+    |
+	kw='<>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getLessThanSignGreaterThanSignKeyword_9()); 
+    }
+
+    |
+	kw='and' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getAndKeyword_10()); 
+    }
+
+    |
+	kw='or' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getOrKeyword_11()); 
+    }
+
+    |
+	kw='xor' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getXorKeyword_12()); 
+    }
+
+    |
+	kw='implies' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLInfixOperatorNameAccess().getImpliesKeyword_13()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLNavigationOperatorName
+entryRuleEssentialOCLNavigationOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLNavigationOperatorNameRule()); } 
+	 iv_ruleEssentialOCLNavigationOperatorName=ruleEssentialOCLNavigationOperatorName 
+	 { $current=$iv_ruleEssentialOCLNavigationOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLNavigationOperatorName
+ruleEssentialOCLNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getFullStopKeyword_0()); 
+    }
+
+    |
+	kw='->' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getHyphenMinusGreaterThanSignKeyword_1()); 
+    }
+
+    |
+	kw='?.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkFullStopKeyword_2()); 
+    }
+
+    |
+	kw='?->' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLNavigationOperatorNameAccess().getQuestionMarkHyphenMinusGreaterThanSignKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleBinaryOperatorName
+entryRuleBinaryOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBinaryOperatorNameRule()); } 
+	 iv_ruleBinaryOperatorName=ruleBinaryOperatorName 
+	 { $current=$iv_ruleBinaryOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule BinaryOperatorName
+ruleBinaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getInfixOperatorNameParserRuleCall_0()); 
+    }
+    this_InfixOperatorName_0=ruleInfixOperatorName    {
+		$current.merge(this_InfixOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBinaryOperatorNameAccess().getNavigationOperatorNameParserRuleCall_1()); 
+    }
+    this_NavigationOperatorName_1=ruleNavigationOperatorName    {
+		$current.merge(this_NavigationOperatorName_1);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleInfixOperatorName
+entryRuleInfixOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInfixOperatorNameRule()); } 
+	 iv_ruleInfixOperatorName=ruleInfixOperatorName 
+	 { $current=$iv_ruleInfixOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule InfixOperatorName
+ruleInfixOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getInfixOperatorNameAccess().getEssentialOCLInfixOperatorNameParserRuleCall()); 
+    }
+    this_EssentialOCLInfixOperatorName_0=ruleEssentialOCLInfixOperatorName    {
+		$current.merge(this_EssentialOCLInfixOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleNavigationOperatorName
+entryRuleNavigationOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigationOperatorNameRule()); } 
+	 iv_ruleNavigationOperatorName=ruleNavigationOperatorName 
+	 { $current=$iv_ruleNavigationOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule NavigationOperatorName
+ruleNavigationOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getNavigationOperatorNameAccess().getEssentialOCLNavigationOperatorNameParserRuleCall()); 
+    }
+    this_EssentialOCLNavigationOperatorName_0=ruleEssentialOCLNavigationOperatorName    {
+		$current.merge(this_EssentialOCLNavigationOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleUnaryOperatorName
+entryRuleUnaryOperatorName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnaryOperatorNameRule()); } 
+	 iv_ruleUnaryOperatorName=ruleUnaryOperatorName 
+	 { $current=$iv_ruleUnaryOperatorName.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnaryOperatorName
+ruleUnaryOperatorName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getUnaryOperatorNameAccess().getEssentialOCLUnaryOperatorNameParserRuleCall()); 
+    }
+    this_EssentialOCLUnaryOperatorName_0=ruleEssentialOCLUnaryOperatorName    {
+		$current.merge(this_EssentialOCLUnaryOperatorName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnrestrictedName
+entryRuleEssentialOCLUnrestrictedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameRule()); } 
+	 iv_ruleEssentialOCLUnrestrictedName=ruleEssentialOCLUnrestrictedName 
+	 { $current=$iv_ruleEssentialOCLUnrestrictedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLUnrestrictedName
+ruleEssentialOCLUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnrestrictedNameAccess().getIdentifierParserRuleCall()); 
+    }
+    this_Identifier_0=ruleIdentifier    {
+		$current.merge(this_Identifier_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleUnrestrictedName
+entryRuleUnrestrictedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnrestrictedNameRule()); } 
+	 iv_ruleUnrestrictedName=ruleUnrestrictedName 
+	 { $current=$iv_ruleUnrestrictedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnrestrictedName
+ruleUnrestrictedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getUnrestrictedNameAccess().getEssentialOCLUnrestrictedNameParserRuleCall()); 
+    }
+    this_EssentialOCLUnrestrictedName_0=ruleEssentialOCLUnrestrictedName    {
+		$current.merge(this_EssentialOCLUnrestrictedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleEssentialOCLUnreservedName
+entryRuleEssentialOCLUnreservedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameRule()); } 
+	 iv_ruleEssentialOCLUnreservedName=ruleEssentialOCLUnreservedName 
+	 { $current=$iv_ruleEssentialOCLUnreservedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule EssentialOCLUnreservedName
+ruleEssentialOCLUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getUnrestrictedNameParserRuleCall_0()); 
+    }
+    this_UnrestrictedName_0=ruleUnrestrictedName    {
+		$current.merge(this_UnrestrictedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getCollectionTypeIdentifierParserRuleCall_1()); 
+    }
+    this_CollectionTypeIdentifier_1=ruleCollectionTypeIdentifier    {
+		$current.merge(this_CollectionTypeIdentifier_1);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getEssentialOCLUnreservedNameAccess().getPrimitiveTypeIdentifierParserRuleCall_2()); 
+    }
+    this_PrimitiveTypeIdentifier_2=rulePrimitiveTypeIdentifier    {
+		$current.merge(this_PrimitiveTypeIdentifier_2);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	kw='Tuple' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEssentialOCLUnreservedNameAccess().getTupleKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleUnreservedName
+entryRuleUnreservedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnreservedNameRule()); } 
+	 iv_ruleUnreservedName=ruleUnreservedName 
+	 { $current=$iv_ruleUnreservedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnreservedName
+ruleUnreservedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getUnreservedNameAccess().getEssentialOCLUnreservedNameParserRuleCall()); 
+    }
+    this_EssentialOCLUnreservedName_0=ruleEssentialOCLUnreservedName    {
+		$current.merge(this_EssentialOCLUnreservedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+
+
+// Entry rule entryRuleURIFirstPathElementCS
+entryRuleURIFirstPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getURIFirstPathElementCSRule()); }
+	 iv_ruleURIFirstPathElementCS=ruleURIFirstPathElementCS 
+	 { $current=$iv_ruleURIFirstPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule URIFirstPathElementCS
+ruleURIFirstPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getURIFirstPathElementCSAccess().getPathElementWithURICSAction_1_0(),
+            $current);
+    }
+)(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getURIFirstPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getURIFirstPathElementCSAccess().getReferredElementNamespaceCrossReference_1_1_0()); 
+	    }
+		ruleURI		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRulePrimitiveTypeIdentifier
+entryRulePrimitiveTypeIdentifier returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimitiveTypeIdentifierRule()); } 
+	 iv_rulePrimitiveTypeIdentifier=rulePrimitiveTypeIdentifier 
+	 { $current=$iv_rulePrimitiveTypeIdentifier.current.getText(); }  
+	 EOF 
+;
+
+// Rule PrimitiveTypeIdentifier
+rulePrimitiveTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='Boolean' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getBooleanKeyword_0()); 
+    }
+
+    |
+	kw='Integer' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getIntegerKeyword_1()); 
+    }
+
+    |
+	kw='Real' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getRealKeyword_2()); 
+    }
+
+    |
+	kw='String' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getStringKeyword_3()); 
+    }
+
+    |
+	kw='UnlimitedNatural' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getUnlimitedNaturalKeyword_4()); 
+    }
+
+    |
+	kw='OclAny' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclAnyKeyword_5()); 
+    }
+
+    |
+	kw='OclInvalid' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclInvalidKeyword_6()); 
+    }
+
+    |
+	kw='OclVoid' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getPrimitiveTypeIdentifierAccess().getOclVoidKeyword_7()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRulePrimitiveTypeCS
+entryRulePrimitiveTypeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimitiveTypeCSRule()); }
+	 iv_rulePrimitiveTypeCS=rulePrimitiveTypeCS 
+	 { $current=$iv_rulePrimitiveTypeCS.current; } 
+	 EOF 
+;
+
+// Rule PrimitiveTypeCS
+rulePrimitiveTypeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrimitiveTypeCSAccess().getNamePrimitiveTypeIdentifierParserRuleCall_0()); 
+	    }
+		lv_name_0_0=rulePrimitiveTypeIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrimitiveTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"PrimitiveTypeIdentifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionTypeIdentifier
+entryRuleCollectionTypeIdentifier returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionTypeIdentifierRule()); } 
+	 iv_ruleCollectionTypeIdentifier=ruleCollectionTypeIdentifier 
+	 { $current=$iv_ruleCollectionTypeIdentifier.current.getText(); }  
+	 EOF 
+;
+
+// Rule CollectionTypeIdentifier
+ruleCollectionTypeIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='Set' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSetKeyword_0()); 
+    }
+
+    |
+	kw='Bag' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getBagKeyword_1()); 
+    }
+
+    |
+	kw='Sequence' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getSequenceKeyword_2()); 
+    }
+
+    |
+	kw='Collection' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getCollectionKeyword_3()); 
+    }
+
+    |
+	kw='OrderedSet' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCollectionTypeIdentifierAccess().getOrderedSetKeyword_4()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleCollectionTypeCS
+entryRuleCollectionTypeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionTypeCSRule()); }
+	 iv_ruleCollectionTypeCS=ruleCollectionTypeCS 
+	 { $current=$iv_ruleCollectionTypeCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionTypeCS
+ruleCollectionTypeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getNameCollectionTypeIdentifierParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleCollectionTypeIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"CollectionTypeIdentifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionTypeCSAccess().getLeftParenthesisKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionTypeCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionTypeCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCollectionTypeCSAccess().getRightParenthesisKeyword_1_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTupleTypeCS
+entryRuleTupleTypeCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTupleTypeCSRule()); }
+	 iv_ruleTupleTypeCS=ruleTupleTypeCS 
+	 { $current=$iv_ruleTupleTypeCS.current; } 
+	 EOF 
+;
+
+// Rule TupleTypeCS
+ruleTupleTypeCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_name_0_0=	'Tuple' 
+    {
+        newLeafNode(lv_name_0_0, grammarAccess.getTupleTypeCSAccess().getNameTupleKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getTupleTypeCSRule());
+	        }
+       		setWithLastConsumed($current, "name", lv_name_0_0, "Tuple");
+	    }
+
+)
+)(	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTupleTypeCSAccess().getLeftParenthesisKeyword_1_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_0_0()); 
+	    }
+		lv_ownedParts_2_0=ruleTuplePartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"TuplePartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTupleTypeCSAccess().getCommaKeyword_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleTypeCSAccess().getOwnedPartsTuplePartCSParserRuleCall_1_1_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleTuplePartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleTypeCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"TuplePartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTupleTypeCSAccess().getRightParenthesisKeyword_1_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionLiteralExpCS
+entryRuleCollectionLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionLiteralExpCSRule()); }
+	 iv_ruleCollectionLiteralExpCS=ruleCollectionLiteralExpCS 
+	 { $current=$iv_ruleCollectionLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionLiteralExpCS
+ruleCollectionLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedType_0_0=ruleCollectionTypeCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_0_0, 
+        		"CollectionTypeCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedParts_2_0=ruleCollectionLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"CollectionLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCollectionLiteralExpCSAccess().getCommaKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralExpCSAccess().getOwnedPartsCollectionLiteralPartCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleCollectionLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"CollectionLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCollectionLiteralExpCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionLiteralPartCS
+entryRuleCollectionLiteralPartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionLiteralPartCSRule()); }
+	 iv_ruleCollectionLiteralPartCS=ruleCollectionLiteralPartCS 
+	 { $current=$iv_ruleCollectionLiteralPartCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionLiteralPartCS
+ruleCollectionLiteralPartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionExpCSParserRuleCall_0_0_0()); 
+	    }
+		lv_ownedExpression_0_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_0_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='..' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionLiteralPartCSAccess().getFullStopFullStopKeyword_0_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedLastExpressionExpCSParserRuleCall_0_1_1_0()); 
+	    }
+		lv_ownedLastExpression_2_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedLastExpression",
+        		lv_ownedLastExpression_2_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionLiteralPartCSAccess().getOwnedExpressionPatternExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedExpression_3_0=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_3_0, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionPatternCS
+entryRuleCollectionPatternCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionPatternCSRule()); }
+	 iv_ruleCollectionPatternCS=ruleCollectionPatternCS 
+	 { $current=$iv_ruleCollectionPatternCS.current; } 
+	 EOF 
+;
+
+// Rule CollectionPatternCS
+ruleCollectionPatternCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedTypeCollectionTypeCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedType_0_0=ruleCollectionTypeCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_0_0, 
+        		"CollectionTypeCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCollectionPatternCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedParts_2_0=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCollectionPatternCSAccess().getCommaKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getOwnedPartsPatternExpCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*(	otherlv_5='++' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCollectionPatternCSAccess().getPlusSignPlusSignKeyword_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionPatternCSAccess().getRestVariableNameIdentifierParserRuleCall_2_2_1_0()); 
+	    }
+		lv_restVariableName_6_0=ruleIdentifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionPatternCSRule());
+	        }
+       		set(
+       			$current, 
+       			"restVariableName",
+        		lv_restVariableName_6_0, 
+        		"Identifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getCollectionPatternCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleConstructorPartCS
+entryRuleConstructorPartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getConstructorPartCSRule()); }
+	 iv_ruleConstructorPartCS=ruleConstructorPartCS 
+	 { $current=$iv_ruleConstructorPartCS.current; } 
+	 EOF 
+;
+
+// Rule ConstructorPartCS
+ruleConstructorPartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getConstructorPartCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getReferredPropertyPropertyCrossReference_0_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='=' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getConstructorPartCSAccess().getEqualsSignKeyword_1());
+    }
+(
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedInitExpression_2_1=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_2_1, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		{ 
+	        newCompositeNode(grammarAccess.getConstructorPartCSAccess().getOwnedInitExpressionPatternExpCSParserRuleCall_2_0_1()); 
+	    }
+		lv_ownedInitExpression_2_2=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getConstructorPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_2_2, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRulePatternExpCS
+entryRulePatternExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPatternExpCSRule()); }
+	 iv_rulePatternExpCS=rulePatternExpCS 
+	 { $current=$iv_rulePatternExpCS.current; } 
+	 EOF 
+;
+
+// Rule PatternExpCS
+rulePatternExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getPatternVariableNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_patternVariableName_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"patternVariableName",
+        		lv_patternVariableName_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPatternExpCSAccess().getColonKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPatternExpCSAccess().getOwnedPatternTypeTypeExpCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedPatternType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPatternExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPatternType",
+        		lv_ownedPatternType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLambdaLiteralExpCS
+entryRuleLambdaLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLambdaLiteralExpCSRule()); }
+	 iv_ruleLambdaLiteralExpCS=ruleLambdaLiteralExpCS 
+	 { $current=$iv_ruleLambdaLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule LambdaLiteralExpCS
+ruleLambdaLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Lambda' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLambdaLiteralExpCSAccess().getLambdaKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getLambdaLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLambdaLiteralExpCSAccess().getOwnedExpressionCSExpCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedExpressionCS_2_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLambdaLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpressionCS",
+        		lv_ownedExpressionCS_2_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='}' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getLambdaLiteralExpCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrimitiveLiteralExpCS
+entryRulePrimitiveLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSRule()); }
+	 iv_rulePrimitiveLiteralExpCS=rulePrimitiveLiteralExpCS 
+	 { $current=$iv_rulePrimitiveLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrimitiveLiteralExpCS
+rulePrimitiveLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNumberLiteralExpCSParserRuleCall_0()); 
+    }
+    this_NumberLiteralExpCS_0=ruleNumberLiteralExpCS
+    { 
+        $current = $this_NumberLiteralExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getStringLiteralExpCSParserRuleCall_1()); 
+    }
+    this_StringLiteralExpCS_1=ruleStringLiteralExpCS
+    { 
+        $current = $this_StringLiteralExpCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getBooleanLiteralExpCSParserRuleCall_2()); 
+    }
+    this_BooleanLiteralExpCS_2=ruleBooleanLiteralExpCS
+    { 
+        $current = $this_BooleanLiteralExpCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSParserRuleCall_3()); 
+    }
+    this_UnlimitedNaturalLiteralExpCS_3=ruleUnlimitedNaturalLiteralExpCS
+    { 
+        $current = $this_UnlimitedNaturalLiteralExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getInvalidLiteralExpCSParserRuleCall_4()); 
+    }
+    this_InvalidLiteralExpCS_4=ruleInvalidLiteralExpCS
+    { 
+        $current = $this_InvalidLiteralExpCS_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimitiveLiteralExpCSAccess().getNullLiteralExpCSParserRuleCall_5()); 
+    }
+    this_NullLiteralExpCS_5=ruleNullLiteralExpCS
+    { 
+        $current = $this_NullLiteralExpCS_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTupleLiteralExpCS
+entryRuleTupleLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTupleLiteralExpCSRule()); }
+	 iv_ruleTupleLiteralExpCS=ruleTupleLiteralExpCS 
+	 { $current=$iv_ruleTupleLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule TupleLiteralExpCS
+ruleTupleLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Tuple' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getTupleLiteralExpCSAccess().getTupleKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralExpCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedParts_2_0=ruleTupleLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"TupleLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralExpCSAccess().getCommaKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralExpCSAccess().getOwnedPartsTupleLiteralPartCSParserRuleCall_3_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleTupleLiteralPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"TupleLiteralPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTupleLiteralExpCSAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTupleLiteralPartCS
+entryRuleTupleLiteralPartCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTupleLiteralPartCSRule()); }
+	 iv_ruleTupleLiteralPartCS=ruleTupleLiteralPartCS 
+	 { $current=$iv_ruleTupleLiteralPartCS.current; } 
+	 EOF 
+;
+
+// Rule TupleLiteralPartCS
+ruleTupleLiteralPartCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTupleLiteralPartCSAccess().getColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_3='=' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTupleLiteralPartCSAccess().getEqualsSignKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTupleLiteralPartCSAccess().getOwnedInitExpressionExpCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedInitExpression_4_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTupleLiteralPartCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_4_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleNumberLiteralExpCS
+entryRuleNumberLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNumberLiteralExpCSRule()); }
+	 iv_ruleNumberLiteralExpCS=ruleNumberLiteralExpCS 
+	 { $current=$iv_ruleNumberLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule NumberLiteralExpCS
+ruleNumberLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNumberLiteralExpCSAccess().getSymbolNUMBER_LITERALParserRuleCall_0()); 
+	    }
+		lv_symbol_0_0=ruleNUMBER_LITERAL		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNumberLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"symbol",
+        		lv_symbol_0_0, 
+        		"NUMBER_LITERAL");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStringLiteralExpCS
+entryRuleStringLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStringLiteralExpCSRule()); }
+	 iv_ruleStringLiteralExpCS=ruleStringLiteralExpCS 
+	 { $current=$iv_ruleStringLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule StringLiteralExpCS
+ruleStringLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStringLiteralExpCSAccess().getSegmentsStringLiteralParserRuleCall_0()); 
+	    }
+		lv_segments_0_0=ruleStringLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStringLiteralExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"segments",
+        		lv_segments_0_0, 
+        		"StringLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+
+;
+
+
+
+
+
+// Entry rule entryRuleBooleanLiteralExpCS
+entryRuleBooleanLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBooleanLiteralExpCSRule()); }
+	 iv_ruleBooleanLiteralExpCS=ruleBooleanLiteralExpCS 
+	 { $current=$iv_ruleBooleanLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule BooleanLiteralExpCS
+ruleBooleanLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_symbol_0_0=	'true' 
+    {
+        newLeafNode(lv_symbol_0_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolTrueKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());
+	        }
+       		setWithLastConsumed($current, "symbol", lv_symbol_0_0, "true");
+	    }
+
+)
+)
+    |(
+(
+		lv_symbol_1_0=	'false' 
+    {
+        newLeafNode(lv_symbol_1_0, grammarAccess.getBooleanLiteralExpCSAccess().getSymbolFalseKeyword_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBooleanLiteralExpCSRule());
+	        }
+       		setWithLastConsumed($current, "symbol", lv_symbol_1_0, "false");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleUnlimitedNaturalLiteralExpCS
+entryRuleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnlimitedNaturalLiteralExpCSRule()); }
+	 iv_ruleUnlimitedNaturalLiteralExpCS=ruleUnlimitedNaturalLiteralExpCS 
+	 { $current=$iv_ruleUnlimitedNaturalLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule UnlimitedNaturalLiteralExpCS
+ruleUnlimitedNaturalLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getUnlimitedNaturalLiteralExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='*' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getUnlimitedNaturalLiteralExpCSAccess().getAsteriskKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleInvalidLiteralExpCS
+entryRuleInvalidLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInvalidLiteralExpCSRule()); }
+	 iv_ruleInvalidLiteralExpCS=ruleInvalidLiteralExpCS 
+	 { $current=$iv_ruleInvalidLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule InvalidLiteralExpCS
+ruleInvalidLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getInvalidLiteralExpCSAccess().getInvalidLiteralExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='invalid' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getInvalidLiteralExpCSAccess().getInvalidKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNullLiteralExpCS
+entryRuleNullLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNullLiteralExpCSRule()); }
+	 iv_ruleNullLiteralExpCS=ruleNullLiteralExpCS 
+	 { $current=$iv_ruleNullLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule NullLiteralExpCS
+ruleNullLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getNullLiteralExpCSAccess().getNullLiteralExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='null' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getNullLiteralExpCSAccess().getNullKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeLiteralCS
+entryRuleTypeLiteralCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeLiteralCSRule()); }
+	 iv_ruleTypeLiteralCS=ruleTypeLiteralCS 
+	 { $current=$iv_ruleTypeLiteralCS.current; } 
+	 EOF 
+;
+
+// Rule TypeLiteralCS
+ruleTypeLiteralCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getPrimitiveTypeCSParserRuleCall_0()); 
+    }
+    this_PrimitiveTypeCS_0=rulePrimitiveTypeCS
+    { 
+        $current = $this_PrimitiveTypeCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getCollectionTypeCSParserRuleCall_1()); 
+    }
+    this_CollectionTypeCS_1=ruleCollectionTypeCS
+    { 
+        $current = $this_CollectionTypeCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralCSAccess().getTupleTypeCSParserRuleCall_2()); 
+    }
+    this_TupleTypeCS_2=ruleTupleTypeCS
+    { 
+        $current = $this_TupleTypeCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeLiteralWithMultiplicityCS
+entryRuleTypeLiteralWithMultiplicityCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSRule()); }
+	 iv_ruleTypeLiteralWithMultiplicityCS=ruleTypeLiteralWithMultiplicityCS 
+	 { $current=$iv_ruleTypeLiteralWithMultiplicityCS.current; } 
+	 EOF 
+;
+
+// Rule TypeLiteralWithMultiplicityCS
+ruleTypeLiteralWithMultiplicityCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getTypeLiteralCSParserRuleCall_0()); 
+    }
+    this_TypeLiteralCS_0=ruleTypeLiteralCS
+    { 
+        $current = $this_TypeLiteralCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeLiteralWithMultiplicityCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedMultiplicity_1_0=ruleMultiplicityCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeLiteralWithMultiplicityCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMultiplicity",
+        		lv_ownedMultiplicity_1_0, 
+        		"MultiplicityCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeLiteralExpCS
+entryRuleTypeLiteralExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeLiteralExpCSRule()); }
+	 iv_ruleTypeLiteralExpCS=ruleTypeLiteralExpCS 
+	 { $current=$iv_ruleTypeLiteralExpCS.current; } 
+	 EOF 
+;
+
+// Rule TypeLiteralExpCS
+ruleTypeLiteralExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeLiteralExpCSAccess().getOwnedTypeTypeLiteralWithMultiplicityCSParserRuleCall_0()); 
+	    }
+		lv_ownedType_0_0=ruleTypeLiteralWithMultiplicityCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeLiteralExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_0_0, 
+        		"TypeLiteralWithMultiplicityCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeNameExpCS
+entryRuleTypeNameExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeNameExpCSRule()); }
+	 iv_ruleTypeNameExpCS=ruleTypeNameExpCS 
+	 { $current=$iv_ruleTypeNameExpCS.current; } 
+	 EOF 
+;
+
+// Rule TypeNameExpCS
+ruleTypeNameExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathName_0_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_0_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_1_0_0()); 
+	    }
+		lv_ownedCurlyBracketedClause_1_0=ruleCurlyBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCurlyBracketedClause",
+        		lv_ownedCurlyBracketedClause_1_0, 
+        		"CurlyBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTypeNameExpCSAccess().getLeftCurlyBracketKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeNameExpCSAccess().getOwnedPatternGuardExpCSParserRuleCall_1_1_1_0()); 
+	    }
+		lv_ownedPatternGuard_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPatternGuard",
+        		lv_ownedPatternGuard_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTypeNameExpCSAccess().getRightCurlyBracketKeyword_1_1_2());
+    }
+)?)?)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeExpCS
+entryRuleTypeExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeExpCSRule()); }
+	 iv_ruleTypeExpCS=ruleTypeExpCS 
+	 { $current=$iv_ruleTypeExpCS.current; } 
+	 EOF 
+;
+
+// Rule TypeExpCS
+ruleTypeExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeNameExpCSParserRuleCall_0_0()); 
+    }
+    this_TypeNameExpCS_0=ruleTypeNameExpCS
+    { 
+        $current = $this_TypeNameExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeExpCSAccess().getTypeLiteralCSParserRuleCall_0_1()); 
+    }
+    this_TypeLiteralCS_1=ruleTypeLiteralCS
+    { 
+        $current = $this_TypeLiteralCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeExpCSAccess().getCollectionPatternCSParserRuleCall_0_2()); 
+    }
+    this_CollectionPatternCS_2=ruleCollectionPatternCS
+    { 
+        $current = $this_CollectionPatternCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeExpCSAccess().getOwnedMultiplicityMultiplicityCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedMultiplicity_3_0=ruleMultiplicityCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedMultiplicity",
+        		lv_ownedMultiplicity_3_0, 
+        		"MultiplicityCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleExpCS
+entryRuleExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExpCSRule()); }
+	 iv_ruleExpCS=ruleExpCS 
+	 { $current=$iv_ruleExpCS.current; } 
+	 EOF 
+;
+
+// Rule ExpCS
+ruleExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedPrimaryExpCSParserRuleCall_0_0()); 
+    }
+    this_PrefixedPrimaryExpCS_0=rulePrefixedPrimaryExpCS
+    { 
+        $current = $this_PrefixedPrimaryExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExpCSAccess().getNameBinaryOperatorNameParserRuleCall_0_1_1_0()); 
+	    }
+		lv_name_2_0=ruleBinaryOperatorName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"BinaryOperatorName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExpCSAccess().getOwnedRightExpCSParserRuleCall_0_1_2_0()); 
+	    }
+		lv_ownedRight_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRight",
+        		lv_ownedRight_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getExpCSAccess().getPrefixedLetExpCSParserRuleCall_1()); 
+    }
+    this_PrefixedLetExpCS_4=rulePrefixedLetExpCS
+    { 
+        $current = $this_PrefixedLetExpCS_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrefixedLetExpCS
+entryRulePrefixedLetExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrefixedLetExpCSRule()); }
+	 iv_rulePrefixedLetExpCS=rulePrefixedLetExpCS 
+	 { $current=$iv_rulePrefixedLetExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrefixedLetExpCS
+rulePrefixedLetExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getPrefixedLetExpCSAccess().getPrefixExpCSAction_0_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 
+	    }
+		lv_name_1_0=ruleUnaryOperatorName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnaryOperatorName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getOwnedRightPrefixedLetExpCSParserRuleCall_0_2_0()); 
+	    }
+		lv_ownedRight_2_0=rulePrefixedLetExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedLetExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRight",
+        		lv_ownedRight_2_0, 
+        		"PrefixedLetExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrefixedLetExpCSAccess().getLetExpCSParserRuleCall_1()); 
+    }
+    this_LetExpCS_3=ruleLetExpCS
+    { 
+        $current = $this_LetExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrefixedPrimaryExpCS
+entryRulePrefixedPrimaryExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSRule()); }
+	 iv_rulePrefixedPrimaryExpCS=rulePrefixedPrimaryExpCS 
+	 { $current=$iv_rulePrefixedPrimaryExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrefixedPrimaryExpCS
+rulePrefixedPrimaryExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getPrefixedPrimaryExpCSAccess().getPrefixExpCSAction_0_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getNameUnaryOperatorNameParserRuleCall_0_1_0()); 
+	    }
+		lv_name_1_0=ruleUnaryOperatorName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"UnaryOperatorName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getOwnedRightPrefixedPrimaryExpCSParserRuleCall_0_2_0()); 
+	    }
+		lv_ownedRight_2_0=rulePrefixedPrimaryExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrefixedPrimaryExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRight",
+        		lv_ownedRight_2_0, 
+        		"PrefixedPrimaryExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrefixedPrimaryExpCSAccess().getPrimaryExpCSParserRuleCall_1()); 
+    }
+    this_PrimaryExpCS_3=rulePrimaryExpCS
+    { 
+        $current = $this_PrimaryExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrimaryExpCS
+entryRulePrimaryExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimaryExpCSRule()); }
+	 iv_rulePrimaryExpCS=rulePrimaryExpCS 
+	 { $current=$iv_rulePrimaryExpCS.current; } 
+	 EOF 
+;
+
+// Rule PrimaryExpCS
+rulePrimaryExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNestedExpCSParserRuleCall_0()); 
+    }
+    this_NestedExpCS_0=ruleNestedExpCS
+    { 
+        $current = $this_NestedExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getIfExpCSParserRuleCall_1()); 
+    }
+    this_IfExpCS_1=ruleIfExpCS
+    { 
+        $current = $this_IfExpCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getSelfExpCSParserRuleCall_2()); 
+    }
+    this_SelfExpCS_2=ruleSelfExpCS
+    { 
+        $current = $this_SelfExpCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getPrimitiveLiteralExpCSParserRuleCall_3()); 
+    }
+    this_PrimitiveLiteralExpCS_3=rulePrimitiveLiteralExpCS
+    { 
+        $current = $this_PrimitiveLiteralExpCS_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTupleLiteralExpCSParserRuleCall_4()); 
+    }
+    this_TupleLiteralExpCS_4=ruleTupleLiteralExpCS
+    { 
+        $current = $this_TupleLiteralExpCS_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getCollectionLiteralExpCSParserRuleCall_5()); 
+    }
+    this_CollectionLiteralExpCS_5=ruleCollectionLiteralExpCS
+    { 
+        $current = $this_CollectionLiteralExpCS_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getLambdaLiteralExpCSParserRuleCall_6()); 
+    }
+    this_LambdaLiteralExpCS_6=ruleLambdaLiteralExpCS
+    { 
+        $current = $this_LambdaLiteralExpCS_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getTypeLiteralExpCSParserRuleCall_7()); 
+    }
+    this_TypeLiteralExpCS_7=ruleTypeLiteralExpCS
+    { 
+        $current = $this_TypeLiteralExpCS_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getPrimaryExpCSAccess().getNameExpCSParserRuleCall_8()); 
+    }
+    this_NameExpCS_8=ruleNameExpCS
+    { 
+        $current = $this_NameExpCS_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNameExpCS
+entryRuleNameExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNameExpCSRule()); }
+	 iv_ruleNameExpCS=ruleNameExpCS 
+	 { $current=$iv_ruleNameExpCS.current; } 
+	 EOF 
+;
+
+// Rule NameExpCS
+ruleNameExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedPathNamePathNameCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathName_0_0=rulePathNameCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedPathName",
+        		lv_ownedPathName_0_0, 
+        		"PathNameCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedSquareBracketedClausesSquareBracketedClauseCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedSquareBracketedClauses_1_0=ruleSquareBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSquareBracketedClauses",
+        		lv_ownedSquareBracketedClauses_1_0, 
+        		"SquareBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_2_0()); 
+	    }
+		lv_ownedRoundBracketedClause_2_0=ruleRoundBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRoundBracketedClause",
+        		lv_ownedRoundBracketedClause_2_0, 
+        		"RoundBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNameExpCSAccess().getOwnedCurlyBracketedClauseCurlyBracketedClauseCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedCurlyBracketedClause_3_0=ruleCurlyBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNameExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCurlyBracketedClause",
+        		lv_ownedCurlyBracketedClause_3_0, 
+        		"CurlyBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?((
+(
+		lv_isPre_4_0=	'@' 
+    {
+        newLeafNode(lv_isPre_4_0, grammarAccess.getNameExpCSAccess().getIsPreCommercialAtKeyword_4_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNameExpCSRule());
+	        }
+       		setWithLastConsumed($current, "isPre", true, "@");
+	    }
+
+)
+)	otherlv_5='pre' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getNameExpCSAccess().getPreKeyword_4_1());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleCurlyBracketedClauseCS
+entryRuleCurlyBracketedClauseCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCurlyBracketedClauseCSRule()); }
+	 iv_ruleCurlyBracketedClauseCS=ruleCurlyBracketedClauseCS 
+	 { $current=$iv_ruleCurlyBracketedClauseCS.current; } 
+	 EOF 
+;
+
+// Rule CurlyBracketedClauseCS
+ruleCurlyBracketedClauseCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getCurlyBracketedClauseCSAccess().getCurlyBracketedClauseCSAction_0(),
+            $current);
+    }
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCurlyBracketedClauseCSAccess().getLeftCurlyBracketKeyword_1());
+    }
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_0_0()); 
+	    }
+		lv_ownedParts_2_0=ruleConstructorPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_2_0, 
+        		"ConstructorPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCurlyBracketedClauseCSAccess().getCommaKeyword_2_0_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getOwnedPartsConstructorPartCSParserRuleCall_2_0_1_1_0()); 
+	    }
+		lv_ownedParts_4_0=ruleConstructorPartCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParts",
+        		lv_ownedParts_4_0, 
+        		"ConstructorPartCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCurlyBracketedClauseCSAccess().getValueStringLiteralParserRuleCall_2_1_0()); 
+	    }
+		lv_value_5_0=ruleStringLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCurlyBracketedClauseCSRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_5_0, 
+        		"StringLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getCurlyBracketedClauseCSAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleRoundBracketedClauseCS
+entryRuleRoundBracketedClauseCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRoundBracketedClauseCSRule()); }
+	 iv_ruleRoundBracketedClauseCS=ruleRoundBracketedClauseCS 
+	 { $current=$iv_ruleRoundBracketedClauseCS.current; } 
+	 EOF 
+;
+
+// Rule RoundBracketedClauseCS
+ruleRoundBracketedClauseCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getRoundBracketedClauseCSAccess().getRoundBracketedClauseCSAction_0(),
+            $current);
+    }
+)	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getRoundBracketedClauseCSAccess().getLeftParenthesisKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingArgCSParserRuleCall_2_0_0()); 
+	    }
+		lv_ownedArguments_2_0=ruleNavigatingArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_2_0, 
+        		"NavigatingArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedArguments_3_0=ruleNavigatingCommaArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_3_0, 
+        		"NavigatingCommaArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingSemiArgCSParserRuleCall_2_2_0_0()); 
+	    }
+		lv_ownedArguments_4_0=ruleNavigatingSemiArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_4_0, 
+        		"NavigatingSemiArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_2_1_0()); 
+	    }
+		lv_ownedArguments_5_0=ruleNavigatingCommaArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_5_0, 
+        		"NavigatingCommaArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)?((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingBarArgCSParserRuleCall_2_3_0_0()); 
+	    }
+		lv_ownedArguments_6_0=ruleNavigatingBarArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_6_0, 
+        		"NavigatingBarArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRoundBracketedClauseCSAccess().getOwnedArgumentsNavigatingCommaArgCSParserRuleCall_2_3_1_0()); 
+	    }
+		lv_ownedArguments_7_0=ruleNavigatingCommaArgCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRoundBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedArguments",
+        		lv_ownedArguments_7_0, 
+        		"NavigatingCommaArgCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)*)?	otherlv_8=')' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getRoundBracketedClauseCSAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSquareBracketedClauseCS
+entryRuleSquareBracketedClauseCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSquareBracketedClauseCSRule()); }
+	 iv_ruleSquareBracketedClauseCS=ruleSquareBracketedClauseCS 
+	 { $current=$iv_ruleSquareBracketedClauseCS.current; } 
+	 EOF 
+;
+
+// Rule SquareBracketedClauseCS
+ruleSquareBracketedClauseCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='[' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getSquareBracketedClauseCSAccess().getLeftSquareBracketKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedTerms_1_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedTerms",
+        		lv_ownedTerms_1_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getSquareBracketedClauseCSAccess().getCommaKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSquareBracketedClauseCSAccess().getOwnedTermsExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedTerms_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSquareBracketedClauseCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedTerms",
+        		lv_ownedTerms_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4=']' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getSquareBracketedClauseCSAccess().getRightSquareBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingArgCS
+entryRuleNavigatingArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingArgCSRule()); }
+	 iv_ruleNavigatingArgCS=ruleNavigatingArgCS 
+	 { $current=$iv_ruleNavigatingArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingArgCS
+ruleNavigatingArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_0_0_0()); 
+	    }
+		lv_ownedNameExpression_0_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_0_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_1=':' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_0_1_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_0_1_0_1_0()); 
+	    }
+		lv_ownedType_2_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_2_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='=' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getNavigatingArgCSAccess().getEqualsSignKeyword_0_1_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_0_2_1_0()); 
+	    }
+		lv_ownedInitExpression_4_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_4_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(	otherlv_5='in' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getNavigatingArgCSAccess().getInKeyword_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_0_1_1_1_0()); 
+	    }
+		lv_ownedInitExpression_6_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_6_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+    |(	otherlv_7=':' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getNavigatingArgCSAccess().getColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedType_8_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_8_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingBarArgCS
+entryRuleNavigatingBarArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingBarArgCSRule()); }
+	 iv_ruleNavigatingBarArgCS=ruleNavigatingBarArgCS 
+	 { $current=$iv_ruleNavigatingBarArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingBarArgCS
+ruleNavigatingBarArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_prefix_0_0=	'|' 
+    {
+        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingBarArgCSAccess().getPrefixVerticalLineKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, "|");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_1_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNavigatingBarArgCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNavigatingBarArgCSAccess().getEqualsSignKeyword_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingBarArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingBarArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)?)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingCommaArgCS
+entryRuleNavigatingCommaArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingCommaArgCSRule()); }
+	 iv_ruleNavigatingCommaArgCS=ruleNavigatingCommaArgCS 
+	 { $current=$iv_ruleNavigatingCommaArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingCommaArgCS
+ruleNavigatingCommaArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_prefix_0_0=	',' 
+    {
+        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingCommaArgCSAccess().getPrefixCommaKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ",");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_1_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNavigatingCommaArgCSAccess().getColonKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_0_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNavigatingCommaArgCSAccess().getEqualsSignKeyword_2_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_0_2_1_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(	otherlv_6='in' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getNavigatingCommaArgCSAccess().getInKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingCommaArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedInitExpression_7_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingCommaArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_7_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingSemiArgCS
+entryRuleNavigatingSemiArgCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingSemiArgCSRule()); }
+	 iv_ruleNavigatingSemiArgCS=ruleNavigatingSemiArgCS 
+	 { $current=$iv_ruleNavigatingSemiArgCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingSemiArgCS
+ruleNavigatingSemiArgCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_prefix_0_0=	';' 
+    {
+        newLeafNode(lv_prefix_0_0, grammarAccess.getNavigatingSemiArgCSAccess().getPrefixSemicolonKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		setWithLastConsumed($current, "prefix", lv_prefix_0_0, ";");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedNameExpressionNavigatingArgExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedNameExpression_1_0=ruleNavigatingArgExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedNameExpression",
+        		lv_ownedNameExpression_1_0, 
+        		"NavigatingArgExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNavigatingSemiArgCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNavigatingSemiArgCSAccess().getEqualsSignKeyword_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNavigatingSemiArgCSAccess().getOwnedInitExpressionExpCSParserRuleCall_2_2_1_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNavigatingSemiArgCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)?)
+;
+
+
+
+
+
+// Entry rule entryRuleNavigatingArgExpCS
+entryRuleNavigatingArgExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNavigatingArgExpCSRule()); }
+	 iv_ruleNavigatingArgExpCS=ruleNavigatingArgExpCS 
+	 { $current=$iv_ruleNavigatingArgExpCS.current; } 
+	 EOF 
+;
+
+// Rule NavigatingArgExpCS
+ruleNavigatingArgExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getNavigatingArgExpCSAccess().getExpCSParserRuleCall()); 
+    }
+    this_ExpCS_0=ruleExpCS
+    { 
+        $current = $this_ExpCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleIfExpCS
+entryRuleIfExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIfExpCSRule()); }
+	 iv_ruleIfExpCS=ruleIfExpCS 
+	 { $current=$iv_ruleIfExpCS.current; } 
+	 EOF 
+;
+
+// Rule IfExpCS
+ruleIfExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='if' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getIfExpCSAccess().getIfKeyword_0());
+    }
+(
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0_0()); 
+	    }
+		lv_ownedCondition_1_1=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCondition",
+        		lv_ownedCondition_1_1, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedConditionPatternExpCSParserRuleCall_1_0_1()); 
+	    }
+		lv_ownedCondition_1_2=rulePatternExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCondition",
+        		lv_ownedCondition_1_2, 
+        		"PatternExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+
+)
+)	otherlv_2='then' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getIfExpCSAccess().getThenKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedThenExpression_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedThenExpression",
+        		lv_ownedThenExpression_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedIfThenExpressionsElseIfThenExpCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedIfThenExpressions_4_0=ruleElseIfThenExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedIfThenExpressions",
+        		lv_ownedIfThenExpressions_4_0, 
+        		"ElseIfThenExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5='else' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getIfExpCSAccess().getElseKeyword_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfExpCSAccess().getOwnedElseExpressionExpCSParserRuleCall_6_0()); 
+	    }
+		lv_ownedElseExpression_6_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedElseExpression",
+        		lv_ownedElseExpression_6_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='endif' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getIfExpCSAccess().getEndifKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleElseIfThenExpCS
+entryRuleElseIfThenExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getElseIfThenExpCSRule()); }
+	 iv_ruleElseIfThenExpCS=ruleElseIfThenExpCS 
+	 { $current=$iv_ruleElseIfThenExpCS.current; } 
+	 EOF 
+;
+
+// Rule ElseIfThenExpCS
+ruleElseIfThenExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='elseif' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getElseIfThenExpCSAccess().getElseifKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedConditionExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedCondition_1_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedCondition",
+        		lv_ownedCondition_1_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='then' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getElseIfThenExpCSAccess().getThenKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getElseIfThenExpCSAccess().getOwnedThenExpressionExpCSParserRuleCall_3_0()); 
+	    }
+		lv_ownedThenExpression_3_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getElseIfThenExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedThenExpression",
+        		lv_ownedThenExpression_3_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLetExpCS
+entryRuleLetExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLetExpCSRule()); }
+	 iv_ruleLetExpCS=ruleLetExpCS 
+	 { $current=$iv_ruleLetExpCS.current; } 
+	 EOF 
+;
+
+// Rule LetExpCS
+ruleLetExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='let' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLetExpCSAccess().getLetKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedVariables_1_0=ruleLetVariableCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedVariables",
+        		lv_ownedVariables_1_0, 
+        		"LetVariableCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getLetExpCSAccess().getCommaKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedVariablesLetVariableCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedVariables_3_0=ruleLetVariableCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedVariables",
+        		lv_ownedVariables_3_0, 
+        		"LetVariableCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4='in' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getLetExpCSAccess().getInKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetExpCSAccess().getOwnedInExpressionExpCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedInExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInExpression",
+        		lv_ownedInExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLetVariableCS
+entryRuleLetVariableCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLetVariableCSRule()); }
+	 iv_ruleLetVariableCS=ruleLetVariableCS 
+	 { $current=$iv_ruleLetVariableCS.current; } 
+	 EOF 
+;
+
+// Rule LetVariableCS
+ruleLetVariableCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedRoundBracketedClauseRoundBracketedClauseCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedRoundBracketedClause_1_0=ruleRoundBracketedClauseCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedRoundBracketedClause",
+        		lv_ownedRoundBracketedClause_1_0, 
+        		"RoundBracketedClauseCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_2=':' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getLetVariableCSAccess().getColonKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedTypeTypeExpCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedType_3_0=ruleTypeExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedType",
+        		lv_ownedType_3_0, 
+        		"TypeExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getLetVariableCSAccess().getEqualsSignKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLetVariableCSAccess().getOwnedInitExpressionExpCSParserRuleCall_4_0()); 
+	    }
+		lv_ownedInitExpression_5_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLetVariableCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedInitExpression",
+        		lv_ownedInitExpression_5_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleNestedExpCS
+entryRuleNestedExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNestedExpCSRule()); }
+	 iv_ruleNestedExpCS=ruleNestedExpCS 
+	 { $current=$iv_ruleNestedExpCS.current; } 
+	 EOF 
+;
+
+// Rule NestedExpCS
+ruleNestedExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getNestedExpCSAccess().getLeftParenthesisKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNestedExpCSAccess().getOwnedExpressionExpCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedExpression_1_0=ruleExpCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNestedExpCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExpression",
+        		lv_ownedExpression_1_0, 
+        		"ExpCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2=')' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNestedExpCSAccess().getRightParenthesisKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSelfExpCS
+entryRuleSelfExpCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSelfExpCSRule()); }
+	 iv_ruleSelfExpCS=ruleSelfExpCS 
+	 { $current=$iv_ruleSelfExpCS.current; } 
+	 EOF 
+;
+
+// Rule SelfExpCS
+ruleSelfExpCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getSelfExpCSAccess().getSelfExpCSAction_0(),
+            $current);
+    }
+)	otherlv_1='self' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getSelfExpCSAccess().getSelfKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleMultiplicityBoundsCS
+entryRuleMultiplicityBoundsCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityBoundsCSRule()); }
+	 iv_ruleMultiplicityBoundsCS=ruleMultiplicityBoundsCS 
+	 { $current=$iv_ruleMultiplicityBoundsCS.current; } 
+	 EOF 
+;
+
+// Rule MultiplicityBoundsCS
+ruleMultiplicityBoundsCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getLowerBoundLOWERParserRuleCall_0_0()); 
+	    }
+		lv_lowerBound_0_0=ruleLOWER		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());
+	        }
+       		set(
+       			$current, 
+       			"lowerBound",
+        		lv_lowerBound_0_0, 
+        		"LOWER");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='..' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getMultiplicityBoundsCSAccess().getFullStopFullStopKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMultiplicityBoundsCSAccess().getUpperBoundUPPERParserRuleCall_1_1_0()); 
+	    }
+		lv_upperBound_2_0=ruleUPPER		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMultiplicityBoundsCSRule());
+	        }
+       		set(
+       			$current, 
+       			"upperBound",
+        		lv_upperBound_2_0, 
+        		"UPPER");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleMultiplicityCS
+entryRuleMultiplicityCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityCSRule()); }
+	 iv_ruleMultiplicityCS=ruleMultiplicityCS 
+	 { $current=$iv_ruleMultiplicityCS.current; } 
+	 EOF 
+;
+
+// Rule MultiplicityCS
+ruleMultiplicityCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='[' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getMultiplicityCSAccess().getLeftSquareBracketKeyword_0());
+    }
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityBoundsCSParserRuleCall_1_0()); 
+    }
+    this_MultiplicityBoundsCS_1=ruleMultiplicityBoundsCS
+    { 
+        $current = $this_MultiplicityBoundsCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getMultiplicityCSAccess().getMultiplicityStringCSParserRuleCall_1_1()); 
+    }
+    this_MultiplicityStringCS_2=ruleMultiplicityStringCS
+    { 
+        $current = $this_MultiplicityStringCS_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)	otherlv_3=']' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getMultiplicityCSAccess().getRightSquareBracketKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleMultiplicityStringCS
+entryRuleMultiplicityStringCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityStringCSRule()); }
+	 iv_ruleMultiplicityStringCS=ruleMultiplicityStringCS 
+	 { $current=$iv_ruleMultiplicityStringCS.current; } 
+	 EOF 
+;
+
+// Rule MultiplicityStringCS
+ruleMultiplicityStringCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+(
+		lv_stringBounds_0_1=	'*' 
+    {
+        newLeafNode(lv_stringBounds_0_1, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsAsteriskKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_1, null);
+	    }
+
+    |		lv_stringBounds_0_2=	'+' 
+    {
+        newLeafNode(lv_stringBounds_0_2, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsPlusSignKeyword_0_1());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_2, null);
+	    }
+
+    |		lv_stringBounds_0_3=	'?' 
+    {
+        newLeafNode(lv_stringBounds_0_3, grammarAccess.getMultiplicityStringCSAccess().getStringBoundsQuestionMarkKeyword_0_2());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getMultiplicityStringCSRule());
+	        }
+       		setWithLastConsumed($current, "stringBounds", lv_stringBounds_0_3, null);
+	    }
+
+)
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRulePathNameCS
+entryRulePathNameCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPathNameCSRule()); }
+	 iv_rulePathNameCS=rulePathNameCS 
+	 { $current=$iv_rulePathNameCS.current; } 
+	 EOF 
+;
+
+// Rule PathNameCS
+rulePathNameCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsFirstPathElementCSParserRuleCall_0_0()); 
+	    }
+		lv_ownedPathElements_0_0=ruleFirstPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_0_0, 
+        		"FirstPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_1='::' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPathNameCSAccess().getColonColonKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPathNameCSAccess().getOwnedPathElementsNextPathElementCSParserRuleCall_1_1_0()); 
+	    }
+		lv_ownedPathElements_2_0=ruleNextPathElementCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPathNameCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedPathElements",
+        		lv_ownedPathElements_2_0, 
+        		"NextPathElementCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleFirstPathElementCS
+entryRuleFirstPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFirstPathElementCSRule()); }
+	 iv_ruleFirstPathElementCS=ruleFirstPathElementCS 
+	 { $current=$iv_ruleFirstPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule FirstPathElementCS
+ruleFirstPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFirstPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getFirstPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 
+	    }
+		ruleUnrestrictedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNextPathElementCS
+entryRuleNextPathElementCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNextPathElementCSRule()); }
+	 iv_ruleNextPathElementCS=ruleNextPathElementCS 
+	 { $current=$iv_ruleNextPathElementCS.current; } 
+	 EOF 
+;
+
+// Rule NextPathElementCS
+ruleNextPathElementCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+		  /* */ 
+		}
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getNextPathElementCSRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getNextPathElementCSAccess().getReferredElementNamedElementCrossReference_0()); 
+	    }
+		ruleUnreservedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTemplateBindingCS
+entryRuleTemplateBindingCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTemplateBindingCSRule()); }
+	 iv_ruleTemplateBindingCS=ruleTemplateBindingCS 
+	 { $current=$iv_ruleTemplateBindingCS.current; } 
+	 EOF 
+;
+
+// Rule TemplateBindingCS
+ruleTemplateBindingCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getTemplateBindingCSAccess().getLeftParenthesisKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedSubstitutions_1_0=ruleTemplateParameterSubstitutionCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSubstitutions",
+        		lv_ownedSubstitutions_1_0, 
+        		"TemplateParameterSubstitutionCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTemplateBindingCSAccess().getCommaKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateBindingCSAccess().getOwnedSubstitutionsTemplateParameterSubstitutionCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedSubstitutions_3_0=ruleTemplateParameterSubstitutionCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateBindingCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedSubstitutions",
+        		lv_ownedSubstitutions_3_0, 
+        		"TemplateParameterSubstitutionCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTemplateBindingCSAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTemplateParameterSubstitutionCS
+entryRuleTemplateParameterSubstitutionCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSRule()); }
+	 iv_ruleTemplateParameterSubstitutionCS=ruleTemplateParameterSubstitutionCS 
+	 { $current=$iv_ruleTemplateParameterSubstitutionCS.current; } 
+	 EOF 
+;
+
+// Rule TemplateParameterSubstitutionCS
+ruleTemplateParameterSubstitutionCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateParameterSubstitutionCSAccess().getOwnedActualParameterTypeRefCSParserRuleCall_0()); 
+	    }
+		lv_ownedActualParameter_0_0=ruleTypeRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateParameterSubstitutionCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedActualParameter",
+        		lv_ownedActualParameter_0_0, 
+        		"TypeRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTemplateSignatureCS
+entryRuleTemplateSignatureCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTemplateSignatureCSRule()); }
+	 iv_ruleTemplateSignatureCS=ruleTemplateSignatureCS 
+	 { $current=$iv_ruleTemplateSignatureCS.current; } 
+	 EOF 
+;
+
+// Rule TemplateSignatureCS
+ruleTemplateSignatureCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getTemplateSignatureCSAccess().getLeftParenthesisKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_1_0()); 
+	    }
+		lv_ownedParameters_1_0=ruleTypeParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_1_0, 
+        		"TypeParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTemplateSignatureCSAccess().getCommaKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTemplateSignatureCSAccess().getOwnedParametersTypeParameterCSParserRuleCall_2_1_0()); 
+	    }
+		lv_ownedParameters_3_0=ruleTypeParameterCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTemplateSignatureCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedParameters",
+        		lv_ownedParameters_3_0, 
+        		"TypeParameterCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTemplateSignatureCSAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeParameterCS
+entryRuleTypeParameterCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeParameterCSRule()); }
+	 iv_ruleTypeParameterCS=ruleTypeParameterCS 
+	 { $current=$iv_ruleTypeParameterCS.current; } 
+	 EOF 
+;
+
+// Rule TypeParameterCS
+ruleTypeParameterCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getNameUnrestrictedNameParserRuleCall_0_0()); 
+	    }
+		lv_name_0_0=ruleUnrestrictedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"UnrestrictedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_1='extends' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTypeParameterCSAccess().getExtendsKeyword_1_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_1_0()); 
+	    }
+		lv_ownedExtends_2_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_2_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='&&' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTypeParameterCSAccess().getAmpersandAmpersandKeyword_1_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_1_0_2_1_0()); 
+	    }
+		lv_ownedExtends_4_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		add(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_4_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+    |(	otherlv_5='super' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getTypeParameterCSAccess().getSuperKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypeParameterCSAccess().getOwnedSuperTypedRefCSParserRuleCall_1_1_1_0()); 
+	    }
+		lv_ownedSuper_6_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypeParameterCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSuper",
+        		lv_ownedSuper_6_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleTypeRefCS
+entryRuleTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeRefCSRule()); }
+	 iv_ruleTypeRefCS=ruleTypeRefCS 
+	 { $current=$iv_ruleTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule TypeRefCS
+ruleTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeRefCSAccess().getTypedRefCSParserRuleCall_0()); 
+    }
+    this_TypedRefCS_0=ruleTypedRefCS
+    { 
+        $current = $this_TypedRefCS_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getTypeRefCSAccess().getWildcardTypeRefCSParserRuleCall_1()); 
+    }
+    this_WildcardTypeRefCS_1=ruleWildcardTypeRefCS
+    { 
+        $current = $this_WildcardTypeRefCS_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleWildcardTypeRefCS
+entryRuleWildcardTypeRefCS returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getWildcardTypeRefCSRule()); }
+	 iv_ruleWildcardTypeRefCS=ruleWildcardTypeRefCS 
+	 { $current=$iv_ruleWildcardTypeRefCS.current; } 
+	 EOF 
+;
+
+// Rule WildcardTypeRefCS
+ruleWildcardTypeRefCS returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getWildcardTypeRefCSAccess().getWildcardTypeRefCSAction_0(),
+            $current);
+    }
+)	otherlv_1='?' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getWildcardTypeRefCSAccess().getQuestionMarkKeyword_1());
+    }
+((	otherlv_2='extends' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getWildcardTypeRefCSAccess().getExtendsKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedExtendsTypedRefCSParserRuleCall_2_0_1_0()); 
+	    }
+		lv_ownedExtends_3_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedExtends",
+        		lv_ownedExtends_3_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(	otherlv_4='super' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getWildcardTypeRefCSAccess().getSuperKeyword_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getWildcardTypeRefCSAccess().getOwnedSuperTypedRefCSParserRuleCall_2_1_1_0()); 
+	    }
+		lv_ownedSuper_5_0=ruleTypedRefCS		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getWildcardTypeRefCSRule());
+	        }
+       		set(
+       			$current, 
+       			"ownedSuper",
+        		lv_ownedSuper_5_0, 
+        		"TypedRefCS");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleID
+entryRuleID returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIDRule()); } 
+	 iv_ruleID=ruleID 
+	 { $current=$iv_ruleID.current.getText(); }  
+	 EOF 
+;
+
+// Rule ID
+ruleID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_SIMPLE_ID_0=RULE_SIMPLE_ID    {
+		$current.merge(this_SIMPLE_ID_0);
+    }
+
+    { 
+    newLeafNode(this_SIMPLE_ID_0, grammarAccess.getIDAccess().getSIMPLE_IDTerminalRuleCall_0()); 
+    }
+
+    |    this_ESCAPED_ID_1=RULE_ESCAPED_ID    {
+		$current.merge(this_ESCAPED_ID_1);
+    }
+
+    { 
+    newLeafNode(this_ESCAPED_ID_1, grammarAccess.getIDAccess().getESCAPED_IDTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleLOWER
+entryRuleLOWER returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLOWERRule()); } 
+	 iv_ruleLOWER=ruleLOWER 
+	 { $current=$iv_ruleLOWER.current.getText(); }  
+	 EOF 
+;
+
+// Rule LOWER
+ruleLOWER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getLOWERAccess().getINTTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleNUMBER_LITERAL
+entryRuleNUMBER_LITERAL returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNUMBER_LITERALRule()); } 
+	 iv_ruleNUMBER_LITERAL=ruleNUMBER_LITERAL 
+	 { $current=$iv_ruleNUMBER_LITERAL.current.getText(); }  
+	 EOF 
+;
+
+// Rule NUMBER_LITERAL
+ruleNUMBER_LITERAL returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getNUMBER_LITERALAccess().getINTTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleStringLiteral
+entryRuleStringLiteral returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStringLiteralRule()); } 
+	 iv_ruleStringLiteral=ruleStringLiteral 
+	 { $current=$iv_ruleStringLiteral.current.getText(); }  
+	 EOF 
+;
+
+// Rule StringLiteral
+ruleStringLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {
+		$current.merge(this_SINGLE_QUOTED_STRING_0);
+    }
+
+    { 
+    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getStringLiteralAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleUPPER
+entryRuleUPPER returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUPPERRule()); } 
+	 iv_ruleUPPER=ruleUPPER 
+	 { $current=$iv_ruleUPPER.current.getText(); }  
+	 EOF 
+;
+
+// Rule UPPER
+ruleUPPER returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getUPPERAccess().getINTTerminalRuleCall_0()); 
+    }
+
+    |
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUPPERAccess().getAsteriskKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleURI
+entryRuleURI returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getURIRule()); } 
+	 iv_ruleURI=ruleURI 
+	 { $current=$iv_ruleURI.current.getText(); }  
+	 EOF 
+;
+
+// Rule URI
+ruleURI returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_SINGLE_QUOTED_STRING_0=RULE_SINGLE_QUOTED_STRING    {
+		$current.merge(this_SINGLE_QUOTED_STRING_0);
+    }
+
+    { 
+    newLeafNode(this_SINGLE_QUOTED_STRING_0, grammarAccess.getURIAccess().getSINGLE_QUOTED_STRINGTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+fragment RULE_ESCAPED_CHARACTER : '\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\');
+
+fragment RULE_LETTER_CHARACTER : ('a'..'z'|'A'..'Z'|'_');
+
+RULE_DOUBLE_QUOTED_STRING : '"' (RULE_ESCAPED_CHARACTER|~(('\\'|'"')))* '"';
+
+RULE_SINGLE_QUOTED_STRING : '\'' (RULE_ESCAPED_CHARACTER|~(('\\'|'\'')))* '\'';
+
+RULE_ML_SINGLE_QUOTED_STRING : '/\'' ( options {greedy=false;} : . )*'\'/';
+
+RULE_SIMPLE_ID : RULE_LETTER_CHARACTER (RULE_LETTER_CHARACTER|'0'..'9')*;
+
+RULE_ESCAPED_ID : '_' RULE_SINGLE_QUOTED_STRING;
+
+RULE_INT : ('0'..'9')+;
+
+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/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/internal/InternalOCLstdlib.tokens b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/internal/InternalOCLstdlib.tokens
index e0af1b2..4d5ee6d 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/internal/InternalOCLstdlib.tokens
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/parser/antlr/internal/InternalOCLstdlib.tokens
@@ -1,186 +1,186 @@
-'&&'=102

-'('=42

-')'=44

-'*'=65

-'+'=67

-'++'=91

-','=43

-'-'=64

-'->'=74

-'.'=73

-'..'=90

-'/'=66

-':'=41

-'::'=40

-';'=16

-'<'=69

-'<='=71

-'<>'=72

-'='=47

-'=>'=49

-'>'=68

-'>='=70

-'?'=101

-'?->'=76

-'?.'=75

-'@'=96

-'Bag'=86

-'Boolean'=77

-'Collection'=88

-'Integer'=78

-'Lambda'=38

-'OclAny'=82

-'OclInvalid'=83

-'OclVoid'=84

-'OrderedSet'=89

-'Real'=79

-'Sequence'=87

-'Set'=85

-'String'=80

-'Tuple'=39

-'UnlimitedNatural'=81

-'['=97

-']'=98

-'and'=53

-'annotation'=17

-'body'=51

-'coercion'=48

-'conformsTo'=18

-'documentation'=19

-'else'=54

-'elseif'=99

-'endif'=55

-'extends'=20

-'false'=93

-'if'=56

-'implies'=57

-'import'=21

-'in'=58

-'inv'=22

-'invalid'=94

-'invalidating'=23

-'iteration'=24

-'left'=25

-'let'=59

-'library'=26

-'not'=60

-'null'=95

-'operation'=27

-'or'=61

-'package'=28

-'post'=29

-'pre'=30

-'precedence'=31

-'property'=32

-'right'=33

-'self'=100

-'static'=34

-'super'=35

-'then'=62

-'true'=92

-'type'=36

-'typeof'=52

-'validating'=37

-'xor'=63

-'{'=45

-'|'=50

-'}'=46

-RULE_ANY_OTHER=15

-RULE_DOUBLE_QUOTED_STRING=4

-RULE_ESCAPED_CHARACTER=10

-RULE_ESCAPED_ID=8

-RULE_INT=9

-RULE_LETTER_CHARACTER=11

-RULE_ML_COMMENT=12

-RULE_ML_SINGLE_QUOTED_STRING=6

-RULE_SIMPLE_ID=7

-RULE_SINGLE_QUOTED_STRING=5

-RULE_SL_COMMENT=13

-RULE_WS=14

-T__100=100

-T__101=101

-T__102=102

-T__16=16

-T__17=17

-T__18=18

-T__19=19

-T__20=20

-T__21=21

-T__22=22

-T__23=23

-T__24=24

-T__25=25

-T__26=26

-T__27=27

-T__28=28

-T__29=29

-T__30=30

-T__31=31

-T__32=32

-T__33=33

-T__34=34

-T__35=35

-T__36=36

-T__37=37

-T__38=38

-T__39=39

-T__40=40

-T__41=41

-T__42=42

-T__43=43

-T__44=44

-T__45=45

-T__46=46

-T__47=47

-T__48=48

-T__49=49

-T__50=50

-T__51=51

-T__52=52

-T__53=53

-T__54=54

-T__55=55

-T__56=56

-T__57=57

-T__58=58

-T__59=59

-T__60=60

-T__61=61

-T__62=62

-T__63=63

-T__64=64

-T__65=65

-T__66=66

-T__67=67

-T__68=68

-T__69=69

-T__70=70

-T__71=71

-T__72=72

-T__73=73

-T__74=74

-T__75=75

-T__76=76

-T__77=77

-T__78=78

-T__79=79

-T__80=80

-T__81=81

-T__82=82

-T__83=83

-T__84=84

-T__85=85

-T__86=86

-T__87=87

-T__88=88

-T__89=89

-T__90=90

-T__91=91

-T__92=92

-T__93=93

-T__94=94

-T__95=95

-T__96=96

-T__97=97

-T__98=98

-T__99=99

+'&&'=102
+'('=42
+')'=44
+'*'=65
+'+'=67
+'++'=91
+','=43
+'-'=64
+'->'=74
+'.'=73
+'..'=90
+'/'=66
+':'=41
+'::'=40
+';'=16
+'<'=69
+'<='=71
+'<>'=72
+'='=47
+'=>'=49
+'>'=68
+'>='=70
+'?'=101
+'?->'=76
+'?.'=75
+'@'=96
+'Bag'=86
+'Boolean'=77
+'Collection'=88
+'Integer'=78
+'Lambda'=38
+'OclAny'=82
+'OclInvalid'=83
+'OclVoid'=84
+'OrderedSet'=89
+'Real'=79
+'Sequence'=87
+'Set'=85
+'String'=80
+'Tuple'=39
+'UnlimitedNatural'=81
+'['=97
+']'=98
+'and'=53
+'annotation'=17
+'body'=51
+'coercion'=48
+'conformsTo'=18
+'documentation'=19
+'else'=54
+'elseif'=99
+'endif'=55
+'extends'=20
+'false'=93
+'if'=56
+'implies'=57
+'import'=21
+'in'=58
+'inv'=22
+'invalid'=94
+'invalidating'=23
+'iteration'=24
+'left'=25
+'let'=59
+'library'=26
+'not'=60
+'null'=95
+'operation'=27
+'or'=61
+'package'=28
+'post'=29
+'pre'=30
+'precedence'=31
+'property'=32
+'right'=33
+'self'=100
+'static'=34
+'super'=35
+'then'=62
+'true'=92
+'type'=36
+'typeof'=52
+'validating'=37
+'xor'=63
+'{'=45
+'|'=50
+'}'=46
+RULE_ANY_OTHER=15
+RULE_DOUBLE_QUOTED_STRING=4
+RULE_ESCAPED_CHARACTER=10
+RULE_ESCAPED_ID=8
+RULE_INT=9
+RULE_LETTER_CHARACTER=11
+RULE_ML_COMMENT=12
+RULE_ML_SINGLE_QUOTED_STRING=6
+RULE_SIMPLE_ID=7
+RULE_SINGLE_QUOTED_STRING=5
+RULE_SL_COMMENT=13
+RULE_WS=14
+T__100=100
+T__101=101
+T__102=102
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/serializer/AbstractOCLstdlibSemanticSequencer.java b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/serializer/AbstractOCLstdlibSemanticSequencer.java
index 64a24a4..79cdbaf 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/serializer/AbstractOCLstdlibSemanticSequencer.java
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/serializer/AbstractOCLstdlibSemanticSequencer.java
@@ -1,3 +1,6 @@
+/*
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclstdlib.serializer;
 
 import com.google.inject.Inject;
@@ -83,28 +86,18 @@
 	@Inject
 	private OCLstdlibGrammarAccess grammarAccess;
 	
+	@Override
 	public void createSequence(EObject context, EObject semanticObject) {
 		if(semanticObject.eClass().getEPackage() == BaseCSPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
 			case BaseCSPackage.ANNOTATION_CS:
-				if(context == grammarAccess.getAnnotationCSRule() ||
-				   context == grammarAccess.getAnnotationElementCSRule()) {
-					sequence_AnnotationCS(context, (AnnotationCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_AnnotationCS(context, (AnnotationCS) semanticObject); 
+				return; 
 			case BaseCSPackage.DETAIL_CS:
-				if(context == grammarAccess.getDetailCSRule()) {
-					sequence_DetailCS(context, (DetailCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_DetailCS(context, (DetailCS) semanticObject); 
+				return; 
 			case BaseCSPackage.DOCUMENTATION_CS:
-				if(context == grammarAccess.getAnnotationElementCSRule() ||
-				   context == grammarAccess.getDocumentationCSRule()) {
-					sequence_DocumentationCS(context, (DocumentationCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_DocumentationCS(context, (DocumentationCS) semanticObject); 
+				return; 
 			case BaseCSPackage.LAMBDA_TYPE_CS:
 				if(context == grammarAccess.getLambdaTypeCSRule() ||
 				   context == grammarAccess.getTypeRefCSRule() ||
@@ -118,31 +111,17 @@
 				}
 				else break;
 			case BaseCSPackage.LIBRARY_CS:
-				if(context == grammarAccess.getLibraryCSRule()) {
-					sequence_LibraryCS(context, (LibraryCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LibraryCS(context, (LibraryCS) semanticObject); 
+				return; 
 			case BaseCSPackage.MULTIPLICITY_BOUNDS_CS:
-				if(context == grammarAccess.getMultiplicityBoundsCSRule() ||
-				   context == grammarAccess.getMultiplicityCSRule()) {
-					sequence_MultiplicityBoundsCS(context, (MultiplicityBoundsCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_MultiplicityBoundsCS(context, (MultiplicityBoundsCS) semanticObject); 
+				return; 
 			case BaseCSPackage.MULTIPLICITY_STRING_CS:
-				if(context == grammarAccess.getMultiplicityCSRule() ||
-				   context == grammarAccess.getMultiplicityStringCSRule()) {
-					sequence_MultiplicityStringCS(context, (MultiplicityStringCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_MultiplicityStringCS(context, (MultiplicityStringCS) semanticObject); 
+				return; 
 			case BaseCSPackage.PACKAGE_CS:
-				if(context == grammarAccess.getPackageCSRule()) {
-					sequence_PackageCS(context, (PackageCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PackageCS(context, (PackageCS) semanticObject); 
+				return; 
 			case BaseCSPackage.PARAMETER_CS:
 				if(context == grammarAccess.getAccumulatorCSRule()) {
 					sequence_AccumulatorCS(context, (ParameterCS) semanticObject); 
@@ -176,11 +155,8 @@
 				}
 				else break;
 			case BaseCSPackage.PATH_ELEMENT_WITH_URICS:
-				if(context == grammarAccess.getURIFirstPathElementCSRule()) {
-					sequence_URIFirstPathElementCS(context, (PathElementWithURICS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_URIFirstPathElementCS(context, (PathElementWithURICS) semanticObject); 
+				return; 
 			case BaseCSPackage.PATH_NAME_CS:
 				if(context == grammarAccess.getLibPathNameCSRule()) {
 					sequence_LibPathNameCS(context, (PathNameCS) semanticObject); 
@@ -211,29 +187,17 @@
 				}
 				else break;
 			case BaseCSPackage.TEMPLATE_BINDING_CS:
-				if(context == grammarAccess.getTemplateBindingCSRule()) {
-					sequence_TemplateBindingCS(context, (TemplateBindingCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateBindingCS(context, (TemplateBindingCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TEMPLATE_PARAMETER_SUBSTITUTION_CS:
-				if(context == grammarAccess.getTemplateParameterSubstitutionCSRule()) {
-					sequence_TemplateParameterSubstitutionCS(context, (TemplateParameterSubstitutionCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateParameterSubstitutionCS(context, (TemplateParameterSubstitutionCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TEMPLATE_SIGNATURE_CS:
-				if(context == grammarAccess.getTemplateSignatureCSRule()) {
-					sequence_TemplateSignatureCS(context, (TemplateSignatureCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TemplateSignatureCS(context, (TemplateSignatureCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TUPLE_PART_CS:
-				if(context == grammarAccess.getTuplePartCSRule()) {
-					sequence_TuplePartCS(context, (TuplePartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TuplePartCS(context, (TuplePartCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TUPLE_TYPE_CS:
 				if(context == grammarAccess.getTupleTypeCSRule() ||
 				   context == grammarAccess.getTypeLiteralCSRule() ||
@@ -256,11 +220,8 @@
 				}
 				else break;
 			case BaseCSPackage.TYPE_PARAMETER_CS:
-				if(context == grammarAccess.getTypeParameterCSRule()) {
-					sequence_TypeParameterCS(context, (TypeParameterCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TypeParameterCS(context, (TypeParameterCS) semanticObject); 
+				return; 
 			case BaseCSPackage.TYPED_TYPE_REF_CS:
 				if(context == grammarAccess.getLambdaContextTypeRefCSRule()) {
 					sequence_LambdaContextTypeRefCS(context, (TypedTypeRefCS) semanticObject); 
@@ -278,43 +239,19 @@
 				}
 				else break;
 			case BaseCSPackage.WILDCARD_TYPE_REF_CS:
-				if(context == grammarAccess.getTypeRefCSRule() ||
-				   context == grammarAccess.getWildcardTypeRefCSRule()) {
-					sequence_WildcardTypeRefCS(context, (WildcardTypeRefCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_WildcardTypeRefCS(context, (WildcardTypeRefCS) semanticObject); 
+				return; 
 			}
 		else if(semanticObject.eClass().getEPackage() == EssentialOCLCSPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
 			case EssentialOCLCSPackage.BOOLEAN_LITERAL_EXP_CS:
-				if(context == grammarAccess.getBooleanLiteralExpCSRule() ||
-				   context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_BooleanLiteralExpCS(context, (BooleanLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_BooleanLiteralExpCS(context, (BooleanLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.COLLECTION_LITERAL_EXP_CS:
-				if(context == grammarAccess.getCollectionLiteralExpCSRule() ||
-				   context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_CollectionLiteralExpCS(context, (CollectionLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CollectionLiteralExpCS(context, (CollectionLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.COLLECTION_LITERAL_PART_CS:
-				if(context == grammarAccess.getCollectionLiteralPartCSRule()) {
-					sequence_CollectionLiteralPartCS(context, (CollectionLiteralPartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CollectionLiteralPartCS(context, (CollectionLiteralPartCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.COLLECTION_PATTERN_CS:
 				if(context == grammarAccess.getCollectionPatternCSRule()) {
 					sequence_CollectionPatternCS(context, (CollectionPatternCS) semanticObject); 
@@ -341,102 +278,41 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.CONSTRUCTOR_PART_CS:
-				if(context == grammarAccess.getConstructorPartCSRule()) {
-					sequence_ConstructorPartCS(context, (ConstructorPartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ConstructorPartCS(context, (ConstructorPartCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.CONTEXT_CS:
-				if(context == grammarAccess.getModelRule()) {
-					sequence_Model(context, (ContextCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_Model(context, (ContextCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.CURLY_BRACKETED_CLAUSE_CS:
-				if(context == grammarAccess.getCurlyBracketedClauseCSRule()) {
-					sequence_CurlyBracketedClauseCS(context, (CurlyBracketedClauseCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CurlyBracketedClauseCS(context, (CurlyBracketedClauseCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.EXP_SPECIFICATION_CS:
-				if(context == grammarAccess.getSpecificationCSRule()) {
-					sequence_SpecificationCS(context, (ExpSpecificationCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_SpecificationCS(context, (ExpSpecificationCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.IF_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getIfExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_IfExpCS(context, (IfExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_IfExpCS(context, (IfExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.IF_THEN_EXP_CS:
-				if(context == grammarAccess.getElseIfThenExpCSRule()) {
-					sequence_ElseIfThenExpCS(context, (IfThenExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ElseIfThenExpCS(context, (IfThenExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.INFIX_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule()) {
-					sequence_ExpCS(context, (InfixExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ExpCS(context, (InfixExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.INVALID_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getInvalidLiteralExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_InvalidLiteralExpCS(context, (InvalidLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_InvalidLiteralExpCS(context, (InvalidLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.LAMBDA_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getLambdaLiteralExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_LambdaLiteralExpCS(context, (LambdaLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LambdaLiteralExpCS(context, (LambdaLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.LET_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getLetExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedLetExpCSRule()) {
-					sequence_LetExpCS(context, (LetExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LetExpCS(context, (LetExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.LET_VARIABLE_CS:
-				if(context == grammarAccess.getLetVariableCSRule()) {
-					sequence_LetVariableCS(context, (LetVariableCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LetVariableCS(context, (LetVariableCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NAME_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNameExpCSRule() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_NameExpCS(context, (NameExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NameExpCS(context, (NameExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NAVIGATING_ARG_CS:
 				if(context == grammarAccess.getNavigatingArgCSRule()) {
 					sequence_NavigatingArgCS(context, (NavigatingArgCS) semanticObject); 
@@ -456,46 +332,17 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.NESTED_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getNestedExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule()) {
-					sequence_NestedExpCS(context, (NestedExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NestedExpCS(context, (NestedExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NULL_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getNullLiteralExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_NullLiteralExpCS(context, (NullLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NullLiteralExpCS(context, (NullLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.NUMBER_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getNumberLiteralExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule()) {
-					sequence_NumberLiteralExpCS(context, (NumberLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_NumberLiteralExpCS(context, (NumberLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.PATTERN_EXP_CS:
-				if(context == grammarAccess.getPatternExpCSRule()) {
-					sequence_PatternExpCS(context, (PatternExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PatternExpCS(context, (PatternExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.PREFIX_EXP_CS:
 				if(context == grammarAccess.getPrefixedLetExpCSRule()) {
 					sequence_PrefixedLetExpCS(context, (PrefixExpCS) semanticObject); 
@@ -513,68 +360,26 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.ROUND_BRACKETED_CLAUSE_CS:
-				if(context == grammarAccess.getRoundBracketedClauseCSRule()) {
-					sequence_RoundBracketedClauseCS(context, (RoundBracketedClauseCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_RoundBracketedClauseCS(context, (RoundBracketedClauseCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.SELF_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getSelfExpCSRule()) {
-					sequence_SelfExpCS(context, (SelfExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_SelfExpCS(context, (SelfExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.SQUARE_BRACKETED_CLAUSE_CS:
-				if(context == grammarAccess.getSquareBracketedClauseCSRule()) {
-					sequence_SquareBracketedClauseCS(context, (SquareBracketedClauseCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_SquareBracketedClauseCS(context, (SquareBracketedClauseCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.STRING_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule() ||
-				   context == grammarAccess.getStringLiteralExpCSRule()) {
-					sequence_StringLiteralExpCS(context, (StringLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_StringLiteralExpCS(context, (StringLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TUPLE_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getTupleLiteralExpCSRule()) {
-					sequence_TupleLiteralExpCS(context, (TupleLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TupleLiteralExpCS(context, (TupleLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TUPLE_LITERAL_PART_CS:
-				if(context == grammarAccess.getTupleLiteralPartCSRule()) {
-					sequence_TupleLiteralPartCS(context, (TupleLiteralPartCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TupleLiteralPartCS(context, (TupleLiteralPartCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TYPE_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getTypeLiteralExpCSRule()) {
-					sequence_TypeLiteralExpCS(context, (TypeLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_TypeLiteralExpCS(context, (TypeLiteralExpCS) semanticObject); 
+				return; 
 			case EssentialOCLCSPackage.TYPE_NAME_EXP_CS:
 				if(context == grammarAccess.getTypeExpCSRule()) {
 					sequence_TypeExpCS_TypeNameExpCS(context, (TypeNameExpCS) semanticObject); 
@@ -586,33 +391,16 @@
 				}
 				else break;
 			case EssentialOCLCSPackage.UNLIMITED_NATURAL_LITERAL_EXP_CS:
-				if(context == grammarAccess.getExpCSRule() ||
-				   context == grammarAccess.getExpCSAccess().getInfixExpCSOwnedLeftAction_0_1_0() ||
-				   context == grammarAccess.getNavigatingArgExpCSRule() ||
-				   context == grammarAccess.getPrefixedPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimaryExpCSRule() ||
-				   context == grammarAccess.getPrimitiveLiteralExpCSRule() ||
-				   context == grammarAccess.getUnlimitedNaturalLiteralExpCSRule()) {
-					sequence_UnlimitedNaturalLiteralExpCS(context, (UnlimitedNaturalLiteralExpCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_UnlimitedNaturalLiteralExpCS(context, (UnlimitedNaturalLiteralExpCS) semanticObject); 
+				return; 
 			}
 		else if(semanticObject.eClass().getEPackage() == OCLstdlibCSPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
 			case OCLstdlibCSPackage.LIB_CLASS_CS:
-				if(context == grammarAccess.getClassCSRule() ||
-				   context == grammarAccess.getLibClassCSRule()) {
-					sequence_LibClassCS(context, (LibClassCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LibClassCS(context, (LibClassCS) semanticObject); 
+				return; 
 			case OCLstdlibCSPackage.LIB_COERCION_CS:
-				if(context == grammarAccess.getLibCoercionCSRule() ||
-				   context == grammarAccess.getOperationCSRule()) {
-					sequence_LibCoercionCS(context, (LibCoercionCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LibCoercionCS(context, (LibCoercionCS) semanticObject); 
+				return; 
 			case OCLstdlibCSPackage.LIB_CONSTRAINT_CS:
 				if(context == grammarAccess.getInvCSRule()) {
 					sequence_InvCS(context, (LibConstraintCS) semanticObject); 
@@ -628,43 +416,23 @@
 				}
 				else break;
 			case OCLstdlibCSPackage.LIB_ITERATION_CS:
-				if(context == grammarAccess.getLibIterationCSRule() ||
-				   context == grammarAccess.getOperationCSRule()) {
-					sequence_LibIterationCS(context, (LibIterationCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LibIterationCS(context, (LibIterationCS) semanticObject); 
+				return; 
 			case OCLstdlibCSPackage.LIB_OPERATION_CS:
-				if(context == grammarAccess.getLibOperationCSRule() ||
-				   context == grammarAccess.getOperationCSRule()) {
-					sequence_LibOperationCS(context, (LibOperationCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LibOperationCS(context, (LibOperationCS) semanticObject); 
+				return; 
 			case OCLstdlibCSPackage.LIB_PACKAGE_CS:
-				if(context == grammarAccess.getLibPackageCSRule()) {
-					sequence_LibPackageCS(context, (LibPackageCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LibPackageCS(context, (LibPackageCS) semanticObject); 
+				return; 
 			case OCLstdlibCSPackage.LIB_PROPERTY_CS:
-				if(context == grammarAccess.getLibPropertyCSRule()) {
-					sequence_LibPropertyCS(context, (LibPropertyCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_LibPropertyCS(context, (LibPropertyCS) semanticObject); 
+				return; 
 			case OCLstdlibCSPackage.LIB_ROOT_PACKAGE_CS:
-				if(context == grammarAccess.getLibraryRule()) {
-					sequence_Library(context, (LibRootPackageCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_Library(context, (LibRootPackageCS) semanticObject); 
+				return; 
 			case OCLstdlibCSPackage.PRECEDENCE_CS:
-				if(context == grammarAccess.getPrecedenceCSRule()) {
-					sequence_PrecedenceCS(context, (PrecedenceCS) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PrecedenceCS(context, (PrecedenceCS) semanticObject); 
+				return; 
 			}
 		if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
 	}
diff --git a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/serializer/AbstractOCLstdlibSyntacticSequencer.java b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/serializer/AbstractOCLstdlibSyntacticSequencer.java
index c4ad035..fa7247d 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/serializer/AbstractOCLstdlibSyntacticSequencer.java
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/serializer/AbstractOCLstdlibSyntacticSequencer.java
@@ -1,3 +1,6 @@
+/*
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclstdlib.serializer;
 
 import com.google.inject.Inject;
@@ -80,56 +83,95 @@
 	}
 
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';' | ('{' '}')
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     implementation=[JavaClassCS|SINGLE_QUOTED_STRING] (ambiguity) (rule end)
+	 *     ownedType=TypedMultiplicityRefCS (ambiguity) (rule end)
 	 */
 	protected void emit_LibCoercionCS_SemicolonKeyword_7_1_or___LeftCurlyBracketKeyword_7_0_0_RightCurlyBracketKeyword_7_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';' | ('{' '}')
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     implementation=[JavaClassCS|SINGLE_QUOTED_STRING] (ambiguity) (rule end)
+	 *     isInvalidating?='invalidating' (ambiguity) (rule end)
+	 *     isValidating?='validating' (ambiguity) (rule end)
+	 *     ownedType=TypedMultiplicityRefCS (ambiguity) (rule end)
 	 */
 	protected void emit_LibIterationCS_SemicolonKeyword_14_1_or___LeftCurlyBracketKeyword_14_0_0_RightCurlyBracketKeyword_14_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';' | ('{' '}')
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     implementation=[JavaClassCS|SINGLE_QUOTED_STRING] (ambiguity) (rule end)
+	 *     isInvalidating?='invalidating' (ambiguity) (rule end)
+	 *     isValidating?='validating' (ambiguity) (rule end)
+	 *     ownedType=TypedMultiplicityRefCS (ambiguity) (rule end)
+	 *     precedence=[Precedence|Name] (ambiguity) (rule end)
 	 */
 	protected void emit_LibOperationCS_SemicolonKeyword_13_1_or___LeftCurlyBracketKeyword_13_0_0_RightCurlyBracketKeyword_13_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     UnrestrictedName?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     implementation=[JavaClassCS|SINGLE_QUOTED_STRING] '{' 'body' (ambiguity) ':' ownedBodyExpressions+=SpecificationCS
+	 *     isInvalidating?='invalidating' '{' 'body' (ambiguity) ':' ownedBodyExpressions+=SpecificationCS
+	 *     isValidating?='validating' '{' 'body' (ambiguity) ':' ownedBodyExpressions+=SpecificationCS
+	 *     ownedAnnotations+=AnnotationElementCS 'body' (ambiguity) ':' ownedBodyExpressions+=SpecificationCS
+	 *     ownedBodyExpressions+=SpecificationCS ';' 'body' (ambiguity) ':' ownedBodyExpressions+=SpecificationCS
+	 *     ownedPostconditions+=PostCS 'body' (ambiguity) ':' ownedBodyExpressions+=SpecificationCS
+	 *     ownedPreconditions+=PreCS 'body' (ambiguity) ':' ownedBodyExpressions+=SpecificationCS
+	 *     ownedType=TypedMultiplicityRefCS '{' 'body' (ambiguity) ':' ownedBodyExpressions+=SpecificationCS
+	 *     precedence=[Precedence|Name] '{' 'body' (ambiguity) ':' ownedBodyExpressions+=SpecificationCS
 	 */
 	protected void emit_LibOperationCS_UnrestrictedNameParserRuleCall_13_0_1_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     (';' 'precedence')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     ownedPrecedences+=PrecedenceCS (ambiguity) ownedPrecedences+=PrecedenceCS
 	 */
 	protected void emit_LibPackageCS___SemicolonKeyword_4_1_2_PrecedenceKeyword_4_1_0__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';' | ('{' '}')
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     implementation=[JavaClassCS|SINGLE_QUOTED_STRING] (ambiguity) (rule end)
+	 *     ownedType=TypedMultiplicityRefCS (ambiguity) (rule end)
 	 */
 	protected void emit_LibPropertyCS_SemicolonKeyword_6_1_or___LeftCurlyBracketKeyword_6_0_0_RightCurlyBracketKeyword_6_0_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('(' ')')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name='Tuple' (ambiguity) (rule end)
+	 *     name='Tuple' (ambiguity) ownedMultiplicity=MultiplicityCS
 	 */
 	protected void emit_TupleTypeCS___LeftParenthesisKeyword_1_0_RightParenthesisKeyword_1_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
diff --git a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/services/OCLstdlibGrammarAccess.java b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/services/OCLstdlibGrammarAccess.java
index 9cf8aaf..5d04c07 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/services/OCLstdlibGrammarAccess.java
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/services/OCLstdlibGrammarAccess.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclstdlib.services;
 
 import com.google.inject.Singleton;
@@ -33,8 +33,7 @@
 		// Library returns
 		//LibRootPackageCS:
 		//	(ownedLibraries+=LibraryCS ";")* ownedPackages+=LibPackageCS*;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//(ownedLibraries+=LibraryCS ";")* ownedPackages+=LibPackageCS*
 		public Group getGroup() { return cGroup; }
@@ -66,8 +65,7 @@
 		
 		//Identifier:
 		//	ID | RestrictedKeywords;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ID | RestrictedKeywords
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -111,8 +109,7 @@
 		// | "conformsTo" | "documentation" | "extends" | "import" | "inv" | "invalidating" |
 		//	"iteration" | "left" | "library" | "operation" | "package" | "post" | "pre" | "precedence" | "property" | "right" |
 		//	"static" | "super" | "type" | "validating";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"annotation" //|	'typeof'
 		// | "conformsTo" | "documentation" | "extends" | "import" | "inv" | "invalidating" |
@@ -195,8 +192,7 @@
 		
 		//Name:
 		//	Identifier | DOUBLE_QUOTED_STRING | EssentialOCLReservedKeyword | PrimitiveTypeIdentifier | CollectionTypeIdentifier;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//Identifier | DOUBLE_QUOTED_STRING | EssentialOCLReservedKeyword | PrimitiveTypeIdentifier | CollectionTypeIdentifier
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -226,8 +222,7 @@
 		
 		//AnyName:
 		//	Name | "Lambda" | "Tuple";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//Name | "Lambda" | "Tuple"
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -254,8 +249,7 @@
 		
 		//LibPathNameCS returns base::PathNameCS:
 		//	ownedPathElements+=LibPathElementCS ("::" ownedPathElements+=LibPathElementCS)*;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedPathElements+=LibPathElementCS ("::" ownedPathElements+=LibPathElementCS)*
 		public Group getGroup() { return cGroup; }
@@ -287,8 +281,7 @@
 		
 		//LibPathElementCS returns base::PathElementCS:
 		//	referredElement=[pivot::NamedElement|Name];
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//referredElement=[pivot::NamedElement|Name]
 		public Assignment getReferredElementAssignment() { return cReferredElementAssignment; }
@@ -311,8 +304,7 @@
 		
 		//AccumulatorCS returns base::ParameterCS:
 		//	name=Identifier ":" ownedType=TypedMultiplicityRefCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name=Identifier ":" ownedType=TypedMultiplicityRefCS
 		public Group getGroup() { return cGroup; }
@@ -361,8 +353,7 @@
 		//AnnotationCS returns base::AnnotationCS:
 		//	"annotation" name=(Identifier | SINGLE_QUOTED_STRING) ("(" ownedDetails+=DetailCS ("," ownedDetails+=DetailCS)* ")")?
 		//	("{" ownedAnnotations+=AnnotationElementCS "}" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"annotation" name=(Identifier | SINGLE_QUOTED_STRING) ("(" ownedDetails+=DetailCS ("," ownedDetails+=DetailCS)* ")")?
 		//("{" ownedAnnotations+=AnnotationElementCS "}" | ";")
@@ -440,8 +431,7 @@
 		
 		//AnnotationElementCS returns base::AnnotationElementCS:
 		//	AnnotationCS | DocumentationCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//AnnotationCS | DocumentationCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -490,8 +480,7 @@
 		//	"type" name=AnyName ownedSignature=TemplateSignatureCS? (":" metaclassName=[MetaclassNameCS|AnyName])? ("conformsTo"
 		//	ownedSuperTypes+=TypedRefCS ("," ownedSuperTypes+=TypedRefCS)*)? "{" (ownedOperations+=OperationCS |
 		//	ownedProperties+=LibPropertyCS | ownedConstraints+=InvCS | ownedAnnotations+=AnnotationElementCS)* "}";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"type" name=AnyName ownedSignature=TemplateSignatureCS? (":" metaclassName=[MetaclassNameCS|AnyName])? ("conformsTo"
 		//ownedSuperTypes+=TypedRefCS ("," ownedSuperTypes+=TypedRefCS)*)? "{" (ownedOperations+=OperationCS |
@@ -593,8 +582,7 @@
 		
 		//ClassCS returns base::ClassCS:
 		//	LibClassCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//LibClassCS
 		public RuleCall getLibClassCSParserRuleCall() { return cLibClassCSParserRuleCall; }
@@ -615,8 +603,7 @@
 		
 		//DetailCS returns base::DetailCS:
 		//	name=(Name | SINGLE_QUOTED_STRING) "=" values+=(SINGLE_QUOTED_STRING | ML_SINGLE_QUOTED_STRING)*;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name=(Name | SINGLE_QUOTED_STRING) "=" values+=(SINGLE_QUOTED_STRING | ML_SINGLE_QUOTED_STRING)*
 		public Group getGroup() { return cGroup; }
@@ -670,8 +657,7 @@
 		//DocumentationCS returns base::DocumentationCS:
 		//	{base::DocumentationCS} "documentation" value=SINGLE_QUOTED_STRING? ("(" ownedDetails+=DetailCS (","
 		//	ownedDetails+=DetailCS)* ")")? ";";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//{base::DocumentationCS} "documentation" value=SINGLE_QUOTED_STRING? ("(" ownedDetails+=DetailCS (","
 		//ownedDetails+=DetailCS)* ")")? ";"
@@ -741,8 +727,7 @@
 		//InvCS returns LibConstraintCS:
 		//	stereotype="inv" (name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS ")")?)? ":"
 		//	ownedSpecification=SpecificationCS ";";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//stereotype="inv" (name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS ")")?)? ":"
 		//ownedSpecification=SpecificationCS ";"
@@ -824,8 +809,7 @@
 		//	"coercion" name=Name "(" ")" ":" ownedType=TypedMultiplicityRefCS ("=>"
 		//	implementation=[JavaClassCS|SINGLE_QUOTED_STRING])? ("{" (ownedAnnotations+=AnnotationElementCS |
 		//	ownedPreconditions+=PostCS | ownedPostconditions+=PreCS)* "}" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"coercion" name=Name "(" ")" ":" ownedType=TypedMultiplicityRefCS ("=>"
 		//implementation=[JavaClassCS|SINGLE_QUOTED_STRING])? ("{" (ownedAnnotations+=AnnotationElementCS |
@@ -971,8 +955,7 @@
 		//	ownedParameters+=ParameterCS ("," ownedParameters+=ParameterCS)*)? ")" ":" ownedType=TypedMultiplicityRefCS
 		//	isInvalidating?="invalidating"? isValidating?="validating"? ("=>" implementation=[JavaClassCS|SINGLE_QUOTED_STRING])?
 		//	("{" (ownedAnnotations+=AnnotationElementCS | ownedPreconditions+=PostCS | ownedPostconditions+=PreCS)* "}" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"iteration" name=Name ownedSignature=TemplateSignatureCS? "(" ownedIterators+=IteratorCS (","
 		//ownedIterators+=IteratorCS)* (";" ownedAccumulators+=AccumulatorCS ("," ownedAccumulators+=AccumulatorCS)*)? ("|"
@@ -1152,8 +1135,7 @@
 		
 		//IteratorCS returns base::ParameterCS:
 		//	name=Identifier ":" ownedType=TypedMultiplicityRefCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name=Identifier ":" ownedType=TypedMultiplicityRefCS
 		public Group getGroup() { return cGroup; }
@@ -1200,8 +1182,7 @@
 		//	name="Lambda" ownedSignature=TemplateSignatureCS? ownedContextType=LambdaContextTypeRefCS "("
 		//	(ownedParameterTypes+=TypedMultiplicityRefCS ("," ownedParameterTypes+=TypedMultiplicityRefCS)*)? ")" ":"
 		//	ownedResultType=TypedRefCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name="Lambda" ownedSignature=TemplateSignatureCS? ownedContextType=LambdaContextTypeRefCS "("
 		//(ownedParameterTypes+=TypedMultiplicityRefCS ("," ownedParameterTypes+=TypedMultiplicityRefCS)*)? ")" ":"
@@ -1270,8 +1251,7 @@
 		
 		//LambdaContextTypeRefCS returns base::TypedTypeRefCS:
 		//	ownedPathName=LibPathNameCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedPathName=LibPathNameCS
 		public Assignment getOwnedPathNameAssignment() { return cOwnedPathNameAssignment; }
@@ -1290,8 +1270,7 @@
 		
 		//LibraryCS returns base::LibraryCS:
 		//	"import" referredPackage=[pivot::Package|URI];
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"import" referredPackage=[pivot::Package|URI]
 		public Group getGroup() { return cGroup; }
@@ -1318,8 +1297,7 @@
 		
 		//OperationCS returns base::OperationCS:
 		//	LibCoercionCS | LibIterationCS | LibOperationCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//LibCoercionCS | LibIterationCS | LibOperationCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -1398,8 +1376,7 @@
 		//	implementation=[JavaClassCS|SINGLE_QUOTED_STRING])? ("{" (ownedAnnotations+=AnnotationElementCS | "body"
 		//	UnrestrictedName? ":" ownedBodyExpressions+=SpecificationCS ";" | ownedPostconditions+=PostCS |
 		//	ownedPreconditions+=PreCS)* "}" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//isStatic?="static"? "operation" name=Name ownedSignature=TemplateSignatureCS? "(" (ownedParameters+=ParameterCS (","
 		//ownedParameters+=ParameterCS)*)? ")" ":" ownedType=TypedMultiplicityRefCS isValidating?="validating"?
@@ -1603,8 +1580,7 @@
 		//LibPackageCS:
 		//	"library" name=Name (":" nsPrefix=Identifier "=" nsURI=URI)? "{" (ownedPackages+=PackageCS | "precedence"
 		//	ownedPrecedences+=PrecedenceCS+ ";" | ownedClasses+=ClassCS | ownedAnnotations+=AnnotationElementCS)* "}";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"library" name=Name (":" nsPrefix=Identifier "=" nsURI=URI)? "{" (ownedPackages+=PackageCS | "precedence"
 		//ownedPrecedences+=PrecedenceCS+ ";" | ownedClasses+=ClassCS | ownedAnnotations+=AnnotationElementCS)* "}"
@@ -1710,8 +1686,7 @@
 		//PackageCS returns base::PackageCS:
 		//	"package" name=Name (":" nsPrefix=Identifier "=" nsURI=URI)? "{" (ownedPackages+=PackageCS | ownedClasses+=ClassCS |
 		//	ownedAnnotations+=AnnotationElementCS)* "}";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//"package" name=Name (":" nsPrefix=Identifier "=" nsURI=URI)? "{" (ownedPackages+=PackageCS | ownedClasses+=ClassCS |
 		//ownedAnnotations+=AnnotationElementCS)* "}"
@@ -1786,8 +1761,7 @@
 		
 		//ParameterCS returns base::ParameterCS:
 		//	name=Identifier ":" ownedType=TypedMultiplicityRefCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name=Identifier ":" ownedType=TypedMultiplicityRefCS
 		public Group getGroup() { return cGroup; }
@@ -1835,8 +1809,7 @@
 		//LibPropertyCS:
 		//	isStatic?="static"? "property" name=Name ":" ownedType=TypedMultiplicityRefCS ("=>"
 		//	implementation=[JavaClassCS|SINGLE_QUOTED_STRING])? ("{" ownedAnnotations+=AnnotationElementCS* "}" | ";");
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//isStatic?="static"? "property" name=Name ":" ownedType=TypedMultiplicityRefCS ("=>"
 		//implementation=[JavaClassCS|SINGLE_QUOTED_STRING])? ("{" ownedAnnotations+=AnnotationElementCS* "}" | ";")
@@ -1924,8 +1897,7 @@
 		//PostCS returns LibConstraintCS:
 		//	stereotype="post" (name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS ")")?)? ":"
 		//	ownedSpecification=SpecificationCS ";";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//stereotype="post" (name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS ")")?)? ":"
 		//ownedSpecification=SpecificationCS ";"
@@ -1995,8 +1967,7 @@
 		//PreCS returns LibConstraintCS:
 		//	stereotype="pre" (name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS ")")?)? ":"
 		//	ownedSpecification=SpecificationCS ";";
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//stereotype="pre" (name=UnrestrictedName ("(" ownedMessageSpecification=SpecificationCS ")")?)? ":"
 		//ownedSpecification=SpecificationCS ";"
@@ -2058,8 +2029,7 @@
 		
 		//PrecedenceCS:
 		//	("left" | isRightAssociative?="right") ":" name=Name;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//("left" | isRightAssociative?="right") ":" name=Name
 		public Group getGroup() { return cGroup; }
@@ -2093,8 +2063,7 @@
 		
 		//SpecificationCS returns essentialocl::ExpSpecificationCS:
 		//	ownedExpression=ExpCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//ownedExpression=ExpCS
 		public Assignment getOwnedExpressionAssignment() { return cOwnedExpressionAssignment; }
@@ -2115,8 +2084,7 @@
 		
 		//TypedMultiplicityRefCS returns base::TypedRefCS:
 		//	(TupleTypeCS | TypedTypeRefCS | LambdaTypeCS) ownedMultiplicity=MultiplicityCS?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//(TupleTypeCS | TypedTypeRefCS | LambdaTypeCS) ownedMultiplicity=MultiplicityCS?
 		public Group getGroup() { return cGroup; }
@@ -2154,8 +2122,7 @@
 		// TypedRefCS returns
 		//base::TypedRefCS:
 		//	TupleTypeCS | TypedTypeRefCS | LambdaTypeCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//TupleTypeCS | TypedTypeRefCS | LambdaTypeCS
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -2188,8 +2155,7 @@
 		
 		//TypedTypeRefCS returns base::TypedTypeRefCS:
 		//	isTypeof?="typeof" "(" ownedPathName=LibPathNameCS ")" | ownedPathName=LibPathNameCS ownedBinding=TemplateBindingCS?;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//isTypeof?="typeof" "(" ownedPathName=LibPathNameCS ")" | ownedPathName=LibPathNameCS ownedBinding=TemplateBindingCS?
 		public Alternatives getAlternatives() { return cAlternatives; }
@@ -2247,8 +2213,7 @@
 		// TuplePartCS returns
 		//base::TuplePartCS:
 		//	name=Identifier ":" ownedType=TypedMultiplicityRefCS;
-		@Override
-		public ParserRule getRule() { return rule; }
+		@Override public ParserRule getRule() { return rule; }
 
 		//name=Identifier ":" ownedType=TypedMultiplicityRefCS
 		public Group getGroup() { return cGroup; }
@@ -2368,7 +2333,6 @@
 		return grammar;
 	}
 	
-	
 	@Override
 	public Grammar getGrammar() {
 		return grammar;
diff --git a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/validation/AbstractOCLstdlibJavaValidator.java b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/validation/AbstractOCLstdlibJavaValidator.java
index 40dcad2..8ce0483 100644
--- a/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/validation/AbstractOCLstdlibJavaValidator.java
+++ b/plugins/org.eclipse.ocl.xtext.oclstdlib/src-gen/org/eclipse/ocl/xtext/oclstdlib/validation/AbstractOCLstdlibJavaValidator.java
@@ -1,6 +1,6 @@
 /*
-* generated by Xtext
-*/
+ * generated by Xtext
+ */
 package org.eclipse.ocl.xtext.oclstdlib.validation;
  
 import java.util.ArrayList;